POJ 3040 贪心
贪心好题
……….
思路:
从大到小凑C 如果不够 再从小到大补满(超过)C
//By SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n,c,ans,flag,vis[21];
struct Money{int amount,value;}money[100];
bool cmp(Money a,Money b){return a.value<b.value;}
int main(){
scanf("%d%d",&n,&c);
for(int i=1;i<=n;i++)
scanf("%d%d",&money[i].value,&money[i].amount);
sort(money+1,money+1+n,cmp);
while(1){
memset(vis,0,sizeof(vis));
int sum=c;
for(int i=n;i;i--)
if(sum>0&&money[i].amount){
int temp=min(money[i].amount,sum/money[i].value);
if(temp>0)sum-=money[i].value*temp,vis[i]+=temp;
}
for(int i=1;i<=n;i++)
if(sum>0&&money[i].amount&&money[i].value>=sum){
sum-=money[i].value;vis[i]++;break;
}
if(sum>0)break;
for(int i=1;i<=n;i++)
money[i].amount-=vis[i];
ans++;
}
printf("%d\n",ans);
}
卡时过得…
然后我发现 诶呦 一次可以同时消很多 然后就0msAC了,,,,
//By SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n,c,ans,flag,vis[21];
struct Money{int amount,value;}money[100];
bool cmp(Money a,Money b){return a.value<b.value;}
int main(){
scanf("%d%d",&n,&c);
for(int i=1;i<=n;i++)
scanf("%d%d",&money[i].value,&money[i].amount);
sort(money+1,money+1+n,cmp);
while(1){
memset(vis,0,sizeof(vis));
int sum=c,temp=0x3ffffff;
for(int i=n;i;i--)
if(sum>0&&money[i].amount){
int temp=min(money[i].amount,sum/money[i].value);
if(temp>0)sum-=money[i].value*temp,vis[i]+=temp;
}
for(int i=1;i<=n;i++)
if(sum>0&&money[i].amount&&money[i].value>=sum){
sum-=money[i].value;vis[i]++;break;
}
if(sum>0)break;
for(int i=1;i<=n;i++){
if(!vis[i])continue;
temp=min(temp,money[i].amount/vis[i]);
}
for(int i=1;i<=n;i++){
money[i].amount-=vis[i]*temp;
}
ans+=temp;
}
printf("%d\n",ans);
}
POJ 3040 贪心的更多相关文章
- POJ 3040 Allowance【贪心】
POJ 3040 题意: 给奶牛发工资,每周至少 C 元.约翰手头上有面值V_i的硬币B_i个,这些硬币的最小公约数为硬币的最小面值.求最多能发几周? 分析: 贪心策略是使多发的面额最小(最优解).分 ...
- 【贪心】Allowance POJ 3040
题目链接:http://poj.org/problem?id=3040 题目大意:你有n种不同面值的硬币,面值为vi的有bi个."硬币的面额均匀地分配下一个更大的面额",即下一个更 ...
- POJ 3040 Allowance 贪心
这题目的贪心思路还是有一点细节问题的. 还没有证明,据说是因为题目给的条件是每个价格是比它小的价格的倍数才能这么贪心的. 思路如下: 假设要给奶牛的钱为C 1)从大面值到小面值一次拿钱,能拿多少拿多少 ...
- 【POJ - 3040】Allowance(贪心)
Allowance 原文是English,这里就放Chinese了 Descriptions: 作为创纪录的牛奶生产的奖励,农场主约翰决定开始给Bessie奶牛一个小的每周津贴.FJ有一套硬币N种(1 ...
- POJ - 1017 贪心训练
Packets Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 59725 Accepted: 20273 Descrip ...
- POJ 2376 贪心
题意:FJ希望它的牛做一些清洁工作.有N只牛和T个时间段,每只牛可以承担一段时间内的工作.FJ希望让最小数量的牛覆盖整个T,求出其数量.若无法覆盖整个T,则输出-1. 分析:首先要注意T表示T个时间段 ...
- poj 1328 贪心
/* 贪心.... 处理处每个点按照最大距离在x轴上的映射 然后我们就有了一些线段 目的是选取尽量少的点 使得每个线段内都有点出现 我们按照左端点排序 然后逐一处理 假设第一个雷达安在第一个线段的右端 ...
- Yogurt factory(POJ 2393 贪心 or DP)
Yogurt factory Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8205 Accepted: 4197 De ...
- Cleaning Shifts(POJ 2376 贪心)
Cleaning Shifts Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15143 Accepted: 3875 ...
随机推荐
- 【DNN 系列】 下载安装
1.下载 http://dotnetnuke.codeplex.com/releases/view/119857 2.安装 下载完毕 因为 IIS 7 采用了更安全的 web.config 管理机制, ...
- 未能加载文件或程序集“MICROSOFT.REPORTVIEWER.WEBFORMS …
此类问题说明没有安装 REPORT .请下载 ReportViewer.msi 安装包. 和sqlsysclrtypes.msi 两个都是对应版本的安装包. 这样再次启动就不会报错了.
- vue中Object.defineProperty用法
function def (obj, key, val, enumerable) { Object.defineProperty(obj, key, { value: val, enumerable: ...
- bzoj2124 等差子序列(树状数组+hash)
题意 给你一个1~n排列,问有没有一个等差数列(长度至少为3) 题解 我居然自己想到了正解. 但我最后写挂了,所以我又看了题解. 我们维护了一个以权值为下标的01序列. 我们扫描整个序列.对于每一个正 ...
- [NOIP2010提高组]引水入城
题目:洛谷P1514.Vijos P1777.codevs1066. 题目大意:有一个$n×m$的矩阵,每个点都有一个高度,可以在第一行的任意点建立蓄水厂.现在要把水输到最后一行的所有点上,规定水只能 ...
- 公路通行税Ceoi99(BFS+图的直径)
公路通行税(Ceoi99) 版权声明:本篇随笔版权归作者YJSheep(www.cnblogs.com/yangyaojia)所有,转载请保留原地址! 在PALMIA国家内,有N个城市由公路相连(每条 ...
- ids for this class must be manually assigned before calling save():Xxx
把Xxx.hbm.xml主键生成策略改成identity
- leetcode笔记:Range Sum Query - Mutable
一. 题目描写叙述 Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), ...
- Android实战简易教程-第二十六枪(基于ViewPager实现微信页面切换效果)
1.头部布局文件top.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...
- Java中二进制字节与十六进制互转
在Java中字节与十六进制的相互转换主要思想有两点: 1.二进制字节转十六进制时,将字节高位与0xF0做"&"操作,然后再左移4位,得到字节高位的十六进制A;将字节低位与0 ...