CRT简述+CodeforcesVC2016Div2

定理内容:
对于线性同余方程组:

xai(modmi)

其中模数两两互质。+
M=Πmi,Mi=Mmi tiMimod(mi)
它的通解为:
x=kM+aitiMi

然后……好像……就……没有……了……
没有了QAQ

为了防止被打还是老老实实写VC的div2的几道题解。
T1枚举矩形的左上角,长和宽,因为大小是10 * 10的,所以怎么都能过。
T2我们可以注意到它们的相对位置不变,我们可以直接把0踢掉,然后用b串看看能不能拼出a串。
T3
神题……么?
题意:
Two positive integers a and b have a sum of s and a bitwise XOR of x . How many possible values are there for the ordered pair (a,b) ?( s,x <= 1012 )
然后我发现我并不熟悉位运算那套理论。
然后我打开了题解。
加法:a + b = (a & b << 1) + (a ^ b)
然后忽然就会做了QAQ
我们可以用s求出a & b,然后如果a ^ b = 1的话,那么我们答案数量*2。
最后,如果s == x,那么显然答案要-2,因为0是不能算的。

#include <cstdio>
#include <cstring>
#include <algorithm>
#define Rep(i,n) for(int i = 1;i <= n;i ++)
using namespace std;
long long s,x;
int main ()
{
    scanf("%I64d%I64d",&s,&x);
    bool flag = 0;
    if(s == x)flag = 1;
    s -= x;
    if(s & 1)return puts("0"),0;
    s >>= 1;
    long long ans = 1;
    for(int i = 0;i < 60;i ++)
    {
        int k = s >> i & 1,j = x >> i & 1;
        if(k && j)return puts("0"),0;
        if(j)ans <<= 1;
    }
    if(flag)ans -= 2;
    printf("%I64d\n",ans);
    return 0;
}

T4.一开始读错题……
题意:有n天,每天如果机器不坏就生产a个,否则生产b个(蛋糕)。
蛋糕不能保存到下一天。
每次修理的时候连续k天都不能干活。
每天可能会收到订单。
你会在某时刻去修机器,在有前面所有订单的前提下,你到第n天能送出多少蛋糕。
也就是:
1.如果有需求,那么更新。
2.如果是修理,那么相当于一次询问。
这个东西用线段树很好解决吧,毕竟你考虑:
val[x][0]表示这个区间是坏的能最多送多少蛋糕。
val[x][1]表示这个区间是好的能送多少。
val[x][2]表示这个区间需求多少蛋糕。
最后直接统计一下就好了。

然后鼻炎就犯了QAQ
做不了题QAQ

你可能感兴趣的:(CRT简述+CodeforcesVC2016Div2)