差点以为又场切了一道绿题

题面在这里

解题思路

很好的数学题
相当于去年 S 第一题难度
所以为啥比赛介绍里写的是绿标啊qwq

subtask 1

暴力

subtask 2

显然,当 k\bmod 2=0 时,答案为 0 ,否则为 1
简单推理即可证明。

subtask 3

容易发现,题面的意思是告诉我们用完了 a_{u_i}a_{u_i-1} 就不能再用了。
所以相当于将相邻两个为 0 二进制位修改为 1
那么我们就得出了一个结论:将原数化为二进制后,相邻两个 1 必定是成对出现的。
直接模拟即可,时间复杂度 O(T\log x)
期望得分 70\text{pts} ,稍微卡卡能得满分。

subtask 4

我们发现原数除以 3 后,二进制下必定没有连续两个 1
我们将连续两个 1 除以 3 ,也就是二进制下的 11 时,只会两个 1 的后一位留下一个 1 ,而我们两个 1 是配对的,不可能在前面一位留下一个 1
我们将原数除以 3 ,然后判断即可。
时间复杂度 O(T) ,能稳过。

代码实现

其实出题组应该把实现放小点的。
但我感觉正解也只有黄的难度,到不了绿。
核心代码如下:

if(x>=1ll<<k-1){
    x-=(1ll<<k-1);
    if(x==0) pt
    if(x%3==0){
        long long x3=x/3;
        if((x3&(x3<<1))==0) pt
    }
}

经测试,在删去快读的情况下也能在 20\text{ms} 内通过第三个测试点。

1 个赞

66666666666666666666666666666666

2 个赞

不是,你们这回帖质量堪忧吖

呵呵呵呵呵呵呵呵呵呵呵

2 个赞

红红火火恍恍惚惚

2 个赞

不是,我们这回帖质量堪忧吖

1 个赞

不是,你这已读乱回吧

那我问你,那我问你

2 个赞

我错了qwq

???

!!!

不是啊

是的啊

@栗子酱 关贴

不是我好好的题解怎么被你们弄成水贴还关帖了啊啊啊,我的题解啊

你自己喜欢说反话吖

e这个思路……zlf太强了~

@张乐凡 那我关帖了(

别关啊啊啊

你把上面的那些水帖删了就行