fzoj 2116 买糖果

Problem 2116 买糖果

Accept: 76    Submit: 294
Time Limit: 1000 mSec    Memory Limit : 32768 KB

 Problem Description

清明君、五一君和六一君三个人是好朋友。

他们很喜欢去一家糖果店买糖果,糖果店有巧克力和草莓两种口味的糖果出售。清明君喜欢吃巧克力味的糖果,六一君喜欢吃草莓味的糖果,五一君是个吃货,两种口味的糖果他都很喜欢吃。店老板把两种口味的糖果混在一起装在罐子里,于是每个罐子里每种糖果的数量都可能不相同。

这一天,清明君、五一君和六一君三个人去买糖果。他们的钱只能购买m罐糖果。清明君想要a颗巧克力味的糖果,六一君想要b颗草莓味的糖果,五一君则想要糖果的数量越多越好。五一君想知道在满足清明君和六一君的要求下,自己最多能吃到多少颗糖果。

 Input

输入包含多组数据。

每组数据,第一行为两个整数n,m(1<=m<=n<=100),分别表示糖果店里糖果的总罐数和他们能够买到糖果的罐数。

接下来有n行,每行两个整数x,y(0<=x,y<=10),表示第i罐糖果里有x颗巧克力味糖果和y颗草莓味糖果。

最后一行为两个整数a,b。表示清明君想要a颗巧克力味的糖果,六一君想要b颗草莓味的糖果。

 Output

每组测试数据输出一个整数占一行,为五一君最多能吃到糖果的个数。如果没有能满足清明君和六一君要求的方案,则输出-1。

 Sample Input

3 2
1 10
3 2
3 4
5 3

 Sample Output

4

 Source

FOJ有奖月赛-2013年4月(校赛热身赛)

思路:加了限制条件的背包问题,dp[k][i][j]表示背包容量为 k ,巧克力味糖果有i

草莓味糖果为j时,可以取到的最大糖果数目

我们发现i+j==dp[k][i][j] ,所以第三维可以去掉;

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<vector>
#include<set>
#include<stack>
#include<map>
#include<ctime>
#include<bitset>
#define LL long long
#define INF 0x3f3f3f3f
#define maxn 60010
#define eps 1e-6
#define mod 1000000007
using namespace std;

int dp[110][1010] ;
int x[110],y[110] ;
int main()
{
    int i,n,m,j,k;
    int a,b,sum;
    while(scanf("%d%d",&n,&m) != EOF)
    {
        sum=0;
        for( i =1 ; i <= n ;i++){
            scanf("%d%d",&x[i],&y[i]) ;
            sum += x[i];
        }
        scanf("%d%d",&a,&b) ;
        memset(dp,-INF,sizeof(dp)) ;
        dp[0][0]=0;
        for( i = 1 ; i <= n ;i++)
            for( j = min(m,i) ; j >= 1 ;j--)
                for( k = sum ; k >= x[i];k-- )
                {
                    dp[j][k]=max(dp[j][k],dp[j-1][k-x[i]]+x[i]+y[i]) ;
                }
        int ans=-1;
        for( k = 1 ; k <= m ;k++){
            for( i = a ; i <= sum;i++)
            {
                if(dp[k][i]-i<b) continue;
                ans=max(dp[k][i]-a-b,ans) ;
            }
        }
        printf("%d\n",ans);
    }
    return 0 ;
}

时间: 2024-10-12 13:10:36

fzoj 2116 买糖果的相关文章

转载:hdu 题目分类 (侵删)

转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029. 1032.1037.1040.1048.1056.1058.1061.1070.1076.1089.1090.1091.1092.1093. 1094.1095.1096.1097.1098.1106.1108.1157.116

杭电ACM分类

杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007 童年生活二三事 递推题1008 University 简单hash1009 目标柏林 简单模拟题1010 Rails 模拟题(堆栈)1011 Box of Bricks 简单题1012 IMMEDIATE DECODABILITY

教你如何掌控别人

洗脑术 碰到别人故意为难让你回答一些尴尬的问题时,可以 你可以逃避 善用你的不诚实 或转移话题 想要控制他人 则需要 胡萝卜 + 棒子 最好的管理手段是,引导员工的梦想与公司的目标一致 阿伦森效应: 与人相处时,没必要把所有的好急于奉献给对方.否则,当对方觉得一切来的太容易之前,他不会珍惜你对他的好. 举例: a.当你去买糖果的时候,售货员 抓了一大把结果超称了,就从称里 逐渐减少. b.售货员 一开始抓很少,结果不够称 就逐渐 往称里加量. 就像谈恋爱时,你追求女朋友一样,让她慢慢体会你的优秀

四川好吃屋 转型与困境

成都互惠超市,互惠早已处于严重资不抵债.濒临倒闭的状态,避免因互惠破产导致将大量员工推向社会,双方协商建立了经营托管关系.门店(资产)被红旗连锁收购,而不是公司.最近好吃屋又欠款这么多,从原来 150家,现在只有48家门店了.就像凡客一样,欠供应商货款,凡客还钱不是因为 赚钱了,而是背后有既定投资人.至于好吃屋的资本运作等问题我就不说了,虽然知道内幕消息. 个人从看客的角度来说互惠的问题: 1.店铺选址不好:对于这样的零售店铺来说,选址,客流是主要因素.比如我在大学的时候,一个很荒凉的,公路对面

【转】对于杭电OJ题目的分类

[好像博客园不能直接转载,所以我复制过来了..] 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007 童年生活二三事 递推题1008 University 简单hash1009 目标柏林 简单模拟题1010 Rails 模拟题(堆栈)1011 Box of Bricks 简单题1012 IMMEDI

设计模式笔记:状态模式&amp;策略模式

这几天一直在忙期末考和实训,写笔记的时间也没有多少,不说废话了: 这文主要写两种模式:状态跟策略,主要是因为他们的类图一样,并且比较简单,写在同一篇文章里面容易甄别 状态模式:允许对象在内部状态改变时改变他的行为,对象看起来好像修改了他的类 先保留概念的意思,在平常的编程中,如果需要不同的状态,很一般的做法是在你要操作的类里面定义不同的常量代表不同的状态,然后if-else依据不同的状态有不同的实现: 1.你可以想象大量的if-else语句造成的低可读性和低效率 2.其次是你修改这个类的时候很麻

牛客练习赛7

退役不退坑,以后还是要每周打一场比赛,训练思维了. 看来是很久没敲竞赛代码了,很生疏了.其余几题明天再填~~~ 在Alice和Bob?前的是两个骰?,上?分别写了六个数字. Alice和Bob轮流丢掷骰?,Alice选择第?个骰?,?Bob选择第?个,如果 谁投掷出的数更?,谁就可以获胜. 现在给定这两个骰?上的6个数字,你需要回答是Alice获胜?率更?,还是 Bob获胜?率更?.(请注意获胜?率相同的情况) 输入描述: 第???个数T,表?数据个数.接下来的每?组数据?共有2?,每??有6个

2019-2020-1学期 20192406 《网络空间安全专业导论》第三周学习总结

第六章?低级程序设计语言与伪代码 6.1?计算机操作 我们所用的程序设计语言都必须反映出计算机能够执行的操作类型.让我们通过重述计算机的定义来开始新的讨论:计算机是能够存储.检索和处理数据的可编程电子设备. 这个定义中的操作字包括可编程的.存储.检索和处理.上一章指出了数据和操作数据的指令逻辑上是相同的,它们存储在相同的地方.这就是"可编程的"这个词的意义所在.操作数据的指令和数据一起存储在机器中.要改变计算机对数据的处理,只需要改变指令即可. 存储.检索和处理是计算机能够对数据执行的

vijos1325 桐桐的糖果计划

Description 桐桐是一个快乐的小朋友,他生活中有许多许多好玩的事,让我们一起来看看吧-- 桐桐很喜欢吃棒棒糖.他家处在一大堆糖果店的附近. 但是,他们家的区域经常出现塞车.塞人等情况,这导致他不得不等到塞的车或人走光了他才能去买到他最爱吃的棒棒糖品种.于是,他去找市长帮他修路,使得每两个糖果店之间至少有两条完全不同的路.可是市长经费有限,于是让桐桐找出哪些路被塞住后会使某些糖果店与糖果店间无法到达及最少的修路条数.你能帮助他吃到他最喜爱的糖果吗? 注:1->3->2  和 1->