题目描述:

题目分析:

和恰好为k可以用背包。
物品a[i]<=m的限制可以将询问离线后排序添加物品。
但是b[i]>m+s就不好搞了。
这里有一个神奇的trick:f[i]f[i]f[i]记录组成和为iii的物品中最小bbb的最大值,这个若最大值>m+s,则说明存在一种方案。初始f[0]=INFf[0]=INFf[0]=INF,f[i>0]=0f[i>0]=0f[i>0]=0,转移即为f[i]=max⁡j(min⁡(f[i−cj],bj))f[i]=\max_j(\min(f[i-c_j],b_j))f[i]=maxj​(min(f[i−cj​],bj​))

这提醒我们不等式可以转化为最值问题从而解决一维偏序。

Code:

#include<bits/stdc++.h>
#define maxn 1005
using namespace std;
char cb[1<<18],*cs,*ct;
#define getc() (cs==ct&&(ct=(cs=cb)+fread(cb,1,1<<18,stdin),cs==ct)?0:*cs++)
inline void read(int &a){char c;while(!isdigit(c=getc()));for(a=c-'0';isdigit(c=getc());a=a*10+c-'0');
}
int n,m,K,f[100005];
bool ans[1000005];
struct node{int x,y,v,id;bool operator < (const node &p)const{return x<p.x;}
}A[1005],q[1000005];
int main()
{read(n);for(int i=1;i<=n;i++) read(A[i].v),read(A[i].x),read(A[i].y);sort(A+1,A+1+n);read(m);for(int i=1;i<=m;i++) read(q[i].x),read(q[i].v),read(q[i].y),q[i].y+=q[i].x,K=max(K,q[i].v),q[i].id=i;sort(q+1,q+1+m);f[0]=2e9;for(int i=1,j=1;i<=m;i++){while(j<=n&&A[j].x<=q[i].x){for(int k=K;k>=A[j].v;k--) f[k]=max(f[k],min(f[k-A[j].v],A[j].y));j++;}ans[q[i].id]=f[q[i].v]>q[i].y;}for(int i=1;i<=m;i++) puts(ans[i]?"TAK":"NIE");
}

BZOJ2794: [Poi2012]Cloakroom【偏序+背包】相关推荐

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

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

  2. HDU 1248 寒冰王座(全然背包:入门题)

    HDU 1248 寒冰王座(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1248 题意: 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票 ...

  3. 单调队列多重背包时间复杂度O(vn)

    版权声明:本文为博主原创文章,未经博主允许不得转载. 多重背包问题: 有N种物品和容量为V的背包,若第i种物品,容量为v[i],价值为w[i],共有n[i]件.怎样装才能使背包内的物品总价值最大? 网 ...

  4. 浅说——九讲背包之01背包

    所谓九讲,也就是: 0/1背包 0/1背包降维 完全背包 多重背包(二进制优化) 混合背包 二维费用背包 分组背包 有依赖的背包 背包的方案总数\背包的具体方案路径 0/1背包: [问题描述](经典) ...

  5. codevs——2894 Txx考试(背包)

    时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description Txx是一个成绩很差的人,考试便成了他的噩梦.于是他常在考试时睡觉以打发时间.今 ...

  6. Codeforces Round #104 (Div. 2) E DP(01背包模型) +组和+除法取模求逆元

    题意: 规定只包含4或7的数为幸运数字,给定n个数的序列,求他的子序列,使得该子序列的长度为k并且满足该子序列中不存在相同的两个幸运数字.问一共寻在多少种可能.(只要该数的下标不同则认为是不同的序列) ...

  7. HDU-1203 I NEED A OFFER!-0、1背包及空间优化

    I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  8. 0-1背包使用一维dp数组时为何v要从大到小枚举

    样例数据 5 8 3 5 1 2 2 4 5 2 1 3 如若不然,也就是让v按照从小到大的顺序枚举,就会出现 注意高亮的那一行,第一件物品的重量只有3,怎么会得到6呢? 代码如下 #include& ...

  9. poj 2063完全背包

    题意:给出总资金和投资年份 ,n个股票 给出股票价格和其一年的利润.问如何选择能获得最大利润. 思路:股票可以重复选择,完全背包问题,完全背包也是从01背包衍生而行的,其主要区别在于中间那层循环的次序 ...

  10. codechef ANUCBC(背包)

    题目链接: https://www.codechef.com/problems/ANUCBC 按模数进行背包 取模不要直接取,分开写,不然会T #include<cstdio> #incl ...

最新文章

  1. linux bash字符串截取
  2. 【深度学习入门到精通系列】拿捏Dice系数
  3. django开发Blog(1)
  4. ListView使用技巧-更新中
  5. 万维网报务器与浏览器各有什么功能,浏览器是如何获得服务器上的信息的,第3章因特网的应用.ppt...
  6. Hadoop中Namenode单点故障的解决方案及详细介绍
  7. 记一次 Vue2 迁移 Vue3 的实践总结
  8. Centos系统服务FAQ汇总(下)
  9. 古墓丽影暗影显卡测试软件,ROG STRIX RTX 2060 S显卡测试 就是这么能打!
  10. 计算机图形和ps的区别,PS CC和PS CC有什么区别?
  11. ps批处理图片小技巧
  12. java 找不到符号 con_Java,找不到符号:奇怪
  13. 移动安全工具-apktool
  14. python 三角函数计算
  15. matlab求第二类曲面积分,第二型曲面积分的参数形式计算
  16. 创建本地的https证书
  17. 微店抢票如何构造订单页面分析
  18. 标准C语言各种时间函数用法
  19. 建模思路|彩色C4D人物元素设计灵感
  20. 麒麟操作系统基于linux哪个版本_如今的国产操作系统deepin和优麒麟哪个更好?...

热门文章

  1. MongoDB 极简入门实践
  2. 计算ERA-5数据的相对湿度(RH)与饱和水汽压差(VPD)
  3. 最近计算机速度测试情况,速度测试
  4. Footprint 8月月报 DeFi市场多点开花,9月是否会迎来下一个爆发点
  5. Google商店应用上架注意事项
  6. CSDN使用MD编辑器写博客如何让图片居中(调整图片位置大小)MD编辑器学习笔记
  7. 2019华为软件精英挑战赛总结篇
  8. Mindjet MindManager2022思维导图解压安装程序教程
  9. 胡乱翻译Apache Ignite(一)
  10. 千帆竞发-Redis分布式锁