题目大意

有 \(n\) 件物品,每件物品有三个属性 \(a_i, b_i, c_i (a_i < b_i)\)。

再给出 \(q\) 个询问,每个询问由非负整数 \(m, k, s\)组成,问是否能够选出某些物品使得:

  1. 对于每个选的物品 \(i\),满足 \(a_i \leq m\) 且 \(b_i > m + s\)。

  2. 所有选出物品的 \(c\) 的和正好是 \(k\)。

分析

如果没有 \(a_i \leq m\) 且 \(b_i > m + s\) 的条件,明显是个背包。

然而有这两个限制就不好办了。我们可以先把询问离线下来,按照 \(m\) 排序(当然 \(a_i\) 也要排序),这样就把二维偏序转化成了一维。(大概可以这样理解)。

接下来,我们需要判断在 \(\forall a_i \leq m\) 和 \(\sum c_i = k\) 满足后 \([\forall b_i > m + s]\) 是否成立。

这个也很好办。我们只需要将背包状态设为 \(f_i\) 表示背包容积(即放入的 \(c\))大小为 \(i\) 时 \(b\) 的最小值的最大值。只要这个最小值比 \(m + s\) 大,那么就一定合法,否则一定不合法。

最后一定注意输入顺序是 \(c, a, b\) 而不是 \(a, b, c\)!

参考代码

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio> using namespace std; const int N = 1010, M = 1000010;
struct Node {
int a, b, c;
bool operator < (const Node& tmp)const {
return a < tmp.a;
}
}p[N];
struct Queries {
int m, k, s, id;
bool operator < (const Queries& tmp)const {
return m < tmp.m;
}
}q[M];
int f[100010];
int n, m;
bool ans[M]; int main() {
scanf("%d", &n);
for (int i = 1; i <= n; i ++ )
scanf("%d%d%d", &p[i].c, &p[i].a, &p[i].b);
sort(p + 1, p + n + 1);
scanf("%d", &m);
for (int i = 1; i <= m; i ++ )
scanf("%d%d%d", &q[i].m, &q[i].k, &q[i].s),
q[i].id = i;
sort(q + 1, q + m + 1); // 将限制 A 消除 int now = 1; f[0] = 0x3f3f3f3f;
for (int i = 1; i <= m; i ++ ) {
while (now <= n && p[now].a <= q[i].m) {
for (int j = 100000; j >= p[now].c; j -- )
f[j] = max(f[j], min(f[j - p[now].c], p[now].b)); // 背包满足限制 C
now ++ ;
}
if (f[q[i].k] > q[i].m + q[i].s) ans[q[i].id] = true; // 判断限制 B 是否满足
} for (int i = 1; i <= m; i ++ )
puts(ans[i] ? "TAK" : "NIE");
return 0;
}

P3537 [POI2012]SZA-Cloakroom 题解的更多相关文章

  1. 洛谷P3537 [POI2012]SZA-Cloakroom(背包)

    传送门 蠢了……还以为背包只能用来维护方案数呢……没想到背包这么神奇…… 我们用$dp[i]$表示当$c$的和为$i$时,所有的方案中使得最小的$b$最大时最小的$b$是多少 然后把所有的点按照$a$ ...

  2. 【洛谷】P3537 [POI2012]SZA-Cloakroom

    题目描述  有n件物品,每件物品有三个属性a[i], b[i], c[i] (a[i]<b[i]).  再给出q个询问,每个询问由非负整数m, k, s组成,问是否能够选出某些物品使得:  1. ...

  3. POI2012题解

    POI2012题解 这次的完整的\(17\)道题哟. [BZOJ2788][Poi2012]Festival 很显然可以差分约束建图.这里问的是变量最多有多少种不同的取值. 我们知道,在同一个强连通分 ...

  4. 【BZOJ2794】[Poi2012]Cloakroom 离线+背包

    [BZOJ2794][Poi2012]Cloakroom Description 有n件物品,每件物品有三个属性a[i], b[i], c[i] (a[i]<b[i]).再给出q个询问,每个询问 ...

  5. BZOJ 2794 [Poi2012]Cloakroom(离线+背包)

    2794: [Poi2012]Cloakroom Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 406  Solved: 241[Submit][St ...

  6. [BZOJ2794][Poi2012]Cloakroom

    2794: [Poi2012]Cloakroom Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 167  Solved: 119[Submit][St ...

  7. 题解:POI2012 Salaries

    题解:POI2012 Salaries Description The Byteotian Software Corporation (BSC) has \(n\) employees. In BSC ...

  8. #13【BZOJ2794】[Poi2012]Cloakroom

    题解: 感觉真是很智障..连这么简单的题都没想出来 一直在想这么做动态背包..发现不会 首先显然我们将询问按照m 序列按照a[i]排序 然后怎么满足b呢 其实很简单啊..只需要记录f[i]表示前面这些 ...

  9. [Poi2012]Festival 题解

    [Poi2012]Festival 时间限制: 1 Sec  内存限制: 64 MB 题目描述 有n个正整数X1,X2,...,Xn,再给出m1+m2个限制条件,限制分为两类: 1. 给出a,b (1 ...

  10. BZOJ2794[Poi2012]Cloakroom——离线+背包

    题目描述 有n件物品,每件物品有三个属性a[i], b[i], c[i] (a[i]<b[i]).再给出q个询问,每个询问由非负整数m, k, s组成,问是否能够选出某些物品使得:1. 对于每个 ...

随机推荐

  1. C#归并排序算法

    前言 归并排序是一种常见的排序算法,它采用分治法的思想,在排序过程中不断将待排序序列分割成更小的子序列,直到每个子序列中只剩下一个元素,然后将这些子序列两两合并并排序,最终得到一个有序的序列. 归并排 ...

  2. Kubernetes文档支持的版本

    简介 https://kubernetes.io/zh-cn/docs/ 官方中文网站一共是可以阅读5个k8s版本的文档.这5个版本包括k8s最新版和最近的4个版本.例如当前最新版是1.28,那么文档 ...

  3. 实用的命令行终端增强软件:Tabby

    还是那句话:出众的软件有很多,适合自己的才是最好的. 一.软件介绍 Tabby是一个开源免费软件,支持Windows.macOS和Linux系统.它提供了一个高度可定制的终端界面,可以通过多种方式添加 ...

  4. springMVC---GET、POST原理

    对于 java 程序员来说,特别是遵循 restful 风格的公司,controller 层用得最多的就是 下面这几个注解了: @RequestMapping @PostMapping @GetMap ...

  5. 树莓派4B使用串口登录的设置方法

    -特别提示- 本文具有时效性. 当前我使用的是pi4硬件, 镜像版本 raspberrypi 5.15.61 32位. 在我解决该问题的时候, 在网上查找了很多方法, 有些方法被实际测试发现是不行的. ...

  6. 教你如何使用PyTorch解决多分类问题

    本文分享自华为云社区<使用PyTorch解决多分类问题:构建.训练和评估深度学习模型>,作者: 小馒头学Python. 引言 当处理多分类问题时,PyTorch是一种非常有用的深度学习框架 ...

  7. 想基于AI变现吗,这个Star有1.8K的开源项目分享给你

    前言 在如今AI爆发的时代,每个人都想借着AI这股风,进行变现,今天给大家分享一个开源项目,他可以让你基于AI的能力进行变现 项目介绍 这个项目在Github有1.8k个star,可见其欢迎程度,作者 ...

  8. Windows_Cmd常用操作配置

    目录 特定功能执行命令 显示系统当前版本 电源管理 历史命令相关 显示路由表 显示本地 ARP 缓存 测试主机 联通性 查看网卡信息 修改DOS窗口中的编码格式 诊断域名系统 (DNS) 基础结构的信 ...

  9. 洛谷4055 [JSOI2009]游戏(二分图博弈)

    例题:在N×M的迷宫中有一个棋子,小 AA 首先任意选择棋子放置的位置.然后,小 YY 和小 AA 轮流将棋子移动到相邻的格子里.游戏的规则规定,在一次游戏中,同一个格子不能进入两次,且不能将棋子移动 ...

  10. 轻量级SpringBoot配置中心 - Minimal-Config

    介绍 minimal-config-spring-boot-starter,是基于Spring-Boot原生配置注入实现原理的基础上,拓展的轻量级配置中心,项目体积只有24KB,设计理念为服务中小型项 ...