博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AC日记——聪明的质监员 洛谷 P1314
阅读量:7240 次
发布时间:2019-06-29

本文共 1187 字,大约阅读时间需要 3 分钟。

 

思路:

  二分;

 

代码:

#include 
using namespace std;#define maxn 200005#define ll long long#define INF 0x7fffffffll n,m,sum[maxn],wi[maxn],vi[maxn],s;ll li[maxn],ri[maxn],sumn[maxn],flag;inline void in(ll &now){ char Cget=getchar();now=0; while(Cget>'9'||Cget<'0')Cget=getchar(); while(Cget>='0'&&Cget<='9') { now=now*10+Cget-'0'; Cget=getchar(); }}int solve(ll val){ sum[0]=0,sumn[0]=0; for(ll i=1;i<=n;i++) { sum[i]=sum[i-1],sumn[i]=sumn[i-1]; if(wi[i]>=val) sum[i]+=vi[i],sumn[i]++; } ll res=0; for(ll i=1;i<=m;i++) res+=(sumn[ri[i]]-sumn[li[i]-1])*(sum[ri[i]]-sum[li[i]-1]); if(res>=s) { flag=res-s; return false; } else { flag=s-res; return true; }}int main(){ in(n),in(m),in(s); for(ll i=1;i<=n;i++) in(wi[i]),in(vi[i]); for(ll i=1;i<=m;i++) in(li[i]),in(ri[i]); ll l=0,r=1000000,ans,mid; while(l<=r) { mid=l+r>>1; if(solve(mid)) ans=mid,r=mid-1; else l=mid+1; } solve(ans);ll ansl=flag; solve(ans-1);ll ansr=flag; printf("%lld",min(ansl,ansr)); return 0;}

 

转载于:https://www.cnblogs.com/IUUUUUUUskyyy/p/6957620.html

你可能感兴趣的文章
MySQL 用户管理----匿名用户登陆问题解析
查看>>
模拟android访问服务器
查看>>
ACL、Network和prefix-list的掩码与反掩码区别(包含奇数和偶数)古老的配置
查看>>
结巴分词使用
查看>>
PopupWindow gridview 无法响应Item
查看>>
我的友情链接
查看>>
数据持久化之SQLite
查看>>
android4.1+ ListView 不滚动
查看>>
3. 类
查看>>
Axure快速创建原型的示例
查看>>
ssh连接错误的解决办法
查看>>
mac 下面wireshark 找不到网卡
查看>>
我的友情链接
查看>>
Python 6.3 文档测试
查看>>
mysteel Sql
查看>>
Dockerfile中的权限问题及工作目录问题(USER WORKDIR)
查看>>
c#文件读取和写入的方式总结
查看>>
Djano XSS的转义
查看>>
springMVC项目的web.xml文件
查看>>
基础不牢,地动山摇 - OSI模型
查看>>