2794: [Poi2012]Cloakroom

Time Limit: 20 Sec  Memory Limit: 128 MB
Submit: 231  Solved: 155
[Submit][Status][Discuss]

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

HINT

Source

鸣谢Oimaster

[Submit][Status][Discuss]
将询问看作,考虑所有a <= m的物品,用他们凑成c的和为k的情况下,最小的b的最大值是多少 如果这个值大于m + s,说明有解,否则无解 那么,将询问按照m升序,物品按照a升序排好,剩下的就是普通的背包问题了

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<vector>
#include<queue>
#include<set>
#include<map>
#include<stack>
#include<bitset>
#include<ext/pb_ds/priority_queue.hpp>
using namespace std;const int maxn = 1E3 + 10;
const int maxm = 1E6 + 10;
const int N = 100001;struct data{int a,b,c; data(){}data(int a,int b,int c): a(a),b(b),c(c){}bool operator < (const data &B) const {return a < B.a;}
}D[maxn];struct Query{int m,k,s,Num; Query(){}Query(int m,int k,int s,int Num): m(m),k(k),s(s),Num(Num){}bool operator < (const Query &B) const {return m < B.m;}
}Q[maxm];int n,m,Max,f[N];
bool Ans[maxm];void Insert(int g)
{for (int i = Max; i >= D[g].c; i--)if (f[i - D[g].c]) f[i] = max(f[i],min(f[i - D[g].c],D[g].b));
}int getint()
{char ch = getchar(); int ret = 0;while (ch < '0' || '9' < ch) ch = getchar();while ('0' <= ch && ch <= '9')ret = ret*10 + ch - '0',ch = getchar();return ret;
}int main()
{#ifdef DMCfreopen("DMC.txt","r",stdin);#endifn = getint();for (int i = 1; i <= n; i++){int c = getint(),a,b;a = getint(); b = getint();D[i] = data(a,b,c);}sort(D + 1,D + n + 1);m = getint();for (int i = 1; i <= m; i++){int m = getint(),k,s;k = getint(); s = getint();Q[i] = Query(m,k,s,i);Max = max(Max,k);}sort(Q + 1,Q + m + 1);int now = 1; f[0] = ~0U>>1;for (int i = 1; i <= m; i++){while (now <= n && Q[i].m >= D[now].a) Insert(now++);Ans[Q[i].Num] = f[Q[i].k] > Q[i].m + Q[i].s ? 1 : 0;}for (int i = 1; i <= m; i++)if (Ans[i]) puts("TAK"); else puts("NIE");return 0;
}

2794: [Poi2012]Cloakroom相关推荐

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

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

  2. Bzoj3060 [Poi2012]Tour de Byteotia

    3060: [Poi2012]Tour de Byteotia Time Limit: 30 Sec  Memory Limit: 256 MB Submit: 251  Solved: 161 De ...

  3. 洛谷 P3539 [POI2012]ROZ-Fibonacci Representation 解题报告

    P3539 [POI2012]ROZ-Fibonacci Representation 题意:给一个数,问最少可以用几个斐波那契数加加减减凑出来 多组数据10 数据范围1e17 第一次瞬间yy出做法, ...

  4. BZOJ 2788[Poi2012]Festival

    题面: 2788: [Poi2012]Festival Time Limit: 30 Sec  Memory Limit: 64 MB Submit: 418  Solved: 190 [Submit ...

  5. 【BZOJ2797】[Poi2012]Squarks 暴力乱搞

    [BZOJ2797][Poi2012]Squarks Description 设有n个互不相同的正整数{X1,X2,...Xn},任取两个Xi,Xj(i≠j),能算出Xi+Xj. 现在所有取法共n*( ...

  6. 【BZOJ2791】[Poi2012]Rendezvous 倍增

    [BZOJ2791][Poi2012]Rendezvous Description 给定一个n个顶点的有向图,每个顶点有且仅有一条出边. 对于顶点i,记它的出边为(i, a[i]). 再给出q组询问, ...

  7. bzoj 2803: [Poi2012]Prefixuffix(双Hash)

    2803: [Poi2012]Prefixuffix Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 413  Solved: 167 [Submit] ...

  8. P3540 [POI2012]SQU-Squarks

    题目传送门:P3540 [POI2012]SQU-Squarks 题面解释的非常不清楚,总之就是有 nnn 个数,x[]x[]x[],它们两两组合,对每一对求和,放到 a[]a[]a[] 里,此时 a ...

  9. [BZOJ2796][Poi2012]Fibonacci Representation

    由于是斐波那契数列,所以$x_i+x_j<=x_k,i<j<k$ 所以猜测可以贪心选择两边近的数处理. 1 #include<cstdio> 2 #include< ...

  10. BZOJ 2793: [Poi2012]Vouchers(调和级数)

    Time Limit: 20 Sec  Memory Limit: 64 MB Submit: 582  Solved: 250 [Submit][Status][Discuss] Descripti ...

最新文章

  1. OSChina 周六乱弹 —— 小明和网关超经典的故事~
  2. 基于ASP.NET的lucene.net全文搜索(一)
  3. 超级计算机在线解方程,量子计算机10秒可得超级计算机百年运算结果
  4. Nginx如何限流?
  5. [POJ1155]TELE
  6. 【11GR2 RAC】如何开启归档和FLASHBACK
  7. 考研计算机专业课统考吗,【计算机考研】你了解计算机统考408吗?
  8. .net的label的背景如何设置成为透明_css如何设置背景图片?background属性添加背景图片...
  9. 信息学奥赛一本通C++语言——1038:苹果和虫子
  10. xposed 主动调用方法_操作方法:主动容量管理
  11. ios弧形进度条_IOS贝塞尔曲线圆形进度条和加载动画-阿里云开发者社区
  12. Chrome默认开启flash
  13. linux资源异常无法fork,linux 下 fork 后的文件资源处理问题
  14. 数据结构笔记-----链表
  15. oracle 用户被锁定解决方法
  16. FPGA BCD计数器(多位)
  17. 几何画板如何画曲线方程?
  18. uniapp 获取屏幕高度
  19. Github和Git是啥意思?下面来简单了解下。
  20. java中画幅相机推荐_比全画幅更大 平民中画幅相机推荐

热门文章

  1. 数字图像/视频处理MATLAB基本操作
  2. 强烈推荐收藏!3W 字Python 操作 Excel 报表自动化指南
  3. 计算机网络教程第五版|微课版 - 第一章 概述 - 重点概念
  4. TrueCrypt 使用经验[2]:关于加密
  5. 重庆—java互联网架构软件工程师学习记录—Day11(API 1)
  6. L2-016 愿天下有情人都是失散多年的兄妹(25 分)
  7. iOS实现炫酷悬停交互视图
  8. document.onclick是什么
  9. 删库跑路大神的一生,真狠人!
  10. html rtf转换,如何使用JavaScript将HTML转换为RTF