bzoj1677】的更多相关文章

... #include <iostream> using namespace std; ]; int n,i; int main() { cin>>n; f[]=; ;i<=n;i++) { f[i]=f[i-]; )) f[i]+=f[i/]; f[i]%=; } cout<<f[n]; ; } Description Farmer John commanded his cows to search for different sets of numbers…
1677: [Usaco2005 Jan]Sumsets 求和 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 570  Solved: 310[Submit][Status] Description Farmer John commanded his cows to search for different sets of numbers that sum to a given number. The cows use only numbers th…
题解: 背包 每一个1<<i都是无限量 代码: #include<bits/stdc++.h> using namespace std; ,M=1e9; int n,dp[N]; int main() { scanf("%d",&n); dp[]=; ;i<;i++) <<i;j<=n;j++) (dp[j]+=dp[j-(<<i)])%=M; printf("%d",dp[n]); }…
dp,用f[i]表示i划分的方案,直接枚举最后一个数是错误的,因为会导致c重复计数,然后正解十分神奇--当i为奇数,那么分解中一定有1,因此f[i]=f[i-1]当i为偶数若有1,同样转移到f[i-1]:没有1,可以将所有因数除以2,即f[i]=f[i-1]+f[i/2],注意对1e9取模 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define mod 1000000000 4 int n,f[1000005]; 5 int mai…
summary:44 没救了...整天刷水迟早药丸! ❤bzoj3892: 区间dp.我原来的思路是dp[i][j]表示前i个数跳过了j次,那么转移可以前k个数转移了j-1次,枚举k就好了,但是这样是错的,因为前k个数转移了j-1次,那么再k到i之间到底要在哪一步跳无法确定.于是便WA了.正确的转移应该是前i-k-1个数转移了j-k次,在i-k-1到i直接跳过去就好了.dp的转移方程要多验证是否是对的...! #include<cstdio> #include<cstring> #…
嗯,用这篇博客当一个目录,方便自己和学弟(妹?)们查阅.不定期更新. BZOJ1600   BZOJ1601   BZOJ1602   BZOJ1603   BZOJ1604   BZOJ1605   BZOJ1606   BZOJ1607   BZOJ1608   BZOJ1609 BZOJ1610   BZOJ1611   BZOJ1612   BZOJ1613   BZOJ1614   BZOJ1615   BZOJ1616   BZOJ1617   BZOJ1618   BZOJ1619…
counter: 664BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ1202 BZOJ1051 BZOJ1001 BZOJ1588 BZOJ1208 BZOJ1491 BZOJ1084 BZOJ1295 BZOJ3109 BZOJ1085 BZOJ1041 BZOJ1087 BZOJ3038 BZOJ1821 BZOJ1076 BZOJ2321 BZOJ1934 BZOJ…
沿着黄学长的步伐~~ 红色为已刷,黑色为未刷,看我多久能搞完吧... Update on 7.26 :之前咕了好久...(足见博主的flag是多么emmm......)这几天开始会抽时间刷的,每天几道就行了. BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ1202 BZOJ1051 BZOJ1001 BZOJ1588 BZOJ1208 BZOJ1491 BZOJ1084 B…