上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 30 下一页
摘要: 思路:dp[i][j][k]表示满足前i个数,和为j,lcm为k的数目。设a为解的第i+1个数。 那么状态转移就为 dp[i+1][j+a][lcm(a,k)]+=dp[i][j][k]。但是由于三维开不了,所以用滚动数组。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0)10 #define MAX 100111 #define M 100000000712 using namespace 阅读全文
posted @ 2013-08-26 16:54 _随心所欲_ 阅读(301) 评论(0) 推荐(0)
摘要: 思路:1.求f[n];dp[i]表示i个连续相同时的期望则 dp[0]=1+dp[1] dp[1]=1+(5dp[1]+dp[2])/6 …… dp[i]=1+(5dp[1]+dp[i+1])/6 …… dp[n]=0可以求得f[n]=(6^n-1)/5.2.求h[n];dp[i]表示i个连续相同的1时的期望则 dp[0]=1+(5dp[0]+dp[1])/6 dp[1]=1+(5dp[0]+dp[2])/6 …… dp[i]=1+(5dp[0]+dp[i+1])/6 …… dp[n]=0可以求得h[n]=(6^(n+1)-6)/5.3.求g[m];dp[i]表示i个1时的期望则 dp[0]= 阅读全文
posted @ 2013-08-26 09:58 _随心所欲_ 阅读(777) 评论(2) 推荐(0)
摘要: 思路:易知L不能整除G时为0;将L/G质因数分解,对于其中的因子p,个数为cnt,则至少有一个包含p^cnt,至少有一个数不包含p;只有一个数包含p^cnt时,有C(3,1);有2个数包含p^cnt时,有C(3,1);有2个数包含p因子,其中一个是p^cnt,另外一个有cnt-1种,总共有(cnt-1)A(3,2).所以总共有6*cnt。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0)10 阅读全文
posted @ 2013-08-24 20:06 _随心所欲_ 阅读(452) 评论(0) 推荐(0)
摘要: 没什么说的裸线段树,注意细节就好了!!!代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0) 10 #define MAX 100003 11 #define M 10007 12 #define lson i>1; 39 } 40 }T[MAX*4]; 41 void down(int i) 42 { 43 T[lson].Mul(T[i].mul); 44 ... 阅读全文
posted @ 2013-08-23 22:08 _随心所欲_ 阅读(198) 评论(0) 推荐(0)
摘要: 思路:由于m非常小,只有5。所以用dp[i]表示从位置i出发到达n的期望步数。那么dp[n] = 0dp[i] = sigma(dp[i + j] * p (i , i + j)) + 1 . (-m 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0)10 #define MAX 5000211 using namespace std;12 double a[MAX][11],p[MAX][11],consts[MAX],q. 阅读全文
posted @ 2013-08-23 20:26 _随心所欲_ 阅读(402) 评论(0) 推荐(0)
摘要: 思路:刚开始用STL中的栈,一直RE……,之后改为手动模拟栈操作,在注意点细节就可以了!!!代码如下: 1 #include 2 #include 3 #include 4 #define M 1000001 5 using namespace std; 6 int A[M],B[M],a[M],s[M],cur,x,q,l,r; 7 char c; 8 int main() 9 {10 while(scanf("%d",&q)!=EOF){11 l=r=1;12 while(q--){13 scanf("%s",&c);14 ... 阅读全文
posted @ 2013-08-23 19:11 _随心所欲_ 阅读(327) 评论(0) 推荐(0)
摘要: 思路:▶ 设 win(i,x,y) 表示当前可以买的物品是 i,先手有 x 元,后 手有 y 元时,先手是否必胜 ▶ win(i,x,y) ⇐⇒∃j((j > i)∧(x ≥ si−sj)∧¬win(j,y,x−si +sj)) ▶ 其中 si = Ci + Ci+1 +···+ CN ▶ 注意到 x + y = A + B−s1 + si,即 win(i,x) := win(i,x,y)▶ win(i,x) =⇒ win(i,x + 1) ▶ 设 m(i) = min{x : win(i,x)},则 ¬win(i,x) ⇐⇒ x ≤ m 阅读全文
posted @ 2013-08-23 16:35 _随心所欲_ 阅读(680) 评论(0) 推荐(1)
摘要: 思路:对于给定的n,s(i)即将n分解为i个数的组合数,也就是在n-1个位置插入i-1个板即C(n-1,i-1);∑S=2^(n-1);phi(1000000007)=1000000006;对于n>=phi,有a^n%c=a^(n%phi(c)+phi(c))%c。代码如下: 1 #include 2 #include 3 #define ll __int64 4 #define mod 1000000007 5 #define phi 1000000006 6 char s[100002]; 7 ll pow(ll a,ll b) 8 { 9 ll ans=1;10 whil... 阅读全文
posted @ 2013-08-23 14:46 _随心所欲_ 阅读(196) 评论(0) 推荐(0)
摘要: 思路:由于c[i]要么是1,要么是2.所以当c[i]中没有1的时候就不可能得到奇数;再就是如果m 2 #include 3 int main() 4 { 5 int n,q,i,a,mm,b; 6 while(scanf("%d%d",&n,&q)!=EOF) 7 { 8 for(i=1;i<=n;i++){ 9 scanf("%d",&a);10 }11 b=0;12 for(i=1;i<=n;i++){13 scanf("%d",&a);14 ... 阅读全文
posted @ 2013-08-23 14:28 _随心所欲_ 阅读(230) 评论(0) 推荐(0)
摘要: 简单的SG函数应用!!!代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 int sg[10001],k,a[101];10 int getsg(int x)11 {12 if(sg[x]!=-1) return sg[x];13 if(x-a[0]=0;i++){17 vis[getsg(x-a[i])]=1;18 }19 for(int i=0;;i++)20 i... 阅读全文
posted @ 2013-08-22 21:59 _随心所欲_ 阅读(229) 评论(0) 推荐(0)
上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 30 下一页