BZOJ2794: [Poi2012]Cloakroom【偏序+背包】
题目描述:
题目分析:
和恰好为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]=maxj(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【偏序+背包】相关推荐
- 一句话题解(20170801~20170125)
8.1 bzoj 4720 noip2016 换教室 floyd预处理+期望(薛定谔的猫) bzoj 4318 OSU! 三次函数期望值 从一次.二次推得 8.2 bzoj 1076 状压+期望DP ...
- HDU 1248 寒冰王座(全然背包:入门题)
HDU 1248 寒冰王座(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1248 题意: 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票 ...
- 单调队列多重背包时间复杂度O(vn)
版权声明:本文为博主原创文章,未经博主允许不得转载. 多重背包问题: 有N种物品和容量为V的背包,若第i种物品,容量为v[i],价值为w[i],共有n[i]件.怎样装才能使背包内的物品总价值最大? 网 ...
- 浅说——九讲背包之01背包
所谓九讲,也就是: 0/1背包 0/1背包降维 完全背包 多重背包(二进制优化) 混合背包 二维费用背包 分组背包 有依赖的背包 背包的方案总数\背包的具体方案路径 0/1背包: [问题描述](经典) ...
- codevs——2894 Txx考试(背包)
时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description Txx是一个成绩很差的人,考试便成了他的噩梦.于是他常在考试时睡觉以打发时间.今 ...
- Codeforces Round #104 (Div. 2) E DP(01背包模型) +组和+除法取模求逆元
题意: 规定只包含4或7的数为幸运数字,给定n个数的序列,求他的子序列,使得该子序列的长度为k并且满足该子序列中不存在相同的两个幸运数字.问一共寻在多少种可能.(只要该数的下标不同则认为是不同的序列) ...
- 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) ...
- 0-1背包使用一维dp数组时为何v要从大到小枚举
样例数据 5 8 3 5 1 2 2 4 5 2 1 3 如若不然,也就是让v按照从小到大的顺序枚举,就会出现 注意高亮的那一行,第一件物品的重量只有3,怎么会得到6呢? 代码如下 #include& ...
- poj 2063完全背包
题意:给出总资金和投资年份 ,n个股票 给出股票价格和其一年的利润.问如何选择能获得最大利润. 思路:股票可以重复选择,完全背包问题,完全背包也是从01背包衍生而行的,其主要区别在于中间那层循环的次序 ...
- codechef ANUCBC(背包)
题目链接: https://www.codechef.com/problems/ANUCBC 按模数进行背包 取模不要直接取,分开写,不然会T #include<cstdio> #incl ...
最新文章
- linux bash字符串截取
- 【深度学习入门到精通系列】拿捏Dice系数
- django开发Blog(1)
- ListView使用技巧-更新中
- 万维网报务器与浏览器各有什么功能,浏览器是如何获得服务器上的信息的,第3章因特网的应用.ppt...
- Hadoop中Namenode单点故障的解决方案及详细介绍
- 记一次 Vue2 迁移 Vue3 的实践总结
- Centos系统服务FAQ汇总(下)
- 古墓丽影暗影显卡测试软件,ROG STRIX RTX 2060 S显卡测试 就是这么能打!
- 计算机图形和ps的区别,PS CC和PS CC有什么区别?
- ps批处理图片小技巧
- java 找不到符号 con_Java,找不到符号:奇怪
- 移动安全工具-apktool
- python 三角函数计算
- matlab求第二类曲面积分,第二型曲面积分的参数形式计算
- 创建本地的https证书
- 微店抢票如何构造订单页面分析
- 标准C语言各种时间函数用法
- 建模思路|彩色C4D人物元素设计灵感
- 麒麟操作系统基于linux哪个版本_如今的国产操作系统deepin和优麒麟哪个更好?...