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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值