BZOJ 2436 Noi嘉年华(优化DP)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2436
题意:有一些活动,起始时间持续时间已知。有两个场地。每个活动最多只能在一个场地举行,且两个场地同一时间不能都举行活动。但是同一场地同一时间可以举行多个活动。要求的是两个场地中活动数目少的场地的活动数目的最大值S。再输出某个活动必须被安排时的S值。
思路:我直接粘贴原思路了。
区间离散化,设A={嘉年华1的活动}, B={嘉年华2的活动},C={未安排的活动}。
设num[i][j]为包含在区间[i,j]中的区间个数;
pre[i][j]为在区间[0,i]中放入j个区间到B后,最多能放入A的个数;
suf[i][j]为在区间[i, +∞)中放入j个区间到B后,最多能放入A的个数。
那么第一问答案为:max(min(i,suf[0][i]))。
- int pre[N][N],suf[N][N],g[N][N],L[N],R[N];
- int p[N],n,num[N][N],m;
- void DP()
- {
- int i,j,k;
- FOR0(i,N) FOR0(j,N) pre[i][j]=suf[i][j]=g[i][j]=-INF;
- pre[0][0]=suf[m-1][0]=0;
- FOR0(i,m)
- {
- for(j=0;j<=n;j++) if(pre[i][j]>=0)
- {
- upMax(pre[i][pre[i][j]],j);
- }
- for(j=n-1;j>=0;j--) upMax(pre[i][j],pre[i][j+1]);
- for(j=0;j<=n+1;j++) for(k=i+1;k<m;k++) if(pre[i][j]>=0)
- {
- upMax(pre[k][pre[i][j]],j+num[i][k]);
- }
- }
- for(i=m-1;i>=0;i--)
- {
- for(j=0;j<=n+1;j++) if(suf[i][j]>=0)
- {
- upMax(suf[i][suf[i][j]],j);
- }
- for(j=n-1;j>=0;j--) upMax(suf[i][j],suf[i][j+1]);
- for(j=0;j<=n;j++) for(k=i-1;k>=0;k--) if(suf[i][j]>=0)
- {
- upMax(suf[k][suf[i][j]],j+num[k][i]);
- }
- }
- int x,y;
- FOR0(i,m) FOR0(j,m)
- {
- y=n;
- for(x=0;x<=n;x++)
- {
- while(y>=0&&x+y>num[i][j]+pre[i][x]+suf[j][y]) y--;
- if(y>=0) upMax(g[i][j],x+y);
- }
- }
- int ans=0;
- for(i=0;i<=n;i++) upMax(ans,min(i,suf[0][i]));
- PR(ans);
- FOR0(i,n)
- {
- ans=0;
- for(j=0;j<=L[i];j++) for(k=R[i];k<m;k++)
- {
- upMax(ans,g[j][k]);
- }
- PR(ans);
- }
- }
- int main()
- {
- RD(n);
- int i,j;
- FOR0(i,n)
- {
- RD(L[i],R[i]); R[i]=R[i]+L[i];
- p[m++]=L[i];
- p[m++]=R[i];
- }
- sort(p,p+m);
- m=unique(p,p+m)-p;
- FOR0(i,n)
- {
- L[i]=lower_bound(p,p+m,L[i])-p;
- R[i]=lower_bound(p,p+m,R[i])-p;
- }
- FOR0(i,m)
- {
- FOR0(j,n) if(L[j]>=i) num[i][R[j]]++;
- for(j=i+1;j<m;j++) num[i][j]+=num[i][j-1];
- }
- DP();
- }
BZOJ 2436 Noi嘉年华(优化DP)的更多相关文章
- BZOJ 2436 NOI嘉年华(单调优化)
http://www.lydsy.com/JudgeOnline/problem.php?id=2436 题意:两个会场不能同时表演,但是同一个时间可以同时表演,要求让两个会场表演数量最小的最大,然后 ...
- BZOJ 3156: 防御准备 斜率优化DP
3156: 防御准备 Description Input 第一行为一个整数N表示战线的总长度. 第二行N个整数,第i个整数表示在位置i放置守卫塔的花费Ai. Output 共一个整数,表示最小的战 ...
- BZOJ2436 [Noi2011]Noi嘉年华 【dp】
题目链接 BZOJ2436 题解 看这\(O(n^3)\)的数据范围,可以想到区间\(dp\) 发现同一个会场的活动可以重叠,所以暴力求出\(num[l][r]\)表示离散化后\([l,r]\)的完整 ...
- bzoj 3126 单调队列优化dp
能转移的最左是其左边完整区间的最右左端点,最右是能覆盖它的最左左端点-1 #pragma GCC optimize ("O3") #include<cstdio> #i ...
- 【BZOJ 2436】 2436: [Noi2011]Noi嘉年华 (区间DP)
2436: [Noi2011]Noi嘉年华 Description NOI2011 在吉林大学开始啦!为了迎接来自全国各地最优秀的信息学选手,吉林大学决定举办两场盛大的 NOI 嘉年华活动,分在两个不 ...
- 2436: [Noi2011]Noi嘉年华 - BZOJ
Description NOI2011 在吉林大学开始啦!为了迎接来自全国各地最优秀的信息学选手,吉林大学决定举办两场盛大的 NOI 嘉年华活动,分在两个不同的地点举办.每个嘉年华可能包含很多个活动, ...
- bzoj 2436: [Noi2011]Noi嘉年华
Description NOI2011 在吉林大学开始啦!为了迎接来自全国各地最优秀的信息学选手,吉林大学决定举办两场盛大的 NOI 嘉年华活动,分在两个不同的地点举办.每个嘉年华可能包含很多个活动, ...
- luogu P1973 [NOI2011]NOI 嘉年华 dp
LINK:NOI 嘉年华 一道质量非常高的dp题目. 考虑如何求出第一问 容易想到dp. 按照左端点排序/右端点排序状态还是很难描述. 但是我们知道在时间上肯定是一次选一段 所以就可以直接利用时间点来 ...
- BZOJ 1499 [NOI2005] 瑰丽华尔兹 | 单调队列优化DP
BZOJ 1499 瑰丽华尔兹 | 单调队列优化DP 题意 有一块\(n \times m\)的矩形地面,上面有一些障碍(用'#'表示),其余的是空地(用'.'表示).每时每刻,地面都会向某个方向倾斜 ...
随机推荐
- nginx指定配制文件
nginx启动: 未指定配制文件: ./nginx 指定配制文件: /usr/local/nginx/sbin/nginx -c /home/deploy/nginx-wz/conf/nginx.co ...
- php字符串首字母转换大小写的实例
in: 后端程序首字母变大写:ucwords() <?php$foo = 'hello world!';$foo = ucwords($foo); // Hello World!$bar = ' ...
- Inside TSQL Querying - Chapter 3. Query Tuning
Tuning Methodology When dealing with performance problems, database professionals tend to focus on t ...
- Maven(一)
Maven学习总结(一)——Maven入门 一.Maven的基本概念 Maven(翻译为"专家","内行")是跨平台的项目管理工具.主要服务于基于Java平台的 ...
- ID3DXMesh接口 创建自己的立方体网格
D3DXCreateMeshFVF 首先创建一个ID3DXMesh接口. ID3DXMesh接口的说明可以参数龙书. 这里主要是用代码来讲解: #define VERTEX_FVF (D3DFVF_X ...
- 华为项目管理10大模板Excel版(可直接套用_非常实用)
项目管理是管理学的一个分支学科 ,对项目管理的定义是:指在项目活动中运用专门的知识.技能.工具和方法,使项目能够在有限资源限定条件下,实现或超过设定的需求和期望的过程.项目管理是对一些与成功地达成一系 ...
- CSS的样式合并与模块化
by zhangxinxu from http://www.zhangxinxu.com 原文地址:http://www.zhangxinxu.com/wordpress/?p=931 一.引言 本文 ...
- Linux kernel的 Makefile和Kconfig以及Make menuconfig的关系【转】
本文转载自:http://blog.sina.com.cn/s/blog_4ba5b45e0102e6vp.html 熟悉内核的Makefile对开发设备驱动.理解内核代码结构都是非常重要的linux ...
- TI CC254x BLE教程 1
约定, 第一次翻译这种东西, 专有名词的翻译原则还是不太清楚, 总之涉及有可能误解的词, 都用双语, 如果是简单的, 直接英文或者中文, 取决于我是否能找到中文合适的词来翻译. 何为BLE: 1. 是 ...
- ThinkPHP 3.2.3的 R 方法
R方法是可以调用其他的Controller中的方法, 例如 我想在Mit/DebugController.class.php中调用Foo/DoController.class.php中的share方法 ...