题目大意

有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\le 1,000\)),接下来n行每行三个正整数,分别表示c[i], a[i], b[i] (\(c[i]\le 1,000, 1\le a[i]<b[i]\le 10^9\))。

下面一行一个正整数\(q (q\le 1,000,000\)),接下来\(q\)行每行三个非负整数\(m, k, s (1\le m\le 10^9, 1\le k\le 100,000, 0\le s\le 10^9)\)。

分析

离线后将a,m快排

背包一下求出每种c需要的最小的b最大是多少

O(快排+n*k)

solution

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <cmath>
#include <algorithm>
using namespace std;
const int N=1007;
const int M=1000007;
const int V=100007;
const int INF=2147483647; inline int rd(){
int x=0;bool f=1;char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=0;
for(;isdigit(c);c=getchar()) x=x*10+c-48;
return f?x:-x;
} int n,m; int ans[M]; struct node{
int a,b,c,id;
node(int aa=0,int bb=0,int cc=0,int ii=0){a=aa;b=bb;c=cc;id=ii;}
}a[N],q[M]; bool cmpa(node x,node y){return x.a<y.a;} int f[V]; void in(int w,int bb){
for(int i=V-1;i>=w;i--)
if(f[i-w]) f[i]=max(f[i],min(f[i-w],bb));
} int main(){
int i,j,x,y,z; n=rd();
for(i=1;i<=n;i++){
z=rd(),x=rd(),y=rd();
a[i]=node(x,y,z);
} m=rd();
for(i=1;i<=m;i++){
x=rd(),z=rd(),y=x+rd()+1;
q[i]=node(x,y,z,i);
} sort(a+1,a+n+1,cmpa);
sort(q+1,q+m+1,cmpa); f[0]=INF;
for(j=1,i=1;i<=m;i++){
for(;j<=n&&a[j].a<=q[i].a;j++) in(a[j].c,a[j].b);
ans[q[i].id]=q[i].b<=f[q[i].c];
} for(i=1;i<=m;i++) puts(ans[i]?"TAK":"NIE"); return 0;
}

最新文章

  1. VS2015常用快捷键总结
  2. C#中的readonly与const的比较
  3. 用javascript简单封装AJAX
  4. Jenkins通过FTP上传站点太多文件导致太慢且不稳定,切换为压包上传再解压的思路(asp.net)
  5. 在IOS输入框中 键盘上显示“搜索”
  6. 【转】java_web开发入门
  7. 【leetcode】Add Two Numbers(middle) ☆
  8. 【Java】IO流简单分辨
  9. angular下H5上传图片(可多张上传)
  10. 为MyEclipse加入自己定义凝视
  11. 整个网站灰度显示css代码
  12. C# Cache 设定过期时间的方法
  13. html5水平方向重力感应
  14. MYSQL的基本函数 (加密函数)
  15. Django admin 产生&#39;WSGIRequest&#39; object has no attribute &#39;user&#39;的错误
  16. centos yum出现no module named yum
  17. 【redis】linux上的安装与配置(详细图解)
  18. Shell脚本编程入门到放弃
  19. 关于Java中按值传递和按引用传递的问题详解
  20. Redis缓冲区设置

热门文章

  1. Ubuntu编译Android源码过程中的空间不足解决方法
  2. 【Python全栈-JavaScript】JavaScript-字符串详解
  3. Java中的ArrayList类和LinkedList
  4. python从列表中删除相邻重复元素
  5. 传智 Python基础班+就业班+课件 【最新完整无加密视频课程】
  6. 如何用纯 CSS 创作一个小球反弹的动画
  7. destoon 支付异步接口文件 notify.php 调试方式
  8. DeepFaceLab小白入门(2):软件安装!
  9. Django之FileField字段
  10. Linux学习-善用判断式