设为首页 加入收藏

TOP

HDU-5000 Clone 鞍山网络赛D题 DP+猜想
2015-07-20 17:40:29 来源: 作者: 【 】 浏览:3
Tags:HDU-5000 Clone 鞍山 网络 猜想

一个人可以克隆出自己克隆体,一个克隆体有n个方面,如果一个克隆体全方面逊色于另外一个克隆体,那么它就无法存活下去,问怎样可以同时最多存活的克隆体数目。思路:得到最大值的时候,每个克隆体的属性之和必然是相同的,并且这个和是所有方面最高属性和的二分之一。问题就变成n个数组成sum/2的方案数。

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         #include 
        
          #include 
         
           using namespace std; const int mod=1e9+7; const int maxn=2222; int n; int a[maxn]; int dp[maxn]; int main() { int t; int sum=0; scanf("%d",&t); while(t--) { sum=0; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); sum+=a[i]; } sum/=2; memset(dp,0,sizeof(dp)); dp[0]=1; for(int i=1;i<=n;i++)//背包求n个数字组成sum的方案数 { for(int k=sum;k>=0;k--) { for(int j=1;j<=a[i];j++) { if(k-j<0) { break; } dp[k]=(dp[k-j]+dp[k])%mod; } } } printf("%d\n",dp[sum]); } return 0; }
         
        
       
      
     
    
   
  



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇hdu5014 Number Sequence(异或运.. 下一篇从三层架构到IoC的蜕变

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·HTTP协议深度解析: (2025-12-25 16:21:03)
·HTTP 概述 - MDN (2025-12-25 16:21:00)
·视频直播为什么要用u (2025-12-25 16:20:57)
·用 Python 进行数据 (2025-12-25 15:49:09)
·如何学习Python数据 (2025-12-25 15:49:07)