Codeforces Round #258 (Div. 2)题解(ALL)
2014-07-25 01:47
393 查看
<a target=_blank href="http://codeforces.com/contest/451/problem/A" target="_blank">A. Game With Sticks</a>
<span style="font-family: Arial, Helvetica, sans-serif;">n个水平棍子,m个竖直棍,组成网格,每次删除交点所在的行和列,两个人轮流删除,直到最后没有交点为止,最后不能再删除的人将输掉</span>
</pre><pre name="code" class="cpp">取哪个点没有区别
脑残加了个n=m=1的特判还是错的卡到46minWA2发。。。
scanf("%d%d",&n,&m); if( min(m,n)%2==1 ) cout<<"Akshat"; else cout<<"Malvika";
B. Sort the Array
按a[i]的值排序然后
(感谢易)
bool can(){ bool need = false; for (int j = 1; j <=n; j ++){ if (a[j].id!=j){ need =true; break; } } if (!need){ cout<<"yes"<<endl; cout<<"1 1"<<endl; return true; } int i; for (i = n; i >0; i --) if (a[i].id!=i) break; int l,r; r = i; l = a[i].id; for (int j =l;j <=r; j ++){ if (j-l!=r-a[j].id){ return false; } } for (int j = 1; j <l; j ++) if (a[j].id!=j) return false; cout<<"yes"<<endl; cout<<l<<" "<<r<<endl; return true; }
C. Predict Outcome of the Game
n场球,已经踢了K场,知道三个队a,b,c,的胜场差是|a-b|=d1,|b-c|=d2
求是否有希望踢完三队胜场相同
根据a,b,c大小关系分四种情况考虑
if(n%3!=0) { printf("no\n");continue; } if(k+d2+2*d1>=0 && (k+(d2+2*d1))%3==0 ) { a=(k+d2+2*d1)/3; b=a-d1; c=b-d2; if(a<=n/3 &&b<=n/3 &&c<=n/3 &&a>=0 &&b>=0 &&c>=0) ans=true; } if(k+d2-2*d1>=0 && (k+(d2-2*d1))%3==0 ) { a=(k+d2-2*d1)/3; b=a+d1; c=b-d2; if(a<=n/3 &&b<=n/3 &&c<=n/3 &&a>=0 &&b>=0 &&c>=0) ans=true; } if(k-d2+2*d1>=0 && (k-d2+2*d1)%3==0 ) { a=(k-d2+2*d1)/3; b=a-d1; c=b+d2; if(a<=n/3 &&b<=n/3 &&c<=n/3 &&a>=0 &&b>=0 &&c>=0) ans=true; } if(k-d2-2*d1>=0 && (k-d2-2*d1)%3==0 ) { a=(k-d2-2*d1)/3; b=a+d1; c=b+d2; if(a<=n/3 &&b<=n/3 &&c<=n/3 &&a>=0 &&b>=0 &&c>=0) ans=true; } if(ans) printf("yes\n"); else printf("no\n"); }
D. Count Good Substrings
给出一个字符串,该字符串的子串中,长度为奇数的good string有多少个,长度为偶数的good string(字符串中连续相同的字符合并为一个字符,形成回文串的字符串)有多少个。
看官方题解是这样:
扫一遍S,统计S中到当前位置之前 奇数位和偶数位a,b分别出现次数
第一问:在偶数位时 当前位置字母出现在奇数位次数 + 在奇数位时 当前位置字母出现在偶数位次数
第二问:在偶数位时 当前位置字母出现在偶数位次数 + 在奇数位时 当前位置字母出现在奇数位次数
(奇偶从0开始算)
代码直接去standing找吧(因为我也没看懂为嘛题解这个是对的。。。)
E. Devu and Flowers
有n个花坛,每个花坛有f[i]支花。同一个花坛的花颜色相同,不同花坛的花颜色不同,问取s朵花一共有多少种取法
如果每一个每一种花都有无限个(即>=s),很明显,有C(s+n-1,n-1)种取法。
如果某种花不够,那么就有C(s+n-1-x-1,n-1)种取法要减去。
代码是男的另一种直接加,类似官方题解的方法(我还是不会这个)
Calc为乘法逆元求组合数模 模版
LL ret = 0; for ( int i = 0; i < (1 << n); i ++ ) { LL sum = 0, num = 0; for ( int j = 0; j < n; j ++ ) if ( (1 << j) & i ) { sum += x[j]; num ++; } sum += num; if ( sum <= s ) { ret += (( num & 1LL ) ? -1LL : 1LL ) * Calc( s - sum + n - 1, n - 1 ); ret %= mod; } } ret = ( ret + mod ) % mod; cout <<ret<<endl;
相关文章推荐
- Codeforces Round #192 (Div. 2) 题解报告
- Codeforces Round #433 (Div. 2) 题解
- Codeforces Round #306 (Div. 2) 题解
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) ABCD题解
- codeforces Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) 题解(A-D)
- Codeforces Round #258 (Div. 2) C. Predict Outcome of the Game
- Codeforces Round #109 (Div. 1) 题解 【ABC】
- 【题解】[codeforces round #198 div2]Tourists problem
- Codeforces Round #258 (Div. 2) A. Game With Sticks(数学题)
- Codeforces Round #361 (Div. 2) 题解
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) ABCD题解
- Codeforces Round #243 (Div. 2) Problem B - Sereja and Mirroring 题解
- Codeforces Round #258 (Div. 2) A. Game With Sticks
- Codeforces Round #365 (Div. 2)Mishka and Divisors 题解。 DP
- Codeforces Round #Pi (Div. 2) (ABCD题解)
- Educational Codeforces Round 33 (Rated for Div. 2) 题解
- Codeforces Round #258 (Div. 2)
- Codeforces Round #258 (Div. 2)Devu and Flowers 容斥原理
- Codeforces Round #362 (Div. 1) 题解(待续)
- Codeforces Round #272 (Div. 2) 题解