题目链接

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)相关推荐

  1. 牛客国庆集训派对Day3: I. Metropolis(dijkstra)

    I. Metropolis 题目描述 魔方国有n座城市,编号为.城市之间通过n-1条无向道路连接,形成一个树形结构. 在若干年之后,其中p座城市发展成了大都会,道路的数量也增加到了m条. 大都会之间经 ...

  2. SRM 453.5(Div1)

    这场的前两题异乎寻常的简单啊,怪不得是.5了呢 250pt: 大水题... 500pt: 算出来总的平面图构成的方案数不会太多,所以暴力背包吧,常数很小,放心跑吧... bool vis[100001 ...

  3. 第 46 届 ICPC 国际大学生程序设计竞赛亚洲区域赛(上海)DEGHI

    D Strange_Fractions 令t=b/a,可以得到关于t的一元二次方程,用根的存在定理以及根是否为整数判断是否存在解,若有解,用求根方式求出t来,取t=(p+sqrt(p^2 -4q^2) ...

  4. Win8优化大师1.0 Beta6下载:Win8一键越狱

    优化向导 轻点几下,系统从此优化 优化向导包含了Win8安全加固.Win8个性设置.Win8网络优化.Win8开机加速.Win8易用性改善五项经典功能,把Win8调节至最佳使用状态. 右键菜单快捷组 ...

  5. [CF700E](Cool Slogans)

    QY 大神仙:这就是SAM大水题,快切快切 然而还没怎么理解SAM的我表示对着题解一脸懵逼 设原串为s: 对于后缀自动机上的一个点i,定义dp[i]为点i表示的字符串的答案(最长嵌套次数) 显然点i应 ...

  6. 【codevs 1315】1315 摆花2012年NOIP全国联赛普及组(dp)

    1315 摆花2012年NOIP全国联赛普及组  时间限制: 1 s   空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description     小明的花店新开张,为 ...

  7. CROC-MBTU 2012, Elimination Round (ACM-ICPC) H DP题目

    http://codeforces.com/contest/245/problem/H 题意: 给定一个字符串s (1 ≤ |s| ≤ 5000) 然后又q个询问(1 ≤ q ≤ 106)  每次询问 ...

  8. 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 ...

  9. 数据 | 全国范围2012、2014、2016、2018、2020年常用POI矢量数据集(shp)

    POI数据,一般称为兴趣点(Point of Interest),在地理信息系统中,一个POI可以是一栋房子.一个商铺.一个邮筒.一个公交站等.主要采用精密测绘仪器去获取信息点的经纬度,然后再标记下来 ...

  10. 洛谷 P4463 [集训队互测 2012] calc(拉格朗日插值优化DP)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://www.luogu.com.cn/problem/P4463 Prob ...

最新文章

  1. linux下eclipse cdt引用函数库设置问题
  2. Java眼中的XML--文件读取--2 应用SAX方式解析XML
  3. 嘉益仕(Litns)带您读懂MES系统:选型篇
  4. 笔记 | 《机器学习》手推笔记更新集成学习(Boosting和随机森林)
  5. iOS 多线程的简单理解(1) 方式 :同步 异步
  6. Nodejs之旅开始
  7. DevExpress v18.2版本亮点——Office File API 篇
  8. exit和abort都是用来终止程序的函数
  9. 分享一段飞天R502读卡器的JAVA读卡代码
  10. and design pro实现打印电子面单(菜鸟物流-可批量打印)
  11. 传输控制协议端口服务多路开关选择器
  12. 什么人适合学习大数据开发?学大数据难吗?
  13. 自己开发了一款视频播放器app
  14. Golang后端开发学习之路
  15. 为什么阿里会选择 Flink 作为新一代流式计算引擎?
  16. Anaconda虚拟环境中使用playsound测试报错 cannot import name ‘_gi‘ from ‘gi‘
  17. javaweb基础打卡12
  18. 解决方案Solution
  19. 学习管理!!中国历史上最经典的7个智慧案例
  20. linux使用教程 (转载)

热门文章

  1. C++ 移动语义学习
  2. IP-MAC绑定到底有多重要?(白目的见解)
  3. cleaned_data python
  4. ffmpeg中h264_mp4toannexb使用说明及注意事项
  5. chmod 权限详细解析(rw)
  6. parallels desktop 网络初始化失败_升级Big Sur后Parallels虚拟机无法联网解决方法
  7. 126邮件POP3,SMTP服务器与端口设置
  8. OpenGL与显卡驱动
  9. 打麻将 - 基于R语言
  10. 资深研发转变为架构师意味着什么