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 ...
随机推荐
- 母函数入门笔记(施工中…
定义:对于一个数列,它的母函数(即生成函数)为 为了对这个准确求值,我们设 举一个简单的例子 例1 对于数列 他的生成函数为 ,那么应用一下等比数列求和公式 这里由于 所以当时 那么 例 ...
- CentOS安装RockMongo
rockmongo官网下载页面在这里: http://rockmongo.com/downloads 找到最新版本的下载链接,一般第一个就是: 右键复制url,比如说是这个: http://rockm ...
- ASP文件操作(FSO)详解
实例一:写入文件 语法 object.CreateTextFile([要建立的文件],[如存在,是否替代]) <% Set fs =Server.CreateObject("Scrip ...
- iOS上的jQuery.on()冒泡事件绑定 以及 iOS绝对定位元素中的输入框
上周遇到两个坑. 一是jQuery的on方法 事件冒泡,在iOS中有问题. $("body").on("click",".contentup" ...
- Java学习第三篇:类的三大特征,抽象类,接口,final关键字
一.类的三大特征 1.封装性 (1).什么是封装 封装就是把抽象出的数据和对数据的操作封装在一起, 数据被保护在内部, 程序的其他部分只有通过被授权的操作(成员方法), 才能对数据进行操作. (2). ...
- 2015年最新中国知网CNKI免费账号直接入口
以下是Free9免费资源网小编收集整理的2015年最新中国知网CNKI免费账号直接入口,现免费分享给大家(仅供测试使用),此类文献数据库资源有时效性,希望对您的学习.工作上有所帮助! 中国知网直接入口 ...
- poj 3067 Japan(线段树?,神奇卡时代码,暂未完)
题目 //暴力的,没什么算法的,被琪琪视为傻逼的代码: //照者学长的神奇幸运卡时代码,虽然能AC,但是中途wa,tle了那么多次,啥也不想说了 //学长威武,能想出sum必须要是—— __int64 ...
- [STL]单词转换
如果单词转换文件的内容是: 'em themcuz becausegratz grateful i Inah nopos ...
- hdu 2837 Calculation
公式:a^b%p=a^(b%phi(p)+phi(p))%p b>=phi(p) #include<iostream> #include<stdio.h> #incl ...
- nmap使用详解
nmap是一个网络探测和安全扫描程序, 系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等信息.nmap支持很多扫描技术,例如:UDP.TCP connect(). ...