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 ...
随机推荐
- 【AngularJS学习笔记】AngularJS表单验证
AngularJS表单验证 AngularJS提供了一些自带的验证属性 1.novalidate:添加到HTML的表单属性中,用于禁用浏览器默认的验证. 2.$dirty 表单有填写记录 3.$v ...
- PostgreSQL Replication之第六章 监控您的设置(4)
6.4 处理监控工具 还有几个监控工具可以使您的日常生活更轻松. 其中最流行的监控工具是Nagios.它被广泛地使用,也支持各种软件组件. 要使用 Nagios 来监控您的 PostgreSQL 集群 ...
- <Sicily>Catch the thief
一.题目描述 A thief has robbed a bank in city 1 and he wants to go to city N. The police know that the th ...
- Centos安装masscan
1.yum install git gcc make libpcap-devel2.git clone https://github.com/robertdavidgraham/masscan3.cd ...
- python-生成器即send()用法
参考链接: http://www.mamicode.com/info-detail-2399245.html 作者首先介绍了生成器的作用:是为了让程序员可以更简单的编写用来产生值的序列的代码,然后又介 ...
- 紫书 例题 10-7 UVa 10820 (欧拉函数)
这道题要找二元组(x, y) 满足1 <= x, y <= n 且x与y互素 那么我就可以假设x < y, 设这时答案为f(n) 那么答案就为2 * f(n) +1(x与y反过来就乘 ...
- Android SDK Manager代理设置
1.SDK Manager中打开 Tools—>Manage Add-on Sites…—>User Defined Sites 2.New …输入: http://android-mir ...
- 【转】NPOI使用手册
[转]NPOI使用手册 NPOI使用手册 目录 1.认识NPOI 2. 使用NPOI生成xls文件 2.1 创建基本内容 2.1.1创建Workbook和Sheet 2.1.2创建DocumentSu ...
- jsbrige
http://www.cnblogs.com/zhangqie/p/6724252.html
- Centos7 网络出错(failed to start LSB: Bring up/down networking )
这是我更换了VM虚拟机内存,重启后无法连接网络. 然后这是因为NetworkManager.service这个程序造成 解决方法: systemctl disable NetworkManager.s ...