首页 技术 正文
技术 2022年11月9日
0 收藏 849 点赞 3,496 浏览 1271 个字

这个范围对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 ;
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,088
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,565
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,413
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,186
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,822
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,905