zoukankan      html  css  js  c++  java
  • hdu 5000

    DRD具有分身的能力,对于两个分身A和B来说,如果A的各个能力都强于B,
    那么B就无法生存,先给定DRD的n种能力的上限值,问最多有多少个克隆人可以共存。

    可以看出各能力和为最小0和最大sum时人数一样,所以它应该是以sum/2为中点的对等。
    利用01背包每种能力 1 - T[i]往里面放。  而且从上面可以看出在sum / 2 时最大


    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<cmath>
    #include<vector>
    #include<map>
    #include<set>
    #include<queue>
    #include<stack>
    #include<string>
    #include<algorithm>
    using namespace std;
    #define N 100050
    typedef long long ll;
    const int MOD = 1e9+7;
    
    int T[2005];
    int dp[2005];
    
    int main()
    {
        int t,n;
        scanf("%d",&t);
        while(t--)
        {
            int sum = 0;
            scanf("%d",&n);
            for(int i = 1; i <= n; i++)
            {
                scanf("%d",&T[i]);
                sum += T[i];
            }
    
            memset(dp,0,sizeof(dp));
            dp[0] = 1;
            for(int i = 1; i <= n; i++)
                for(int j = sum; j > 0; j--)
                    for(int k = 1; k <= T[i] && k <= j; k++)
                        dp[j] = (dp[j]+dp[j-k]) % MOD;
    
            printf("%d
    ",dp[sum/2]);
        }
        return 0;
    }
    

      

  • 相关阅读:
    ubuntu命令
    mac获取root权限
    centos7安装解压缩工具 ncompress
    ubuntu17.04 配置go环境变量
    vue.js 拦截器
    ubuntu 安装jdk
    ubuntu安装deb文件
    初识 阿里云 SSL 证书申请
    java之XML
    LanProxy 内网映射穿透
  • 原文地址:https://www.cnblogs.com/Przz/p/5409767.html
Copyright © 2011-2022 走看看