bzoj2794
这题我得到一个经验,bool型的dp一定要想办法把bool去掉来表示更多的东西(1933也是这个道理)
暴力大家都会,这里有两个限制条件
一个限制条件我们可以排序不断加入,另一个呢
我们可以用f[i]表示c[]的和等于i时,最小的b[]最大是多少
然后转移判断就很容易解决了
var sum,a,b,c:array[..] of longint;
w,s,h,f,d:array[..] of longint;
ans:array[..] of boolean;
mx,i,n,j,k,q:longint; function min(a,b:longint):longint;
begin
if a>b then exit(b) else exit(a);
end; function max(a,b:longint):longint;
begin
if a>b then exit(a) else exit(b);
end; procedure swap(var a,b:longint);
var c:longint;
begin
c:=a;
a:=b;
b:=c;
end; procedure sorta(l,r:longint);
var i,j,x:longint;
begin
i:=l;
j:=r;
x:=a[(l+r) shr ];
repeat
while a[i]<x do inc(i);
while x<a[j] do dec(j);
if not(i>j) then
begin
swap(a[i],a[j]);
swap(b[i],b[j]);
swap(c[i],c[j]);
inc(i);
dec(j);
end;
until i>j;
if l<j then sorta(l,j);
if i<r then sorta(i,r);
end; procedure sortq(l,r:longint);
var i,j,x:longint;
begin
i:=l;
j:=r;
x:=w[(l+r) shr ];
repeat
while w[i]<x do inc(i);
while x<w[j] do dec(j);
if not(i>j) then
begin
swap(w[i],w[j]);
swap(s[i],s[j]);
swap(h[i],h[j]);
swap(d[i],d[j]);
inc(i);
dec(j);
end;
until i>j;
if l<j then sortq(l,j);
if i<r then sortq(i,r);
end; begin
readln(n);
for i:= to n do
readln(c[i],a[i],b[i]);
sorta(,n);
for i:= to n do
sum[i]:=sum[i-]+c[i]; readln(q);
for i:= to q do
begin
readln(w[i],h[i],s[i]);
d[i]:=i;
mx:=max(mx,h[i]);
end;
sortq(,q);
j:=;
f[]:=;
for i:= to q do
begin
while (j<=n) and (a[j]<=w[i]) do
begin
for k:=min(mx,sum[j]) downto c[j] do
if f[k-c[j]]> then f[k]:=max(f[k],min(f[k-c[j]],b[j]));
inc(j);
end;
ans[d[i]]:=(f[h[i]]>w[i]+s[i]);
end;
for i:= to q do
if ans[i] then writeln('TAK') else writeln('NIE');
end.
bzoj2794的更多相关文章
- 【BZOJ2794】[Poi2012]Cloakroom 离线+背包
[BZOJ2794][Poi2012]Cloakroom Description 有n件物品,每件物品有三个属性a[i], b[i], c[i] (a[i]<b[i]).再给出q个询问,每个询问 ...
- [BZOJ2794][Poi2012]Cloakroom
2794: [Poi2012]Cloakroom Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 167 Solved: 119[Submit][St ...
- BZOJ2794[Poi2012]Cloakroom——离线+背包
题目描述 有n件物品,每件物品有三个属性a[i], b[i], c[i] (a[i]<b[i]).再给出q个询问,每个询问由非负整数m, k, s组成,问是否能够选出某些物品使得:1. 对于每个 ...
- #13【BZOJ2794】[Poi2012]Cloakroom
题解: 感觉真是很智障..连这么简单的题都没想出来 一直在想这么做动态背包..发现不会 首先显然我们将询问按照m 序列按照a[i]排序 然后怎么满足b呢 其实很简单啊..只需要记录f[i]表示前面这些 ...
- POI2012题解
POI2012题解 这次的完整的\(17\)道题哟. [BZOJ2788][Poi2012]Festival 很显然可以差分约束建图.这里问的是变量最多有多少种不同的取值. 我们知道,在同一个强连通分 ...
- dp专题复习
背包: 1.bzoj2287:[POJ Challenge]消失之物 2.bzoj2748:[HAOI2012]音量调节 3.bzoj2794:[Poi2012]Cloakroom 4.bzoj119 ...
随机推荐
- MYSQL远程登录权限设置
Mysql默认关闭远程登录权限,如下操作允许用户在任意地点登录: 1. 进入mysql,GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY ...
- 3142:[HNOI2013]数列 - BZOJ
题目描述 Description 小T最近在学着买股票,他得到内部消息:F公司的股票将会疯涨. 股票每天的价格已知是正整数,并且由于客观上的原因,最多只能为N.在疯涨的K天中小T观察到:除第一天外每天 ...
- SQLServer调试
1.普通调试 直接点击SSMS客户端上的调试按钮即可 2.存储过程调试 2.1 定义存储过程(以Northwind数据库为例) USE [Northwind] GO /****** Object: S ...
- [bzoj 3031] 理科男
题意 给定一个进制分数 求是否是循环小数,且求出循环节长度 题解 暴力 il int find(int p){ int head=last[p%mod]; while(head&&pr ...
- PHP杂记
SOAP: 感觉是类似于Java中的HttpClient的东西,和curl也有点像. PHPStorm中查看所有的函数结构(Structure):Alt+7 查找方法或类(Symbol Name 函数 ...
- 【c++基础】const、const指针、const引用
一.const常量 声明时必须同时初始化(和“引用”一样) 二.const指针 三.const引用 引用本身和引用的对象都是const对象,可以用字面值来赋给const引用(普通引用则不行) ; co ...
- Python Requests模块讲解4
高级用法 会话对象 请求与响应对象 Prepared Requests SSL证书验证 响应体内容工作流 保持活动状态(持久连接) 流式上传 块编码请求 POST Multiple Multipart ...
- POJ 1922 Ride to School(贪心+模拟)
题意:起点与终点相隔4500米.现Charley 需要从起点骑车到终点.但是,他有个习惯,沿途需要有人陪伴,即以相同的速度, 与另外一个人一起骑.而当他遇到以更快的速度骑车的人时,他会以相应的速度跟上 ...
- Java Socket编程readLine返回null,read返回-1的条件
客户端正常关闭socket的时候,服务器端的readLine()方法会返回null,或者read()方法会返回-1
- MongoDB安装(Linux)
下载文件 http://downloads.mongodb.org/linux/mongodb-linux-i686-static-2.5.0.tgz 解压: tar -zxvf mongodb-li ...