POJ 1769 Minimizing maximizer (线段树优化dp)
dp[i = 前i中sorter][j = 将min移动到j位置] = 最短的sorter序列。
对于sorteri只会更新它右边端点r的位置,因此可以把数组改成一维的,dp[r] = min(dp[r],dp[j]+1), l≤j<r。
不是滑窗,单调队列用用不了,但是可以用线段树去维护这个最小值。
/*********************************************************
* ------------------ *
* author AbyssalFish *
**********************************************************/
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<queue>
#include<vector>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<algorithm>
#include<cmath>
using namespace std; #define para int o = 1, int l = 1,int r = n
#define TEMPvar int mid = (l+r)>>1, lc = (o<<1), rc = (o<<1|1);
#define lsn lc, l, mid
#define rsn rc, mid+1, r
#define insd ql<=l&&r<=qr
const int maxn = 5e4;
const int ST_SIZE = <<;
const int INF = 0x3f3f3f3f;
int Min[ST_SIZE];
int n, m;
int dp[maxn+]; void build(para)
{
if(l == r){
Min[o] = dp[l];
}else {
TEMPvar
build(lsn);
build(rsn);
Min[o] = min(Min[lc],Min[rc]);
}
} int qpos,qval;
void update(para)
{
if(l == r){
Min[o] = qval;
}else {
TEMPvar
if(qpos<=mid) update(lsn);
else update(rsn);
Min[o] = min(Min[lc],Min[rc]);
}
}
int ql,qr;
int qMin(para)
{
if(insd){ return Min[o]; }
else {
int res = INF;
TEMPvar
if(ql<=mid) res = min(res,qMin(lsn));
if(qr>mid) res = min(res,qMin(rsn));
return res;
}
} //#define LOCAL
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
scanf("%d%d",&n,&m);
memset(dp+,0x3f,sizeof(int)*(n-));
build();
for(int i = ; i < m; i++){
scanf("%d%d",&ql,&qr);
if((qval = qMin()+) < dp[qr]){
dp[qpos = qr] = qval;
update();
}
}
printf("%d\n",dp[n]);
return ;
}
POJ 1769 Minimizing maximizer (线段树优化dp)的更多相关文章
- poj 1769  Minimizing maximizer   线段树维护dp
		题目链接 给出m个区间, 按区间给出的顺序, 求出覆盖$ [1, n] $ 至少需要多少个区间. 如果先给出[10, 20], 在给出[1, 10], 那么相当于[10, 20]这一段没有被覆盖. 令 ... 
- POJ.1769.Minimizing maximizer(线段树 DP)
		题目链接 /* 题意:有m个区间,问最少要多少个区间能覆盖[1,n] 注:区间要按原区间的顺序,不能用排序贪心做 设dp[i]表示最右端端点为i时的最小值 dp[e[i]]=min{dp[s[i]]~ ... 
- POJ 2376 Cleaning Shifts (线段树优化DP)
		题目大意:给你很多条线段,开头结尾是$[l,r]$,让你覆盖整个区间$[1,T]$,求最少的线段数 题目传送门 线段树优化$DP$裸题.. 先去掉所有能被其他线段包含的线段,这种线段一定不在最优解里 ... 
- Codeforces Round #426 (Div. 2)  D  线段树优化dp
		D. The Bakery time limit per test 2.5 seconds memory limit per test 256 megabytes input standard inp ... 
- BZOJ2090: [Poi2010]Monotonicity 2【线段树优化DP】
		BZOJ2090: [Poi2010]Monotonicity 2[线段树优化DP] Description 给出N个正整数a[1..N],再给出K个关系符号(>.<或=)s[1..k]. ... 
- [AGC011F] Train Service Planning [线段树优化dp+思维]
		思路 模意义 这题真tm有意思 我上下楼梯了半天做出来的qwq 首先,考虑到每K分钟有一辆车,那么可以把所有的操作都放到模$K$意义下进行 这时,我们只需要考虑两边的两辆车就好了. 定义一些称呼: 上 ... 
- 【bzoj3939】[Usaco2015 Feb]Cow Hopscotch  动态开点线段树优化dp
		题目描述 Just like humans enjoy playing the game of Hopscotch, Farmer John's cows have invented a varian ... 
- 洛谷$P2605\ [ZJOI2010]$基站选址 线段树优化$dp$
		正解:线段树优化$dp$ 解题报告: 传送门$QwQ$ 难受阿,,,本来想做考试题的,我还造了个精妙无比的题面,然后今天讲$dp$的时候被讲到了$kk$ 先考虑暴力$dp$?就设$f_{i,j}$表示 ... 
- D - The Bakery CodeForces - 834D  线段树优化dp···
		D - The Bakery CodeForces - 834D 这个题目好难啊,我理解了好久,都没有怎么理解好, 这种线段树优化dp,感觉还是很难的. 直接说思路吧,说不清楚就看代码吧. 这个题目转 ... 
- 4.11 省选模拟赛 序列 二分 线段树优化dp set优化dp 缩点
		容易想到二分. 看到第一个条件容易想到缩点. 第二个条件自然是分段 然后让总和最小 容易想到dp. 缩点为先:我是采用了取了一个前缀最小值数组 二分+并查集缩点 当然也是可以直接采用 其他的奇奇怪怪的 ... 
随机推荐
- 排序工作量之新任务(SHOI2001)
			排序工作量之新任务(SHOI2001) 给出两个整数n和t,求n的全排列中逆序对数为t的个数,和逆序对数为t的字典序最小全排列. 首先第一个问题可以用dp解决,\(f[i][j]\)表示前i个数,j个 ... 
- [Xcode 实际操作]五、使用表格-(3)设置UITableView单元格图标
			目录:[Swift]Xcode实际操作 本文将演示如何给表格行设置图标. 打开资源文件夹[Assets.xcassets], 在资源文件夹中导入两张图片:一张彩色,一张灰色,作为单元格的图标. [+] ... 
- MCP|XN|Decreased Antibiotic Susceptibility Driven by Global Remodeling of the Klebsiella pneumoniae Proteome(肺炎杆菌通过整体重构蛋白质组降低抗生素敏感性)
			文献名:Decreased Antibiotic Susceptibility Driven by Global Remodeling of the Klebsiella pneumoniae Pro ... 
- thinkphp5命令行访问
			入口文件后加一个空格就行了 1,首先cd到站点目录public下,我的入口文件是默认的index.php,然后执行以下命令, 2,php要加入环境变量 访问index模块下的index控制器下的tes ... 
- 点击对应的a标签返回相应的第几个
			面试中遇到的问题,前两天一直没有解决,今天想想还是得要想办法才行,其实仔细想的话很简单,惭愧啊,面试的时候没有做出来! 题目是这样的,如果一个body中有5个a标签,当我们点击对应的a标签时,aler ... 
- Restful 4 -- 认证组件、权限组件、频率组件、url注册器、响应器、分页器
			一.认证组件.权限组件.频率组件总结: 只有认证通过的用户才能访问指定的url地址,比如:查询课程信息,需要登录之后才能查看,没有登录,就不能查看,这时候需要用到认证组件 1.认证组件格式 写一个认 ... 
- Flask&&人工智能AI  --4
			一.flask请求上下文源码解读 通过上篇源码分析,我们知道了有请求发来的时候就执行了app(Flask的实例化对象)的__call__方法,而__call__方法返回了app的wsgi_app(en ... 
- 实现一个类似bootstrap的多级下拉菜单
			<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ... 
- 类成员函数的重载、覆盖和隐藏区别 (C++)(转)
			类成员函数的重载.覆盖和隐藏区别 (C++) 这是本人第一次写博客,主要是想记录自己的学习过程.心得体会,一是可以方便以后回顾相关知识,二是可以与大家相互学习交流. 关于C++中类成员函数的重载. ... 
- 【Linux】ubuntu安装jdk-6u45-linux-x64.bin
			for : Android4.4源码编译 环境 : ubuntu12.04_desktop_amd64 1. 1.1.jdk-6u45-linux-x64.bin 放置于 /home 1.2.命令&q ... 
