AC日记——「SCOI2015」国旗计划 LiBreOJ 2007
2024-10-18 10:18:02
思路:
代码:
#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 ;
}
最新文章
- #iPhone6与iPhone6Plus适配#如何在Xcode 6中创建 PCH 文件
- cookie 操作
- css -- 题目汇总
- 联系 管理 Hibernate4+Spring JPA+SpringMVC+Volecity搭建web应用(三)
- SVN补充
- HDU 4655 Cut Pieces(数学分析题)
- MYSQL 配置slave故障
- hibernate annotation注解 主键ID自增长
- Java Singleton 单例模式
- Java SE (6)之 多线程
- MyBatis(5):MyBatis集成Spring事务管理(上)
- sql server 2008 在安装了活动目录以后无法启动服务了
- GitBook 配置说明
- javaScript-什么是变量?
- luogu P3810 三维偏序(陌上花开)cdq分治
- TensorFlow:检查显卡支持哪个版本的CUDA
- python中类似三元表达式的写法
- BZOJ4095 : [Usaco2013 Dec]The Bessie Shuffle
- Maven将依赖包、jar/war包及配置文件输出到指定目录
- java异常中throw和throws的区别
热门文章
- Codeforces Round #343 (Div. 2) B
- 关闭nginx日志
- 二叉树系列 - 二叉树里的最长路径 例 [LeetCode] Binary Tree Maximum Path Sum
- 数据结构:Bitset
- 在不安装Windows服务的情况下,如何进行调试或测试
- 【BZOJ】1552/3506 [Cerc2007]robotic sort
- 【BZOJ】1984 月下“毛景树”
- java springmvc4 图片或文件上传
- httpd -v command not found
- bzoj 1050 并查集