[POI 2012]Cloakroom(DP)
题目链接
http://main.edu.pl/en/archive/oi/19/sza
题目大意
有n件物品,每件物品有三个属性a[i], b[i], c[i] (a[i]<b[i]a[i])。
再给出q个询问,每个询问由非负整数m, k, s组成,问是否能够选出某些物品使得:
1. 对于每个选的物品i,满足a[i]<=m且b[i]>m+s。
2. 所有选出物品的c[i]的和正好是k。
思路
如果对于每次询问都从头开始做背包的话,那么肯定TLE。
考虑离线处理,一次背包回答所有的询问。对每个询问按照mm升序排序,对每个物品按照aa升序排序。然后开始做背包DP,维护当前要加入的物品jj,依次枚举询问ii,然后按照之前排序的顺序依次加入物品。用f[i][j]f[i][j]表示前ii个物品,在满足a≤ma \leq m的前提下,凑出体积kk的话,选出的物品里的bb最小值最大是多少。这个DP和一般的背包DP非常相似,因此我就不需作过多赘述了。之前的DP方程也可以和一般的背包DP一样用滚动数组优化成一维空间。
代码
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <algorithm>#define MAXN 1100
#define MAXK 110000
#define MAXQ 1100000
#define INF 0x3f3f3f3fusing namespace std;int n,q;struct Thing
{int a,b,c;
}things[MAXN];struct Query
{int m,k,s,id;
}query[MAXQ];bool ans[MAXQ];bool cmp_thing(Thing a,Thing b)
{return a.a<b.a;
}bool cmp_query(Query a,Query b)
{return a.m<b.m;
}int f[MAXK];int main()
{int maxx=0;scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d%d%d",&things[i].c,&things[i].a,&things[i].b);scanf("%d",&q);for(int i=1;i<=q;i++)query[i].id=i,scanf("%d%d%d",&query[i].m,&query[i].k,&query[i].s),maxx=max(maxx,query[i].k);sort(things+1,things+n+1,cmp_thing);sort(query+1,query+q+1,cmp_query);f[0]=INF;for(int i=1,j=1,sum=0;i<=q;i++) //回答第i个询问,当前决策是否放入第j个物品{for(;j<=n&&things[j].a<=query[i].m;sum+=things[j].c,j++)for(int k=min(maxx,sum);k>=0;k--)if(f[k])f[k+things[j].c]=max(f[k+things[j].c],min(things[j].b,f[k]));ans[query[i].id]=f[query[i].k]>(query[i].m+query[i].s);}for(int i=1;i<=q;i++)printf("%s\n",ans[i]?"TAK":"NIE");return 0;
}
[POI 2012]Cloakroom(DP)相关推荐
- 牛客国庆集训派对Day3: I. Metropolis(dijkstra)
I. Metropolis 题目描述 魔方国有n座城市,编号为.城市之间通过n-1条无向道路连接,形成一个树形结构. 在若干年之后,其中p座城市发展成了大都会,道路的数量也增加到了m条. 大都会之间经 ...
- SRM 453.5(Div1)
这场的前两题异乎寻常的简单啊,怪不得是.5了呢 250pt: 大水题... 500pt: 算出来总的平面图构成的方案数不会太多,所以暴力背包吧,常数很小,放心跑吧... bool vis[100001 ...
- 第 46 届 ICPC 国际大学生程序设计竞赛亚洲区域赛(上海)DEGHI
D Strange_Fractions 令t=b/a,可以得到关于t的一元二次方程,用根的存在定理以及根是否为整数判断是否存在解,若有解,用求根方式求出t来,取t=(p+sqrt(p^2 -4q^2) ...
- Win8优化大师1.0 Beta6下载:Win8一键越狱
优化向导 轻点几下,系统从此优化 优化向导包含了Win8安全加固.Win8个性设置.Win8网络优化.Win8开机加速.Win8易用性改善五项经典功能,把Win8调节至最佳使用状态. 右键菜单快捷组 ...
- [CF700E](Cool Slogans)
QY 大神仙:这就是SAM大水题,快切快切 然而还没怎么理解SAM的我表示对着题解一脸懵逼 设原串为s: 对于后缀自动机上的一个点i,定义dp[i]为点i表示的字符串的答案(最长嵌套次数) 显然点i应 ...
- 【codevs 1315】1315 摆花2012年NOIP全国联赛普及组(dp)
1315 摆花2012年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 小明的花店新开张,为 ...
- CROC-MBTU 2012, Elimination Round (ACM-ICPC) H DP题目
http://codeforces.com/contest/245/problem/H 题意: 给定一个字符串s (1 ≤ |s| ≤ 5000) 然后又q个询问(1 ≤ q ≤ 106) 每次询问 ...
- hdu 4283 You Are the One ( dp 2012 ACM/ICPC Asia Regional Tianjin Online )
http://acm.hdu.edu.cn/showproblem.php?pid=4283 题意: The TV shows such as You Are the One has been ver ...
- 数据 | 全国范围2012、2014、2016、2018、2020年常用POI矢量数据集(shp)
POI数据,一般称为兴趣点(Point of Interest),在地理信息系统中,一个POI可以是一栋房子.一个商铺.一个邮筒.一个公交站等.主要采用精密测绘仪器去获取信息点的经纬度,然后再标记下来 ...
- 洛谷 P4463 [集训队互测 2012] calc(拉格朗日插值优化DP)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://www.luogu.com.cn/problem/P4463 Prob ...
最新文章
- linux下eclipse cdt引用函数库设置问题
- Java眼中的XML--文件读取--2 应用SAX方式解析XML
- 嘉益仕(Litns)带您读懂MES系统:选型篇
- 笔记 | 《机器学习》手推笔记更新集成学习(Boosting和随机森林)
- iOS 多线程的简单理解(1) 方式 :同步 异步
- Nodejs之旅开始
- DevExpress v18.2版本亮点——Office File API 篇
- exit和abort都是用来终止程序的函数
- 分享一段飞天R502读卡器的JAVA读卡代码
- and design pro实现打印电子面单(菜鸟物流-可批量打印)
- 传输控制协议端口服务多路开关选择器
- 什么人适合学习大数据开发?学大数据难吗?
- 自己开发了一款视频播放器app
- Golang后端开发学习之路
- 为什么阿里会选择 Flink 作为新一代流式计算引擎?
- Anaconda虚拟环境中使用playsound测试报错 cannot import name ‘_gi‘ from ‘gi‘
- javaweb基础打卡12
- 解决方案Solution
- 学习管理!!中国历史上最经典的7个智慧案例
- linux使用教程 (转载)