【NOIP 模拟题】[T1]连锁店(贪心)
来源:互联网 发布:php打印实心菱形 编辑:程序博客网 时间:2024/05/17 06:07
【题解】【贪心】
【把店按照ai-bi从小到大排序,然后每个店不断兑换直到不能换为止。假如先选了ai-bi大的,后选了 ai-bi小的,那么把前面的换成后面的,剩下的瓶子更多。ai-bi相等的顺序随便,因为总能把ai 最小的选满】
【由于范围很大,所以要用无符号整型,所以要判断ai和bi的大小关系,如果bi>ai,且ai<=s,那么就输出-1,否则,bi>ai的情况不能加入数据中】
#include<queue>#include<cstdio>#include<cstring>#include<algorithm>#define ll unsigned long longusing namespace std;struct node{ll give,back,lose;int opt;}a[100010];int n;ll m,cnt,ans;int tmp(node x,node y){return (x.lose<y.lose||x.lose==y.lose&&x.give<y.give);}int main(){freopen("store.in","r",stdin);freopen("store.out","w",stdout);int i,j;scanf("%d%I64lu",&n,&m);for(i=1;i<=n;++i) { ll x,y; scanf("%I64lu%I64lu",&x,&y); if(y>=x&&m>=x) {printf("-1\n"); return 0;} a[++cnt].give=x; a[cnt].back=y; a[cnt].lose=x-y; }sort(a+1,a+cnt+1,tmp);for(i=1;i<=cnt;++i) if(m>=a[i].give) { ll sum=m-a[i].give;ll k=sum/a[i].lose; m-=(k+1)*a[i].lose; ans+=k+1; }printf("%I64lu\n",ans);return 0;}
0 0
- 【NOIP 模拟题】[T1]连锁店(贪心)
- 【NOIP 模拟题】[T1]return(模拟)
- 【NOIP 模拟题】[T1] 等差数列(dp)
- 【NOIP 模拟题】[T1](递推+乱搞)
- 【NOIP 模拟题】[T1]质数生成器(线性筛+乱搞)
- 【NOIP 模拟题】[T1]数列(找规律+欧几里得算法)
- SSL2560 2016年提高组模拟试题 连锁店(贪心)
- NOIP模拟(10.19)T1 打牌
- NOIP模拟(10.20)T1 刮刮卡
- NOIP模拟(20171023)T1 fibonacci
- NOIP模拟(10.22)T1 姓名匹配
- NOIP模拟(10.23)T1 Fibonacci
- NOIP模拟(10.24)T1 建设图
- NOIP模拟(20171024)T1 Graph
- NOIP模拟(20171026)T1 抄代码
- NOIP模拟(10.26)T1 抄代码
- NOIP模拟(10.27)T1 寿司
- NOIP模拟(10.30)T1 比赛
- zabbix监控nginx(python脚本)
- Android近期阅读书籍
- 1508-张晨曦总结《2016年-11月-9日》【连续19天总结】
- 谈谈云GIS的建设成本
- 当前iframe调用另一个iframe中的元素以及方法
- 【NOIP 模拟题】[T1]连锁店(贪心)
- openwrt添加SSH等应用
- 脱水缩合(字符串处理)
- java语言基础复习03
- Linux系统编程之错误处理:errno和perror,strerror
- 键值对数组如何按照"键"进行排序?
- 开源Andord库集锦
- myeclipse10配置tomcat详细过程
- Google Zxing 二维码生成与解析