【BZOJ2794】[Poi2012]Cloakroom

Description

有n件物品,每件物品有三个属性a[i], b[i], c[i] (a[i]<b[i])。
再给出q个询问,每个询问由非负整数m, k, s组成,问是否能够选出某些物品使得:
1. 对于每个选的物品i,满足a[i]<=m且b[i]>m+s。
2. 所有选出物品的c[i]的和正好是k。

Input

第一行一个正整数n (n<=1,000),接下来n行每行三个正整数,分别表示c[i], a[i], b[i] (c[i]<=1,000, 1<=a[i]<b[i]<=10^9)。
下面一行一个正整数q (q<=1,000,000),接下来q行每行三个非负整数m, k, s (1<=m<=10^9, 1<=k<=100,000, 0<=s<=10^9)。

Output

输出q行,每行为TAK (yes)或NIE (no),第i行对应第i此询问的答案。

Sample Input

5
6 2 7
5 4 9
1 2 4
2 5 8
1 3 9
5
2 7 1
2 7 2
3 2 0
5 7 2
4 1 5

Sample Output

TAK
NIE
TAK
TAK
NIE

题解:容易想到离线处理,先将物品和询问都按A从小到大排序,一边将物品加入背包一边处理询问,但是还有一个限制B,怎么搞?

发现我们的背包是一个判断可行性的背包,也就是说里面的数都是0或1,这其实是一种空间的浪费,我们不妨想办法将这些空间利用起来,作为B的限制。

于是令f[i]表示选出C的和为i时,背包中B值最小的那个物品的B值最大是多少(因为B越大越优,所以我们尽可能将B大的装入背包),然后查询的时候只要判断f[i]是否大于m+s就好了。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int f[1000010];
struct item
{int A,B,C;
}p[1010];
int n,m,mk;
struct query
{int l,r,v,org;
}q[1000010];
int ans[1000010];
bool cmp1(item a,item b)
{return a.A<b.A;
}
bool cmp2(query a,query b)
{return a.l<b.l;
}
int rd()
{int ret=0,f=1;   char gc=getchar();while(gc<'0'||gc>'9')  {if(gc=='-')f=-f;  gc=getchar();}while(gc>='0'&&gc<='9')  ret=ret*10+gc-'0',gc=getchar();return ret*f;
}
int main()
{scanf("%d",&n);int i,j,k;for(i=1;i<=n;i++)    p[i].C=rd(),p[i].A=rd(),p[i].B=rd();scanf("%d",&m);for(i=1;i<=m;i++)    q[i].l=rd(),q[i].v=rd(),q[i].r=rd(),mk=max(mk,q[i].v),q[i].org=i;sort(p+1,p+n+1,cmp1);sort(q+1,q+m+1,cmp2);f[0]=1<<30;for(i=j=1;i<=m;i++){for(;p[j].A<=q[i].l&&j<=n;j++){for(k=mk;k>=p[j].C;k--)   f[k]=max(f[k],min(f[k-p[j].C],p[j].B));}ans[q[i].org]=(q[i].l+q[i].r<f[q[i].v]);}for(i=1;i<=m;i++){if(ans[i])  printf("TAK\n");else  printf("NIE\n");}return 0;
}

转载于:https://www.cnblogs.com/CQzhangyu/p/7007700.html

【BZOJ2794】[Poi2012]Cloakroom 离线+背包相关推荐

  1. 一句话题解(20170801~20170125)

    8.1 bzoj 4720 noip2016 换教室 floyd预处理+期望(薛定谔的猫) bzoj 4318 OSU! 三次函数期望值 从一次.二次推得 8.2 bzoj 1076 状压+期望DP ...

  2. eui插件不显示人物服务器,WOW下了个eui插件,不当心把伤害统计给关掉了结果现在死活找不到在哪。。...

    Skada 伤害统计插件, 统计个人和团队的伤害,治疗,承受伤害等信息, 设置命令 /skada eui插件的可开关单体插件内容 包括五部分:DBM,MSBT,集合石,Skada,稀有检测. 此页设置 ...

  3. 基于动态背包的多场景广告序列投放算法

    简介:电商广告是广告主接触其目标用户的重要手段.普遍的广告目标是在预算约束下,在一定时间范围内最大化广告主累计收入.实际应用中,广告的转化通常需要对同一用户进行多次曝光,直到该用户最终购买为止.但是, ...

  4. 3c技能和背包需要改建吗?_开发人员在背包中需要什么软技能?

    3c技能和背包需要改建吗? by Ewa Mitulska-Wójcik 伊娃·米图尔斯卡(EwaMitulska-Wójcik) 开发人员在背包中需要什么软技能? (What soft skills ...

  5. VS Code 离线安装插件方法

    本文以离线安装 C/C++ 插件为例进说明,其它语言的插件的离线安装方法类似. 离线安装 C/C++ 插件相对比较麻烦一些,主要是因为 C/C++ 插件还依赖其他需要在线下载的组件: C/C++ la ...

  6. 离线安装Visual Studio Code插件

    在使用Visual Studio Code 开发时候,有时可能会碰到需要离线安装插件的情况.这时候就需要单独下载插件包,本文就以C/C++插件包为例说明如何离线安装Visual Studio Code ...

  7. 如何下载flash离线安装包

    如何下载flash离线安装包 CreateTime--2018年4月14日16:02:13 Author:Marydon 1.下载地址 UpdateTime--2018年5月13日16点55分 ppa ...

  8. nexus 离线下载中央库索引

    nexus可以在线更新中央仓库索引,但是更新速度慢,而且很有可能下载的索引不全.下面介绍一种离线更新中央仓库索引的方式,速度快并且可靠. 1.访问http://repo.maven.apache.or ...

  9. Markdown here 离线下载安装

    1. 下载地址: http://www.xdowns.com/app/375878.html 2. 离线安装 国内用户可以在第三方插件网站下载拓展程序,常用的网站有 Extfans.Crx4Chrom ...

  10. BZOJ 3585: mex( 离线 + 线段树 )

    离线, 询问排序. 先处理出1~i的答案, 这样可以回答左端点为1的询问.完成后就用seq(1)将1到它下一次出现的位置前更新. 不断这样转移就OK了 ------------------------ ...

最新文章

  1. Owncloud-X安装配置
  2. Git使用sublime_text作用默认编辑器
  3. BZOJ 4553: [Tjoi2016Heoi2016]序列
  4. Oracle学习(十四)分表分区
  5. 已知思科ASA设备漏洞仍在其新版本中存在
  6. 亿佰特物联网通信专家:蓝牙模块和 Zigbee协议模块的区别
  7. Ubuntu linux上Nautilus安装RabbitVCS扩展
  8. Spring Boot 导出Excel表格
  9. 视频工作者应该知道的几个网站
  10. 3D视觉(二)四元数简要说明
  11. Servlet-请求匹配,创建Servlet的三种方式,API 1
  12. java 安卓 教学视频教程下载,老罗Android开发视频教程[共9大知识点] 下载
  13. 如何查看java安装成功_如何查看java是否安装成功
  14. IE离线脱机安装,解决IE11安装时需要“获取更新”
  15. CSDN的MD编辑器【写作技巧】
  16. matlab 期权分析,matlab程序优化 (期权计算为例)
  17. 英文DIAMAUND钻石
  18. 前端面试题总结以及vue在工作中常见的错误
  19. python输入年月日输出年月日_新手学习必看的0基础入门Python与python的输入输出...
  20. 进阶39 奇妙的数字

热门文章

  1. 阿里云服务器租用价格表(2021年最新版)
  2. ECCV 2020 论文大盘点-语义分割篇
  3. Android 吸顶布局的写法
  4. 020-机器学习背后的思维-针对入门小白的概念算法及工具的朴素思考
  5. java在pdf文件中插入字_怎么在PDF文件中添加文字文本框
  6. 阿尔伯塔大学 计算机科学,阿尔伯塔大学计算机科学专业入学要求及申请费用盘点...
  7. 自然语言处理技术的进展和趋势
  8. WIN10下msi GE62 1077 无线热点掉线问题处理(更新:取消自动关闭热点
  9. map、set、multimap、multiset、hash_map、hah_set、hash_multimap、hash_multiset
  10. Linux 操作系统 之 虚拟内存