codeforces 2025愚人节专场

前言:第一次打codeforces愚人节,有点高看我自己的脑袋了,不过还是挺好(红)玩(温)的
也不知道这种应该怎么写题解,就不放正确答案了,把可能的思考过程贴一下

A、Piecing It Together

这是唯一一个不需要动脑子的题目了,拼图拼出来是

print("puzzling")

所以输出这个单词就行了(不会有人连着print也输出了吧)

B、Plinko

去过电玩城的应该都知道这个机器,

我理解的是你要连续赢10轮,没看懂,交了一发发现查看提交的时候会把球下落的轨迹标出来,这就更不知道要怎么办了
但其实是不是球落到绿色区域就算赢了,机器会窄一些,所以可以从机器外面−1-11或者171717之外的地方丢下去,所以输出这些数就好了

C、Would It Be Unrated?

这个题就有点不讲理了,和输入没有任何关系,据说是因为没有人猜出来,官方提交了一发,而在有一个人通过后,错误的提交就会在查看提交的时候显示错误样例。。。

随便提交一发看一下输出就行了,但是在没人过的时候就纯猜

D、Where Am I?

不会,明明是过的人第二多的题但是看不懂,提交上去会告诉你一个距离多少,不知道是不是靠这个猜,而且好像和你的答案和结果距离的关系还不是线性的

E、Pair Count

额,点链接,然后跳转到一个猜单词的网站,然后猜出一个单词是MULTIPLY,是乘的意思,所以把异或符号换成乘号就完事了
一般怎么会有人去点那个链接的啊。。。而且之前点过题目中的链接,然后印象中是没有魔法还进不去那个网站。

F、⅓ оf а Рrоblеm

又是更无语的一个题了,如果你不认识俄语的话一定是用英语打开的,然后只看到乱七八糟的符号、数字,然后用俄文打开这个题,就可以发现题目变了,然后有的部分恰好是英语所没有的,这两个联系起来可以得到一个公式
12∗a+14∗a∗b+∣a−b∣+(a−3∗b)∗b+2 12 * a+14 * a * b + |a - b| + (a - 3 * b) * b + 2 12a+14ab+ab+(a3b)b+2
算就完了

G、Definitely a Geometry Problem

这个是不是除第一题最正常的题了,但是赛事根本没看这个题。

先排序,按照先x后y的顺序,然后枚举每组为距离为kkk的连续区间,圆的半径即为(x1−x2)2+(y1+y2)24×π\frac {(x_1-x_2)^2+(y_1+y_2)^2} 4 \times \pi4(x1x2)2+(y1+y2)2×π,取最小值即可

H、Blurry Vision

唯一一个赛时没有人过的题目了

答案👇

"CODEFORCES", "EYE", "TESTING", "SYSTEM", "APRIL", "FOOLS", "YOU", "READ", "POORLY", "GET", "EYEGLASSES"

从APRIL这个单词后面就完全看不到了,也不知道怎么办,看了俊杰老师的直播真就是一个一个猜,看到问题标签官方贴了一个快速傅里叶变换(fft),但是真想不到有什么联系。

L、Mysterious Script

输入两个数a和b,输出a+b

只不过a和b是经过加密后的字符串,输出也是加密后的字符串,首先可以找到一个规律,就是每个表示数字的字符串最后都有一个s,那么大胆的去把所有的字符串最后的s都去掉,通过题目中的表格可以看出来一部分数字

sha 表示 3
lesha 表示 12
shon 表示 5
te 表示 7
le 表示 1
lonshonletashashaleteshate 表示 998244358

经过上面的信息,12这种数是怎么表示的?lasha是由1和3拼接成的,也不等于12,大胆猜测一下有可能是十进制,1*9+3 = 12
然后可以通过题目中的样例推出剩余的数,然后写一个进制转换即可

void solve(){
    string s1,s2;cin>>s1>>s2;
    string a[9] = {
        "la",
        "le",
        "lon",
        "sha",
        "she",
        "shon",
        "ta",
        "te",
        "ton",
    };
    auto change = [&](string s) -> int {
        s = s.substr(0,s.size()-1);
        int res = 0;
        while(s.size()){
            for(int i = 0;i<9;i++){
                if(s.substr(0,a[i].size()) == a[i]){
                    s = s.substr(a[i].size());
                    res*=9;
                    res+=i;
                    break;
                }
            }
        }
        return res;
    };
    auto check = [&](int x) -> string {
        string res = "s";
        while(x){
            res = a[x%9]+res;
            x/=9;
        }
        return res;
    };
    cout<<check(change(s1)+change(s2));
}

J. Premiere at a Wrong Time

???????????????????????

我的发,这啥

看了一下别人的代码,考虑了一下可能的思路

先随便输入一个字符串再随便输出一个,肯定可以得到一个错误提交,然后可以发现第一个点输入了first,输出Nauuo and Votes
改一下,如果输入的是first,则输出Nauuo and Votes

赛后补题可以看到所有的测试样例,所以这时可以看到第二个样例,输入的second,输出的Nauuo and Chess,然后如果输入不是first的话输出这个字符串即可

但是赛时如果只能看到第一个样例的话真不知道怎么猜了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值