srm537 div1
2012-04-03 03:33
344 查看
250pt
给定A,B,X
求pA+qB = tX+kY,p,q,t,k >= 0中Y的个数。
首先考虑什么时候y有无穷多解,很显然此时k取0,因此X|A && X|B
可以观察出在这个等式中,有两个基本解,既A = tX+kY与B = tX+kY,于是问题转化为,我们对于给定的X,求出同时满足这两个等式的Y的个数。
显然,如果Y有有限个取值,那么Y <= MAX(A,B).
500pt
有一个重要的观察:每一bit的期望是独立事件,也就是说,我们只需要计算每一bit最终为1的概率是多少即可,最后的解就是每一位的期望之和。
求每一位最终为1的概率可以dp.
925pt
目测网络流,还没想出来。
给定A,B,X
求pA+qB = tX+kY,p,q,t,k >= 0中Y的个数。
首先考虑什么时候y有无穷多解,很显然此时k取0,因此X|A && X|B
可以观察出在这个等式中,有两个基本解,既A = tX+kY与B = tX+kY,于是问题转化为,我们对于给定的X,求出同时满足这两个等式的Y的个数。
显然,如果Y有有限个取值,那么Y <= MAX(A,B).
bool can(int A,int B,int X,int Y) { bool flag1 = false,flag2 = false; for(int i = 0;i * X <= A;i++) if((A - i*X) % Y == 0) flag1 = true; for(int i = 0;i * X <= B;i++) if((B-i*X) % Y == 0) flag2 = true; return flag1 && flag2; } int howMany(int A, int B, int X) { int ans = 0; if(A % X == 0 && B % X == 0) return -1; int t = A > B?A:B; for(int i = 1;i <= t;i++) { if(can(A,B,X,i)) ans++; } return ans; }
500pt
有一个重要的观察:每一bit的期望是独立事件,也就是说,我们只需要计算每一bit最终为1的概率是多少即可,最后的解就是每一位的期望之和。
求每一位最终为1的概率可以dp.
double expectedNumber(vector <int> ducks, vector <int> spellOne, vector <int> spellTwo, int K) { //$CARETPOSITION$ double dp[55][55]; double ans = 0; for(int mask = 1;mask <= 1000000000;mask *=2) { memset(dp,0,sizeof dp); for(int j = 0;j < ducks.size();j++) dp[0][j] = (ducks[j] & mask) !=0 ? 1 : 0; for(int i = 0;i < K;i++) for(int j = 0;j < ducks.size();j++) { if((spellOne[j] & mask) == 0) dp[i+1][j] += 0.5*dp[i][j]; else dp[i+1][j] += 0.5*(1-dp[i][j]); dp[i+1][spellTwo[j]] += 0.5*dp[i][j]; } ans += mask*dp[K][0]; //printf("%lf\n",ans); } return ans; }
925pt
目测网络流,还没想出来。
相关文章推荐
- SRM 537 DIV2
- SRM 537 div2
- SRM537-div2-3-PrinceXToastbook
- SRM537-div1-3-PrinceXDominoes
- srm 303 div2 1000 (简单暴力,分解素因子)
- topcoder SRM495 div1 level3
- topcoder srm 580 div1
- TopCoder SRM 654 Div2 Problem 500 - OneEntrance (思维)
- 1-SRM 144 DIV1
- StrIIRec(SRM545-div1-1-div2-2)
- [TopCoder] SRM580, DIV1, 600p, Solution
- SRM 595 DIV1 250
- SRM 554 DIV2
- 【TC SRM 596 DIV1】BitwiseAnd
- SRM 555 DIV2
- SRM 457 Div2 500
- topcoder srm 708 div1 -3
- Topcoder SRM 627 div1 HappyLettersDiv1 : 字符串
- TopCoder算法竞赛题1:SRM 144 DIV 2, 250-point
- TopCoder算法竞赛题5:SRM 149 DIV 2, 250-point