【鸽笼原理】ZOJ 2955

原创 2012年03月30日 13:09:18

用到了鸽笼原理的结论:设可选的 N 个数从小到大依次为 a(1)、 a(2) … a(N),则在最优的取法中,小于 a(N) 的数不会多于 a(N) 个。

#define N 10005
int dp[N];
int w[111];
int main(){
    int t;
    scanf("%d",&t);
    while(t--){
        int n,c;
        scanf("%d%d",&n,&c);
        int i,j;
        for(i=1;i<=n;i++)scanf("%d",&w[i]);
        sort(w+1,w+1+n);
        int mx = w[n]*w[n];
        memset(dp,-1,sizeof(dp));
        dp[0] = 0;
        for(i=1;i<=n;i++){
            for(j=w[i];j<mx;j++){
                if(dp[j-w[i]]!=-1 && (dp[j]==-1 || dp[j-w[i]] + 1<dp[j]))
                dp[j] = dp[j-w[i]]+1;
            }
        }
        int res = c;
        int cnt = 0;
        if(c>=mx){
            res = c%mx;
            cnt = (c-c%mx)/w[n];
        }
        int ans;
        if(dp[res]==-1)ans=-1;
        else ans = cnt+dp[res];
        printf("%d\n",ans);
    }
    return 0;
}



















POJ 3370 组合数学 鸽笼原理

参考:http://www.cppblog.com/pcfeng502/archive/2009/10/18/98902.aspx 这道题在集训手册上标志是“抽屉原理”,老实说,在看到这道题的具...

Petrozavodsk Summer Training Camp 2016 I-Vier(鸽笼原理)

Problem I. Vier Input file: vier.in Output file: vier.out Time limit: 2 seconds Memory limit: 25...

Wunder Fund Round 2016 F. Double Knapsack(two pointers + 鸽笼原理)

题意: 给定2个N≤106元素的multiset,元素取值范围为1∼N给定2个N\le10^6元素的multiset, 元素取值范围为1\sim N 现在各从中选出一些元素的subset,s...
  • lwt36
  • lwt36
  • 2016年01月31日 15:14
  • 693

[APIO 2016] Gap:交互式,鸽笼原理

考场上我拿了0分和30分。嗯,量子态。网络太差了,而且我是12点多钟开始写的这一题,直到离开考场的那一刻评测结果都没看到。再加上没有获奖,文件上找不到分数,也许这就是永远的谜了。 第一个子任务,对查...

鸽笼原理 小讲 【 理解 + 例题 】 更新 ing ...

桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少会有一个抽屉里面至少放两个苹果。这一现象就是我们所说的“抽屉原理”。 抽屉原理的一般含义为:“如果每个抽屉代表一个集合,每一个苹...

抽屉原理(又名:鸽笼原理)

百度真是太强大了,百度百科真的好爱你…… 抽屉原理 百科名片    抽屉原理 桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少...

计数问题--抽屉原理(鸽笼原理)

定理:(鸽笼原理)若有 n 只鸽子住进 m(n>m) 个鸽笼,则存在一个鸽笼至少住进[(n-1)/m]+1只鸽子,[x]表示小于等于x的最大整数。 注意:1.鸽笼原理只提供了存在性证明。     ...

hdu1205吃糖果 鸽笼定理基础

吃糖果 Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Subm...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【鸽笼原理】ZOJ 2955
举报原因:
原因补充:

(最多只允许输入30个字)