[Usaco2012 Feb] Cow Coupons
[Usaco2012 Feb] Cow Coupons
一个比较正确的贪心写法(跑得贼慢。。。)
首先我们二分答案,设当前答案为mid
将序列按照用券之后能省掉的多少排序,那么我们对于两种情况
\(mid \leq k\) 全部取用券后的,取最小的\(mid\)个
排序后我们枚举分界点,对于右边\(p-c\)较大的,我们肯定考虑把k个券用给它们,就可以在左边取\(p\)最小的\(mid-k\)个,和右边的\(c\)最小的\(k\)个即可
这个我们用堆维护即可
#include<bits/stdc++.h>
using namespace std;
#define reg register
typedef long long ll;
#define rep(i,a,b) for(reg int i=a,i##end=b;i<=i##end;++i)
#define drep(i,a,b) for(reg int i=a,i##end=b;i>=i##end;--i)
char IO;
int rd(){
int s=0,f=0;
while(!isdigit(IO=getchar())) if(IO=='-') f=1;
do s=(s<<1)+(s<<3)+(IO^'0');
while(isdigit(IO=getchar()));
return f?-s:s;
}
template <class T> inline void cmax(T &a,T b){ ((a<b)&&(a=b)); }
template <class T> inline void cmin(T &a,T b){ ((a>b)&&(a=b)); }
const int N=5e4+10,P=998244353;
int n,k;
ll m;
struct Node{
int a,b;
bool operator < (const Node __) const {
return a-b<__.a-__.b;
}
} A[N];
priority_queue <int> que;
void clear(){
while(!que.empty()) que.pop();
}
ll s1[N],s2[N];
int Check(int mid){
if(mid<=k) {
clear();
rep(i,1,n) que.push(-A[i].b);
ll res=0;
rep(i,1,mid) res-=que.top(),que.pop();
return res<=m;
} else {
clear();
ll t=0;
rep(i,1,n) {
que.push(A[i].a);t+=A[i].a;
while((int)que.size()>mid-k) t-=que.top(),que.pop();
if((int)que.size()==mid-k) s1[i]=t;
} // 预处理两边最小的几个
ll res=1e18;
rep(i,mid-k,n-k) cmin(res,s1[i]+s2[i+1]); //枚举分界点
return res<=m;
}
}
int main(){
n=rd(),k=rd(),scanf("%lld",&m);
rep(i,1,n) A[i].a=rd(),A[i].b=rd();
sort(A+1,A+n+1);
ll t=0;
drep(i,n,1) {
que.push(A[i].b);t+=A[i].b;
while((int)que.size()>k) t-=que.top(),que.pop();
if((int)que.size()==k) s2[i]=t;
}
int l=1,r=n,res=0;
while(l<=r) {
int mid=(l+r)>>1;
if(Check(mid)) l=mid+1,res=mid;
else r=mid-1;
}
printf("%d\n",res);
}
代码细节可能挂了,如果有hack数据发在评论里谢谢
[Usaco2012 Feb] Cow Coupons的更多相关文章
- 2590: [Usaco2012 Feb]Cow Coupons
2590: [Usaco2012 Feb]Cow Coupons Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 306 Solved: 154[Su ...
- BZOJ2590 [Usaco2012 Feb]Cow Coupons
好吧...想了半天想错了...虽然知道是贪心... 我们每次找没有被买的两种价格最小的牛,比较a = 当前差价最大的 + 当前优惠券价格最小的牛与b = 当前非优惠券价格最小的牛 所以...我们要 先 ...
- 【贪心】【堆】bzoj2590 [Usaco2012 Feb]Cow Coupons
每个物品有属性a,b 考虑在仅仅用光优惠券时的最优方案. 显然是按照b排序,取前K个. 但是我们还要尽可能去取剩余的. 假设朴素地取剩余的话,应该把剩余的对a排序,然后尽量去取. 但是有可能对其用优惠 ...
- USACO 2012 Feb Cow Coupons
2590: [Usaco2012 Feb]Cow Coupons Time Limit: 10 Sec Memory Limit: 128 MB Submit: 349 Solved: 181 [Su ...
- [Usaco 2012 Feb]Cow coupons牛券:反悔型贪心
Description Farmer John needs new cows! There are N cows for sale (1 <= N <= 50,000), ...
- 洛谷P3045 [USACO12FEB]牛券Cow Coupons
P3045 [USACO12FEB]牛券Cow Coupons 71通过 248提交 题目提供者洛谷OnlineJudge 标签USACO2012云端 难度提高+/省选- 时空限制1s / 128MB ...
- BZOJ1631: [Usaco2007 Feb]Cow Party
1631: [Usaco2007 Feb]Cow Party Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 459 Solved: 338[Submit ...
- BZOJ3301: [USACO2011 Feb] Cow Line
3301: [USACO2011 Feb] Cow Line Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 67 Solved: 39[Submit ...
- BZOJ1697: [Usaco2007 Feb]Cow Sorting牛排序
1697: [Usaco2007 Feb]Cow Sorting牛排序 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 387 Solved: 215[S ...
随机推荐
- 单点登录(sso)入门
单点登录的英文名叫做Single Sign On,简称SSO. 在以前,一般我们就单系统,所有的功能都在同一个系统上. 后来,我们为了合理利用资源和降低耦合性,于是把单系统拆分成多个子系统. 比如阿里 ...
- 轻量级搜索工具【Everything】的设置
下面是我对 轻量级搜索工具[Everything]的设置 Everything 下载地址:http://www.voidtools.com/downloads/ 1. 排除 Windows => ...
- 【java】java反射获取属性和属性值,java反射设置属性和属性值
今日份代码如下: /** * * @Author: SXD * @Description: * @Date: create in 2019/9/20 15:39 */ public class Pro ...
- C#使用post方式提交json数据
尝试了一天,尝试了各种方法,一下方法最直接方便. //地址 string _url = "https://www.dXXXayup.ink/api/User/Login"; //j ...
- C#集合中根据多个字段分组 group by linq表达式
void Main() { var empList =new List<Employee> { , FName = , Sex = 'M'}, , FName = , Sex = 'F'} ...
- c#专业的UVC摄像头深控类库-SharpCamera介绍
SharpCamera是专业的UVC摄像头深控类库.允许您在C#代码内修改摄像头的高级参数,比如亮度.对比度.清晰度.色调.饱和度.伽玛值.白平衡.逆光对比.增益.缩放.焦点.曝光.光圈.全景.倾斜. ...
- Go语言(golang)新发布的1.13中的Error Wrapping深度分析
Go 1.13发布的功能还有一个值得深入研究的,就是对Error的增强,也是今天我们要分析的 Error Wrapping. 背景 做Go语言开发的,肯定经常用error,但是我们也知道error非常 ...
- Python——XPath提取某个标签下所有文本
/text()获取指定标签下的文本内容,//text()获取指定标签下的文本内容,包括子标签下的文本内容,比较简单的是利用字符串相加: room_infos = li.xpath('.//a[@cla ...
- 2019 中细软java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.中细软等公司offer,岗位是Java后端开发,因为发展原因最终选择去了中细软,入职一年时间了,也成为了面试官 ...
- webapi 返回类型
参考 大神;https://www.cnblogs.com/landeanfen/p/5501487.html