题目描述

有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。

输入

第一行一个正整数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)。

输出

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

样例输入

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

样例输出

TAK
NIE
TAK
TAK
NIE
发现在线回答每个询问时间复杂度较高,因此考虑离线。
将所有物品按a排序,所有询问按m排序。设f[i]表示物品c的和为i时选取的b的最小值最大是多少。
按顺序选取物品进行01背包转移。
对于每个询问只要判断f[k]是否>=s+m就好了。
#include<set>
#include<map>
#include<cmath>
#include<stack>
#include<queue>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
struct node
{int a;int b;int c;int id;
}x[1010],y[1200000];
int f[100010];
int ans[1200000];
bool cmp(node x,node y)
{return x.a<y.a;
}
int n,m;
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d%d%d",&x[i].c,&x[i].a,&x[i].b);}scanf("%d",&m);for(int i=1;i<=m;i++){scanf("%d%d%d",&y[i].a,&y[i].b,&y[i].c);y[i].id=i;}sort(x+1,x+n+1,cmp);sort(y+1,y+m+1,cmp);int num=1;f[0]=1e9;for(int i=1;i<=m;i++){while(num<=n&&x[num].a<=y[i].a){for(int k=100000;k>=x[num].c;--k){f[k]=max(f[k],min(f[k-x[num].c],x[num].b)); }num++;}if(f[y[i].b]>y[i].a+y[i].c){ans[y[i].id]=1;}}for(int i=1;i<=m;i++){ans[i]?printf("TAK\n"):printf("NIE\n");}
}

转载于:https://www.cnblogs.com/Khada-Jhin/p/9633107.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. 杨森翔的书法:正月十六试笔【圆光、斗方】
  2. JUC里面的相关分类|| java并发编程中,关于锁的实现方式有两种synchronized ,Lock || Lock——ReentrantLock||AQS(抽象队列同步器)
  3. 【中级软考】位示图bitmap是什么?(利用二进制的一位来表示磁盘中的一个盘块的使用情况)
  4. Java Bullshifier –生成大量随机代码库
  5. 求一个序列中最大的子序列_最大的斐波那契子序列
  6. 如何打造高大上的微信朋友圈 打造微信高逼格朋友圈教程
  7. python测验3_基于Python3的漏洞检测工具
  8. Express 常用中间件 body-parser 实现解析
  9. WebGL编程指南理论分析之物体层次模型(局部运动)
  10. c#listbox使用详解和常见问题解决
  11. KVM系列之硬件管理
  12. 5.8Ghz微波雷达感应技术,智能雷达传感器,人体感应技术方案
  13. 编程珠玑第一章习题解答
  14. 权重股启动意味着什么
  15. 关于马克思《青年在选择职业时的考虑》的读书报告
  16. html5简介及常用标签
  17. 聚合广告SDK文档(Kotlin)
  18. docker搭建mongodb高可用集群
  19. Linux编译x86架构内核出现_stack_chk_guard未定义错误
  20. Scrum 计划、站会、评审、回顾会议介绍

热门文章

  1. 超酷HTML5 3D动画精选
  2. 请领导过目文件怎么说_职场话题:当领导说“你定吧”,你会怎么做?
  3. h264流头类型分辨方法
  4. Dnsmasq+ipset+iptables基于域名的流量管理
  5. 《计算机网络教程》(微课版 第五版)第七章 网络安全 课后习题及答案
  6. 同余式 和 费马小定理
  7. C++算法之-小球问题
  8. mysql MERGE 错误(differently defined or of non-MyISAM type)
  9. 混淆矩阵 Confusion Matrix
  10. 街头篮球服务器一直维护,《街头篮球》2.8新版本停服维护更新公告