srm540 div1
2012-04-13 02:43
169 查看
250pt
很简单,让a1作为方程的自由元,然后判断即可,但是细节很多,很考察代码能力。
写的有点丑,不想改了。
很简单,让a1作为方程的自由元,然后判断即可,但是细节很多,很考察代码能力。
写的有点丑,不想改了。
class ImportantSequence { public: long long maxx(long long a,long long b) { return a > b ? a : b; } long long minx(long long a,long long b) { return a < b ? a : b; } long long maxx2(long long a,long long b) { return a > b ? a : b; } long long minx2(long long a,long long b) { if(a == -1) return b; if(b == -1) return a; return a < b ? a : b; } int getCount(vector <int> B, string operators) { long long k = 1,c = 0; vector<long long> larr,rarr; for(int i = 0;i < operators.length();i++) { if(operators[i] == '+') { k = -k; c = B[i] - c; } else { c = c - B[i]; } //printf("k:%I64d c:%I64d\n",k,c); if(k > 0) { if(c % k != 0) larr.push_back(maxx(1,(long long)(-1.0*c/k))); else larr.push_back(maxx(1,(long long)(-1*c/k+1))); rarr.push_back(-1); } else if(k < 0) { larr.push_back(1); if(c % k != 0) rarr.push_back(maxx(0,(long long)(-1.0*c/k))); else rarr.push_back(maxx(0,(long long)(-1*c/k-1))); //printf("2:%I64d\n",(long long)(-1.0*c/k)); } } long long maxl = 1,minr = -1; for(int i = 0;i < larr.size();i++) { //printf("%I64d %I64d\n",larr[i],rarr[i]); maxl = maxx2(larr[i],maxl); minr = minx2(rarr[i],minr); } if(minr == -1) return -1; if(maxl > minr) return 0; return (int)(minr - maxl+1); } };
相关文章推荐
- SRM540-div1-2-RandomColoring
- TC SRM 540 DIV2
- SRM540-div1-1-div2-2-ImportantSequence
- SRM540-div2-3-FractionInDifferentBases
- [TopCoder] SRM 587 DIV 2, 250p, 500p, 1000p, Solution
- SRM 584 div1 lev3(最小树形图)
- TopCoder SRM 588 DIV2 KeyDungeonDiv2
- srm 524 div1
- topcoder SRM 543 div2 250
- srm 302 div2 1000(简单题,bfs,dp)
- SRM 814 Div 1 ElectionFraudDiv1(250pt)
- TC SRM 152 DIV2
- SRM675 div2 hard TreeAndPathLength2(DP)
- tc-SRM-626-DIV1-250
- SRM 593 Div1 L1:HexagonalBoard,用染色法判断无向图是否为二分图
- SRM 552 DIV2
- TopCoder SRM 659 Div2 Problem 500 - PublicTransit (思维)
- SRM 678(div2)
- TopCoder算法竞赛题2:SRM 146 DIV 2, 250-point
- TopCoder算法竞赛题6:SRM 150 DIV 2, 250-point