码迷,mamicode.com
首页 > 其他好文 > 详细

第二周 3.6-3.12

时间:2016-03-06 15:50:44      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

3.6

CF 627 A XOR Equation

a + b = a ^ b + (a & b << 1)

注意非法情况和0。

技术分享
 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4 typedef long long LL;
 5 
 6 int main(void)
 7 {
 8     LL s, x, t, ans = 1LL;
 9     cin >> s >> x;
10     t = s == x ? 2LL : 0LL;
11     s -= x;
12     if(s < 0LL || s % 2LL) {puts("0"); return 0;}
13     s /= 2LL;
14     while(x || s)
15     {
16         if((x % 2LL) && (s % 2LL)) {puts("0"); return 0;}
17         if((x % 2LL) && !(s % 2LL)) ans <<= 1LL;
18         x /= 2LL, s /= 2LL;
19     }
20     cout << ans - t << endl;
21     return 0;
22 }
Aguin

 

CF 627 B Factory Repairs

两个bit随意搞。

技术分享
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <algorithm>
 4 using namespace std;
 5 const int maxn = 2e5 + 10;
 6 typedef long long LL;
 7 LL c[2][maxn];
 8 
 9 int lowbit(int s)
10 {
11     return s & (-s);
12 }
13 
14 void modify(int op, int i, LL x)
15 {
16     while(i < maxn) c[op][i] += x, i += lowbit(i);
17     return;
18 }
19 
20 LL query(int op, int i)
21 {
22     LL ret = 0LL;
23     while(i > 0) ret += c[op][i], i -= lowbit(i);
24     return ret;
25 }
26 
27 int main(void)
28 {
29     int n, k, a, b, q;
30     scanf("%d %d %d %d %d", &n, &k, &a, &b, &q);
31     while(q--)
32     {
33         int op, x, y;
34         scanf("%d", &op);
35         if(op == 1)
36         {
37             scanf("%d %d", &x, &y);
38             modify(0, x, min(a - query(0, x) + query(0, x - 1), (LL)y));
39             modify(1, x, min(b - query(1, x) + query(1, x - 1), (LL)y));
40         }
41         else
42         {
43             scanf("%d", &x);
44             printf("%I64d\n", query(1, x - 1) + query(0, n) - query(0, x + k - 1));
45         }
46     }
47     return 0;
48 }
Aguin

 

第二周 3.6-3.12

标签:

原文地址:http://www.cnblogs.com/Aguin/p/5247496.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!