博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ2794 : [Poi2012]Cloakroom
阅读量:6591 次
发布时间:2019-06-24

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

考虑离线,将物品和询问都按a从小到大排序。

然后对于当前处理的询问,将所有a不超过它的物品都加入背包中。

设f[i]表示和为i时min(b)的最大值,若f[k]>m+s,则TAK。

时间复杂度$O(q\log q+nk)$。

 

#include
#include
const int N=1000010,M=100000;int n,m,i,j,k,f[M+1];bool ans[N];struct P{int a,b,c,p;}a[1010],b[N];inline bool cmp(P a,P b){return a.a
='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';}int main(){ for(read(n),i=1;i<=n;i++)read(a[i].c),read(a[i].a),read(a[i].b); for(read(m),i=1;i<=m;i++)read(b[i].a),read(b[i].c),read(b[i].b),b[i].b+=b[i].a,b[i].p=i; for(std::sort(a+1,a+n+1,cmp),std::sort(b+1,b+m+1,cmp),f[0]=2000000001,i=j=1;i<=m;i++){ for(;j<=n&&a[j].a<=b[i].a;j++)for(k=M;k>=a[j].c;k--)up(f[k],min(f[k-a[j].c],a[j].b)); ans[b[i].p]=f[b[i].c]>b[i].b; } for(i=1;i<=m;i++)puts(ans[i]?"TAK":"NIE"); return 0;}

  

转载地址:http://bmdio.baihongyu.com/

你可能感兴趣的文章
Knockout.Js官网学习(创建自定义绑定)
查看>>
win10 x64中 windbg x64 安装配置符号库
查看>>
python 抽象类、抽象方法、接口、依赖注入、SOLIP
查看>>
笔记1
查看>>
POJ1068 Parencodings 解题报告
查看>>
字符串连接[不用库函数]
查看>>
使用Hystrix实现自动降级与依赖隔离-微服务
查看>>
Parcelbale接口
查看>>
新建一个express工程,node app无反应
查看>>
Python去掉字符串中空格的方法
查看>>
[转] 用GDB调试程序(五)
查看>>
OCM_第十一天课程:Section5 —》数据仓库
查看>>
水晶报表
查看>>
kettle-多文件合并
查看>>
MyEclipse6.5的反编译插件的安装
查看>>
Jenkins + Ansible + Gitlab之ansible篇
查看>>
cogs 539. 牛棚的灯
查看>>
SQL SERVER 备份数据库到指定路径语句
查看>>
3.Knockout.Js(属性绑定)
查看>>
v140平台工具集与v110工具集选择
查看>>