首页 > 代码库 > 2013 Asia Regional Changchun

2013 Asia Regional Changchun

Hard Code http://acm.hdu.edu.cn/showproblem.php?pid=4813

 1 #include<cstdio> 2 char op[1024]; 3 int main(){ 4     int t,n,m; 5     while(~scanf("%d",&t)){ 6         while(t--){ 7             scanf("%d%d%s",&n,&m,op); 8             for(int i=0;i<n;i++){ 9                 for(int j=0;j<m;j++){10                     printf("%c",op[i*m+j]);11                 }12                 puts("");13             }14         }15     }16     return 0;17 }
View Code

 

Little Tiger vs. Deep Monkey http://acm.hdu.edu.cn/showproblem.php?pid=4815

dp求n个数的和为j的种数,除以总的种数就是概率,一旦概率大于等于p就是答案。

 1 #include<cstdio> 2 #include<cstring> 3 #define mt(a,b) memset(a,b,sizeof(a)) 4 typedef __int64 LL; 5 LL dp[41][41010]; 6 int a[41]; 7 int main(){ 8     int n,t; 9     double p;10     scanf("%d",&t);11     while(t--){12         scanf("%d%lf",&n,&p);13         for(int i=1;i<=n;i++){14             scanf("%d",&a[i]);15         }16         mt(dp,0);17         dp[0][0]=1;18         for(int i=1;i<=n;i++){19             for(int j=0;j<=40000;j++){20                 dp[i][j]+=dp[i-1][j];21                 dp[i][j+a[i]]+=dp[i-1][j];22             }23         }24         LL sum=0;25         int ans=0;26         LL all=1LL<<n;27         for(int i=0;i<=40000;i++){28             sum+=dp[n][i];29             if(1.0*sum/all>=p){30                 ans=i;31                 break;32             }33         }34         printf("%d\n",ans);35     }36     return 0;37 }
View Code

 

 

 

end