HDU 5656 CA Loves GCD (dp)
来源:互联网 发布:浮云 张韶涵 知乎 编辑:程序博客网 时间:2024/05/18 22:39
题目链接
题意:给你n个数,至少选择一个,然后选择的数的gcd和是多少,两个选择不同,当且仅当有一个数的位置是不同的
dp[i][j]:表示前i个数选择出来gcd是j的种类数,gcd要提前算好,否者TLE
#include<bits/stdc++.h>using namespace std;#define LL long long#define cl(a,b) memset(a,b,sizeof(a))#define gcd __gcdconst int maxn = 1005;const int inf = 1<<28;const int mod = 100000007;int a[maxn];LL dp[maxn][maxn];//dp[i][j]:表示前i个数,gcd为j的种类数int g[maxn][maxn];int main(){ for(int i=0;i<maxn;i++)for(int j=0;j<maxn;j++)g[i][j]=gcd(i,j); int T;scanf("%d",&T); while(T--){ int n; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&a[i]); } cl(dp,0); dp[0][0]=1; for(int i=0;i<n;i++){ for(int j=0;j<=1000;j++){ dp[i+1][j]=(dp[i+1][j]+dp[i][j])%mod;//不选 dp[i+1][g[a[i]][j]]=(dp[i+1][g[a[i]][j]]+dp[i][j])%mod;//选择 } } LL ans=0; for(int i=1;i<=1000;i++)ans=(ans+dp[n][i]*i)%mod; printf("%lld\n",ans); } return 0;}
0 0
- HDU 5656 CA Loves GCD (dp)
- hdu CA Loves GCD dp
- HDU 5656:CA Loves GCD
- HDU 5656 CA Loves GCD
- HDU 5656 CA Loves GCD
- hdu 5656 CA Loves GCD
- HDU 5656 CA Loves GCD
- HDU 5656 CA Loves GCD
- HDU 5656 CA Loves GCD
- hdu 5656 CA Loves GCD(dp+gcd)(Bestcoder #78 1002)
- HDU 5656 CA Loves GCD (BestCoder Round #78) DP
- hdu 5656 CA Loves GCD(穷举子集类dp)
- HDU 5656 CA Loves GCD dp,常数优化
- HDU - CA Loves GCD
- hdoj 5656 CA Loves GCD 【dp】
- HDU 5656 CA Loves GCD 枚举GCD+容斥
- HDU 5656 CA Loves GCD 01背包+gcd
- bc 4.2 1002 CA Loves GCD dp
- 工作中的积累
- uart stdio的移植2
- ionic打包apk
- Lambda 表达式
- iOS 无证书真机调试
- HDU 5656 CA Loves GCD (dp)
- https的本地测试环境搭建 http网站转换成https网站之后的问题
- 独立项目 - 2 - Mac配置retrolambda
- Linux 主机间配置无密码访问
- JDBC简单示例
- Ubuntu 14.04更改Apache网站根目录
- 5.7.6 指令处理函数的“私有”操作
- 【剑指offer系列】 二进制中1的个数___10
- java中map集合的原理与应用