链接:https://www.luogu.org/problemnew/show/P3537

有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 ( 1≤n≤1 000 )

Those items are described in the nn lines that follow.

c a b(1≤ci​≤1 000 ,1≤ai​<bi​≤10e9 )

p (1≤p≤1 000 000 ),

m k s 1≤m,j​≤10^9 , 1≤kj, sj​≤100 000

输出格式:

For each plan put forward by the gang determine if it is feasible, i.e., whether it is possible to steal items of total worth exactly k_jkj​ and escape before anyone asks for their belongings.

If the plan is feasible, your program should print the word TAK (Polish for yes) on the standard output, otherwise it should print NIE (Polish for no).

输入输出样例

输入样例#1: 复制

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

输出样例#1: 复制

TAK
NIE
TAK
TAK
NIE

题解:离线

我们把所有的 mm 和所有的ai​ 从小到大排序,然后就是一个背包问题了,因为这样我们做到一边把物品放入背包一边去处理这个询问。

定义fi​ 表示当物品的和为 i 时在所有的方案中,使得最小的 b 最大的方案中的 b 值。(这话有些绕口)

然后接下来我们只要判断一下 fi​ 是否大于m+s 即可。

注意边界问题,我开始漏算了M巨大时的情况,和今天早上一样算了还=后面一截

#include<bits/stdc++.h>
using namespace std;
const int N = 1005, M = 1000005;
#define For(a, b, c) for(int a = b; a <= c; a++)
struct Point{int a, b, c;}p[N];
struct Query{int m, s, k, id;}q[M];
bool cmp1(Point A, Point B){return A.a < B.a;
}
bool cmp2(Query A, Query B){return A.m < B.m;
}
int ans[M], dp[M];
int main(){//freopen("dt.in","r",stdin);//freopen("my.out","w",stdout);int m, n;scanf("%d", &n);For(i, 1, n)scanf("%d%d%d", &p[i].c, &p[i].a, &p[i].b);sort(p+1, p+1+n, cmp1);scanf("%d", &m);For(i, 1, m)scanf("%d%d%d", &q[i].m, &q[i].k, &q[i].s), q[i].id = i;sort(q+1, q+1+m, cmp2);dp[0] = 1e9 + 100;int nlst = 1, lst = 1;int limit = q[1].m;p[n+1].a = dp[0];bool fg = 0;int j;for(int i = nlst; i <= n;){//cout<<i<<" "<<nlst<<endl;while(p[i].a <= limit){for(int j = 100000; j >= p[i].c; j--)dp[j] = max(dp[j], min(dp[j - p[i].c], p[i].b));i++;}nlst = i;for( j = lst; q[j].m == q[lst].m; j++){int id = q[j].id;if(q[j].m + q[j].s < dp[q[j].k])ans[id] = 1;//else ans[id] = -1;
        }lst = j; limit = q[lst].m;if(lst == m + 1)break;//fprintf(stderr, "%d\n", lst);
    }for( ; j <= m; j++)if(dp[q[j].k] > q[j].m + q[j].s)ans[q[j].id] = 1;for(int i = 1; i <= m; i++)if(ans[i] == 1)puts("TAK");else puts("NIE");}

View Code

转载于:https://www.cnblogs.com/EdSheeran/p/9483305.html

P3537 [POI2012]SZA-Cloakroom相关推荐

  1. Bzoj3060 [Poi2012]Tour de Byteotia

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

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

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

  3. BZOJ 2788[Poi2012]Festival

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

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

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

  5. 【BZOJ2791】[Poi2012]Rendezvous 倍增

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

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

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

  7. P3540 [POI2012]SQU-Squarks

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

  8. [BZOJ2796][Poi2012]Fibonacci Representation

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

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

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

  10. P3531 [POI2012]LIT-Letters(求逆序对)

    题目传送门:https://www.luogu.com.cn/problem/P3531 题意 给出只包含大写字母的字符串 A 和字符串 B,每次可以交换字符串 A 两个相邻的字符,求 A 变成 B ...

最新文章

  1. Apollo 10 — adminService 全量发布
  2. 3万亿巨大市场,难怪马云、刘强东要抢着去养猪
  3. 9 [面向对象]-内置方法
  4. php 实现二叉树的最大深度_LintCode 题解丨Apple面试题:二叉树的最大深度
  5. Qt5学习笔记之bin文件合成工具四:完善功能打包程序
  6. 顾樵数学物理方法_圣彼得堡国立大学硕士研究生:物理与天文学
  7. 【CC3200AI 实验教程11】疯壳·AI语音人脸识别(会议记录仪/人脸打卡机)-AI语音系统架构
  8. 王爽《汇编语言》检测点1.1答案及解析
  9. Gmail大改版,36岁的电子邮箱为何未像BBS一样消亡?
  10. C# Message类的属性Msg所关联的消息ID
  11. 测试英语词水平的软件,英语词汇量测试程序
  12. 为什么说jsp被替代了_您说什么:最喜欢的Windows资源管理器替代品
  13. 将电脑调成护眼色不一定起到护眼的功能
  14. PHP fpdi合并多个PDF文件,取多个PDF特定页数合并以及导出
  15. JavaScript中查找指定字符串的几种方式
  16. 95后沪漂女孩深陷“狠”且“卷”职场,向上思维,永不过时!
  17. 移动端键盘弹出后,导致背景图片上移解决方法(MUI)
  18. 写一个函数,用户输入一个数判断是否是素数,并返弹出回值(又叫质数,只能被1和自身整数的数)
  19. 国内的镜像源访问地址
  20. linux编译器警告变成错误,警告就是错误

热门文章

  1. 超酷HTML5 3D动画精选
  2. mybatis笔记-8、动态sql
  3. 金融科技之能量守恒定律
  4. bzoj-4816,P3704 [SDOI2017]数字表格
  5. trymyapps下载_Incentivized Application Starts Up-Trymyapps
  6. 【家具CRM客户关系管理系统案例】数夫助力左右家私CRM客户关系管理系统正式上线
  7. 入秋的第一篇数据结构算法:看看归并与快排的风采,三面蚂蚁金服成功拿到offer
  8. 报名啦!第四届滴滴-IEEE未来精英论坛今夏来袭
  9. Markdown开发VSCode插件推荐
  10. 计算机其它离的360云盘,360云盘资源转到百度云 360云盘搬家教程