bzoj1271 秦腾与教学评估

SB题!!!

我TM困惑了一下午,三份代码答案全都不一样,后来才发现要用long long来二分...

拿记事本一改就A了。

我TM......

这SB题目......

这惨痛的事实充分说明了long long的重要性!!!


题解:

还是惨痛的教训:认真看题!

题目说:至多只有一个破绽;我:可能有多个破绽。

然后GG了两天...后来才发现...

然后就好搞了,在前缀和上二分。

去掉long long还是比较有水分的。

 

 1 #include <cstdio>
 2 typedef long long LL;
 3 const LL N = 200010;
 4 inline void max(LL &a, LL b) {
 5     if(a < b) a = b;
 6     return;
 7 }
 8 inline void read(LL &x) {
 9     x = 0;
10     char c = getchar();
11     while(c < '0' || c > '9') {
12         c = getchar();
13     }
14     while(c >= '0' && c <= '9') {
15         x = (x << 3) + (x << 1) + c - '0';
16         c = getchar();
17     }
18     return;
19 }
20 struct Group {
21     LL s, e, d;
22 }g[N];
23 
24 LL n;
25 
26 inline LL ge(LL i, LL k) {
27     if(g[i].s > k) return 0;
28     if(g[i].e <= k) {
29         return (g[i].e - g[i].s) / g[i].d + 1;
30     }
31     return (k - g[i].s) / g[i].d + 1;
32 }
33 
34 inline bool check(LL k) {
35     bool ans = 0;
36     for(LL i = 1; i <= n; i++) {
37         ans ^= (ge(i, k) & 1);
38     }
39     return ans;
40 }
41 
42 inline LL getsum(LL k) {
43     LL ans = 0;
44     for(LL i = 1; i <= n; i++) {
45         if(g[i].s > k || g[i].e < k)
46             continue;
47         if(!((k - g[i].s) % g[i].d))
48             ans++;
49     }
50     return ans;
51 }
52 
53 int main() {
54     LL T, m;
55     read(T);
56     while(T--) {
57         read(n);
58         m = -1;
59         for(LL i = 1; i <= n; i++) {
60             read(g[i].s); read(g[i].e); read(g[i].d);
61             max(m, g[i].e);
62         }
63         LL l = 1, r = m, mid;
64         if(!check(m)) {
65             printf("Poor QIN Teng:(\n");
66             continue;
67         }
68         while(l < r) {
69             mid = (l + r) >> 1;
70             if(check(mid)) r = mid;
71             else           l = mid + 1;
72         }
73         printf("%lld %lld\n", l, getsum(l));
74     }
75     return 0;
76 }
AC代码

 

附:不用long long不WA反T,导致我疯狂卡常数

 

posted @ 2018-05-14 12:45  garage  阅读(92)  评论(0编辑  收藏  举报