AC日记——「SCOI2015」国旗计划 LiBreOJ 2007
思路:
代码:
#include <cstdio>
#include <algorithm>
#define maxn 800010
int n,m,ai[maxn][],bi[maxn],f[maxn<<],st[maxn];
int g[maxn],nxt[maxn<<],q[maxn<<],t,ans[maxn],L,x,y,i;
inline void in(int&a)
{
char c;
while(!(((c=getchar())>='')&&(c<='')));
a=c-'';while(((c=getchar())>='')&&(c<=''))(a*=)+=c-'';
}
inline int lower(int x)
{
int l=,r=m,mid,t;
while(l<=r) if(bi[mid=(l+r)>>]<=x) l=(t=mid)+;else r=mid-;
return t;
}
inline void up(int &x,int y)
{
if(x<y) x=y;
}
void dfs(int x)
{
q[++t]=x;
if(x<=m)
for(int i=L;;i++)
if(q[t-i]>=x+m)
{
ans[x]=i;
break;
}
for(int i=g[x];i;i=nxt[i]) dfs(i);
t--;
}
int main()
{
freopen("data.txt","r",stdin);
in(n),in(m);
for(m=,i=;i<=n;i++) in(ai[i][]),in(ai[i][]),bi[++m]=ai[i][],bi[++m]=ai[i][];
for(std::sort(bi+,bi+m+),i=;i<=n;i++)
{
st[i]=x=lower(ai[i][]),y=lower(ai[i][]);
if(x<y) up(f[x],y),up(f[x+m],y+m);
else up(f[],y),up(f[x],y+m),up(f[x+m],m+m);
}
for(i=;i<=m+m;i++) up(f[i],f[i-]);
for(i=;i<m+m;i++) nxt[i]=g[f[i]],g[f[i]]=i;
for(L=-,i=;i<=m;i=f[i])L++;
dfs(m+m);
for(i=;i<=n;i++) printf("%d ",ans[st[i]]);
return ;
}
AC日记——「SCOI2015」国旗计划 LiBreOJ 2007的更多相关文章
- 「SCOI2015」国旗计划 解题报告
「SCOI2015」国旗计划 蛮有趣的一个题 注意到区间互不交错,那么如果我们已经钦定了一个区间,它选择的下一个区间是唯一的,就是和它有交且右端点在最右边的,这个可以单调队列预处理一下 然后往后面跳拿 ...
- loj #2007. 「SCOI2015」国旗计划
#2007. 「SCOI2015」国旗计划 题目描述 A 国正在开展一项伟大的计划 —— 国旗计划.这项计划的内容是边防战士手举国旗环绕边境线奔袭一圈.这项计划需要多名边防战士以接力的形式共同完成 ...
- AC日记——「SCOI2015」情报传递 LiBreOJ 2011
#2011. 「SCOI2015」情报传递 思路: 可持久化树状数组模板: 代码: #include <bits/stdc++.h> using namespace std; #defin ...
- AC日记——「SCOI2015」小凸玩矩阵 LiBreOJ 2006
「SCOI2015」小凸玩矩阵 思路: 二分+最大流: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 300 ...
- AC日记——「HNOI2017」单旋 LiBreOJ 2018
#2018. 「HNOI2017」单旋 思路: set+线段树: 代码: #include <bits/stdc++.h> using namespace std; #define max ...
- AC日记——「SCOI2016」幸运数字 LiBreOJ 2013
「SCOI2016」幸运数字 思路: 线性基: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 20005 # ...
- AC日记——「SCOI2016」背单词 LiBreOJ 2012
#2012. 「SCOI2016」背单词 思路: Orz: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 1 ...
- AC日记——「SDOI2017」序列计数 LibreOJ 2002
「SDOI2017」序列计数 思路: 矩阵快速幂: 代码: #include <bits/stdc++.h> using namespace std; #define mod 201704 ...
- #2007. 「SCOI2015」国旗计划
好久没更过博了.. 首先断环为链,因为线段互相不包含,所以对每个线段\(i\)可以找一个满足\(r_j\geq l_i\)的\(l_j\)最小的线段,dp的时候\(i\)就会从\(j\)转移过来 然后 ...
随机推荐
- httpClient需要的jar包
- RGB向yuv的转化最优算法,快得让你吃惊!
朋友曾经给我推荐了一个有关代码优化的pdf文档<让你的软件飞起来>,看完之后,感受颇深.为了推广其,同时也为了自己加深印象,故将其总结为word文档.下面就是其的详细内容总结,希望能于己于 ...
- Codeforces Round #341 (Div. 2)A
A. Wet Shark and Odd and Even time limit per test 2 seconds memory limit per test 256 megabytes inpu ...
- 【题解】Crash的数字表格 BZOJ 2154 莫比乌斯反演
题目传送门 http://www.lydsy.com/JudgeOnline/problem.php?id=2154 人生中第一道自己做出来的莫比乌斯反演 人生中第一篇用LaTeX写数学公式的博客 大 ...
- Leetcode 002. 两数相加
1.题目描述 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表 ...
- 【BZOJ1093】【ZJOI2007】最大半联通子图 [DP][Tarjan]
最大半连通子图 Time Limit: 30 Sec Memory Limit: 162 MB[Submit][Status][Discuss] Description 一个有向图G=(V,E)称为 ...
- CentOS7安装MySQL5.7以及修改密码
CentOS7安装mysql [root@bd005 ~]# wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch. ...
- mssql手工注入2
--+ 先说一些函数的说明: substring(str,start,len) 截取字符串的作用,第一个参数为要截取的字符串,第二个参数为从哪里开始截取,第三个参数为截取的长度 ascii(char) ...
- echart自定义tooltip
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Linux进程调度与源码分析(二)——进程生命周期与task_struct进程结构体
1.进程生命周期 Linux操作系统属于多任务操作系统,系统中的每个进程能够分时复用CPU时间片,通过有效的进程调度策略实现多任务并行执行.而进程在被CPU调度运行,等待CPU资源分配以及等待外部事件 ...