这个范围对DP不友好,和CF的一道C题非常像,贪心+后悔。

先使用k个优惠券购买k个q最小的(钱不购买则退出),同时把这k个p[i]-q[i]放入小根堆,然后将剩下的n-k个按p升序排序,记小根堆堆顶为top,每次比较p[i]和q[i]+top(相当于反悔,用top的代价把之前的一个优惠券用到这里)

感谢wwb的hack,虽然这题没出数据:当小根堆弹完之后就会出问题了,一个粗暴的解决方法是取堆顶之前判断是否空,若为空则返回极大值。

#include<algorithm>
#include<iostream>
#include<cstdio>
#include<queue>
#define int long long
using namespace std; inline int rd(){
int ret=,f=;char c;
while(c=getchar(),!isdigit(c))f=c=='-'?-:;
while(isdigit(c))ret=ret*+c-'',c=getchar();
return ret*f;
} priority_queue<int> Q; inline void Push(int x){Q.push(-x);}
inline int Top(){return Q.empty()?<<:-Q.top();} const int MAXN=; int n,num,m;
int p[MAXN],q[MAXN];
int vis[MAXN];
int id[MAXN],iid[MAXN];
int ans=,cnt=;
bool cmp1(int x,int y){return q[x]<q[y];}
bool cmp2(int x,int y){return p[x]<p[y];} signed main(){
freopen("shopping.in","r",stdin);
freopen("shopping.out","w",stdout);
n=rd();num=rd();m=rd();
for(int i=;i<=n;i++){
p[i]=rd();q[i]=rd();
id[i]=iid[i]=i;
}
sort(id+,id++n,cmp1);
sort(iid+,iid++n,cmp2);
for(int i=;i<=num;i++){
if(ans+q[id[i]]>m) return cout<<cnt,;
ans+=q[id[i]];cnt++;
}
for(int i=;i<=num;i++) Push(p[id[i]]-q[id[i]]),vis[id[i]]=;
for(int i=;i<=n;i++){
if(ans>m) return cout<<cnt-,;
if(vis[iid[i]]) continue;
if(q[iid[i]]+Top()>p[iid[i]]) {ans+=p[iid[i]],cnt++;continue;}
ans+=q[iid[i]]+Top();cnt++;
Q.pop();Push(p[iid[i]]-q[iid[i]]); }
cout<<cnt-(ans>m);
return ;
}

最新文章

  1. Android 常见的广播 action常量
  2. Windows7下QT5开发环境搭建 分类: QT开发 2015-03-09 23:44 65人阅读 评论(0) 收藏
  3. TweenMax动画库学习(六)
  4. PHP 一个可以过滤非法脚本的函数
  5. mybatis 打印 sql
  6. Mac系统安装Lua(转)
  7. PAT 1055
  8. pdf 电子书分享
  9. POJ - 3062 Borg Maze
  10. 如何彻底的删除MySQL数据库(图文教程)
  11. php cookie的问题
  12. 纯JS.CSS编写的可拖拽并左右分栏的插件(复制代码就能用)
  13. 复旦高等代数II(18级)每周一题
  14. 【转】AJAX 跨域请求 - JSONP获取JSON数据
  15. Ceph与Gluster之开源存储的对比
  16. flex兼容性之Webpack3+postcss+sass+css
  17. 获取 ip ( 第三方接口 )
  18. SQLSERVER误删Windows登录用户验证方式使用Windows身份验证的解决方法
  19. 经典幻灯片插件Swiper
  20. mysql优化利器之explain

热门文章

  1. NSString 是否存在空格
  2. Spring security + oauth2.0 + redis + mybatis plus 搭建微服务
  3. day04 异常
  4. python数据结构转换&amp;格式化
  5. 页面嵌套时js失效解决方法
  6. ICM Technex 2017 and Codeforces Round #400 (Div. 1 + Div. 2, combined) B
  7. 去除List&lt;Object&gt;集合中重复的元素(利用HashSet的特性---无重复元素)
  8. 535 Encode and Decode TinyURL 编码和解码精简URL地址
  9. libev 使用
  10. na 残