bzoj4444 国旗计划
倍增,预处理出每个点往后$2^i$个应该选哪个人
我用的treap就是快
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<string>
#include<cmath>
#include<ctime>
#include<queue>
#include<stack>
#include<map>
#include<set>
#define rre(i,r,l) for(int i=(r);i>=(l);i--)
#define re(i,l,r) for(int i=(l);i<=(r);i++)
#define Clear(a,b) memset(a,b,sizeof(a))
#define inout(x) printf("%d",(x))
#define douin(x) scanf("%lf",&x)
#define strin(x) scanf("%s",(x))
#define LLin(x) scanf("%lld",&x)
#define op operator
#define CSC main
typedef unsigned long long ULL;
typedef const int cint;
typedef long long LL;
using namespace std;
void inin(int &ret)
{
ret=;int f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=;ch=getchar();}
while(ch>=''&&ch<='')ret*=,ret+=ch-'',ch=getchar();
ret=f?-ret:ret;
}
namespace treap
{
const int xxx=;
int w[xxx],id[xxx],r[xxx],ch[xxx][],ed,root;
void rotate(int &k,int d)
{
int p=ch[k][d^];
ch[k][d^]=ch[p][d];
ch[p][d]=k;k=p;
}
void add(int &k,int x,int ID)
{
if(!k)
{
k=++ed;w[k]=x,id[k]=ID;r[k]=rand();
return ;
}
int d=x>w[k];
add(ch[k][d],x,ID);
if(r[ch[k][d]]<r[k])rotate(k,d^);
}
int findhou(int x)
{
int k=root,ret=;
while(k)
if(w[k]>x)ret=w[k],k=ch[k][];
else k=ch[k][];
return ret;
}
int findqian(int x)
{
if(!x)x=;
int k=root,ret=;
while(k)
if(w[k]<x)ret=id[k],k=ch[k][];
else k=ch[k][];
return ret;
}
void add(int x,int ID){add(root,x,ID);}
};
int n,m;
struct wocao
{
int l,r,id;
void in(int i){inin(l),inin(r),id=i;if(r<l)r+=m;}
bool op < (const wocao &a)const {return l<a.l;}
}a[];
int fa[][],ans[];
void hh(int x)
{
int temp=a[x].id,R=m+a[x].l;
rre(i,,)if(fa[x][i])
if(a[fa[x][i]].r<R)
x=fa[x][i],ans[temp]+=<<i;
}
set<pair<int,int> >ss;
int main()
{
freopen("in.in","r",stdin);
freopen("out.out","w",stdout);
inin(n),inin(m);
re(i,,n)a[i].in(i);
re(i,n+,n<<)a[i]=a[i-n],a[i].l+=m,a[i].r+=m,a[i].id=;
n<<=;
sort(a+,a+n+);
// for(int i=1;i<=n;i++)printf("%d %d\n",a[i].l,a[i].r);
treap::add(a[n].l,n);
// ss.insert(make_pair(a[n].l,n));
rre(i,n-,)
{
fa[i][]=treap::findqian(treap::findhou(a[i].r));
// fa[i][0]=(--ss.upper_bound(make_pair(a[i].r,0x7FFFFFFF)))->second;
// printf("%d\n",fa[i][0]);
treap::add(a[i].l,i);
// ss.insert(make_pair(a[i].l,i));
}
re(i,,)rre(j,n,)fa[j][i]=fa[fa[j][i-]][i-];
re(i,,n)if(a[i].id)
hh(i);
re(i,,n>>)printf("%d ",ans[i]+);
return ;
}
bzoj4444 国旗计划的更多相关文章
- [bzoj4444] 国旗计划 双指针+倍增
Description A国正在开展一项伟大的计划--国旗计划.这项计划的内容是边防战士手举国旗环绕边境线奔袭一圈.这项计划需要多名边防战士以接力的形式共同完成,为此,国土安全局已经挑选了N名优秀的边 ...
- luogu4155/bzoj4444 国旗计划 (倍增)
成环,把每个区间变成两个然后展开成链 一个人的下一个人肯定是在彼此相交的基础上,右端点越大越好 于是就把它连到相交的.右端点最大的点上,连成一棵树 于是每次只要从某个节点开始,一直在树上跳到覆盖了一个 ...
- 【bzoj4444 scoi2015】国旗计划
题目描述 A 国正在开展一项伟大的计划 —— 国旗计划.这项计划的内容是边防战士手举国旗环绕边境线奔袭一圈.这项计划需要多名边防战士以接力的形式共同完成,为此,国土安全局已经挑选了 NN 名优秀的边防 ...
- 【BZOJ4444】[Scoi2015]国旗计划 双指针+倍增
[BZOJ4444][Scoi2015]国旗计划 Description A国正在开展一项伟大的计划——国旗计划.这项计划的内容是边防战士手举国旗环绕边境线奔袭一圈.这项计划需要多名边防战士以接力的形 ...
- [BZOJ4444] [Luogu 4155] [LOJ 2007] [SCOI2015]国旗计划(倍增)
[BZOJ4444] [Luogu 4155] [LOJ 2007] [SCOI2015]国旗计划(倍增) 题面 题面较长,略 分析 首先套路的断环为链.对于从l到r的环上区间,若l<=r,我们 ...
- 【bzoj4444】[Scoi2015]国旗计划 倍增
题目描述 给出一个圈和若干段,问:对于所有的 $i$ ,选择第 $i$ 段的情况下,最少需要选择多少段(包括第 $i$ 段)能够覆盖整个圈? 输入 第1行,包含2个正整数N,M,分别表示边防战士数量和 ...
- 【BZOJ4444】国旗计划 - 决策单调性
Description A国正在开展一项伟大的计划——国旗计划.这项计划的内容是边防战士手举国旗环绕边境线奔袭一圈.这项计划需要多名边防战士以接力的形式共同完成,为此,国土安全局已经挑选了N名优秀的边 ...
- [bzoj4444] [loj#2007] [洛谷P4155] [Scoi2015] 国旗计划
Description \(A\) 国正在开展一项伟大的计划--国旗计划.这项计划的内容是边防战士手举国旗环绕边境线奔袭一圈.这项计划需要多名边防战士以接力的形式共同完成,为此,国土安全局已经挑选了 ...
- bzoj 4444: [Scoi2015]国旗计划
Description A国正在开展一项伟大的计划--国旗计划.这项计划的内容是边防战士手举国旗环绕边境线奔袭一圈.这 项计划需要多名边防战士以接力的形式共同完成,为此,国土安全局已经挑选了N名优秀的 ...
随机推荐
- gh-ost:不一样的在线表结构变更
简介: 2016年8月份,shlomi-noach在GitHub Engineering发文宣布gh-ost开源.gh-ost是什么?一个不依赖触发器实现的在线表结构变更工具. 对于数据库运维人员来说 ...
- LigerUi自动检索输入
var availableTags = [ "ActionScript", "AppleScript", "Asp", "BASI ...
- abap调用代码块
1:abap 调用代码块. *&---------------------------------------------------------------------* *& Re ...
- [django]form的content-type(mime)
form默认的content-type是 'application/x-www-form-urlencoded' 可以修改为多文档: enctype即为mime类型 <form action=& ...
- Java写xml文件
import java.io.FileOutputStream; import org.dom4j.Document; import org.dom4j.DocumentHelper; import ...
- python3 判断字符串是否为IP
#!/usr/bin/python3 # -*- coding: utf-8 -*- import re ip = "192.168.1.1" ip = re.findall(&q ...
- "pip3 install requests"
后续设置参考 “selenium python3” https://www.cnblogs.com/jpr-ok/p/10108231.html
- SpringMVC连接多数据源配置
在spring-config-datasource.xml中配置: <ds:ibatis-config> <ds:sql-map-client id="sqlMapClie ...
- mac date
格式化UTC为可读格式 mbp:~ gavin$ date -r 1546848158 2019年 1月 7日 星期一 16时02分38秒 CST 获取当前 UTC mbp:~ gavin$ date ...
- 从零开始一起学习SLAM | 为什么要用齐次坐标?
在涉及到计算机视觉的几何问题中,我们经常看到齐次坐标这个术语.本文介绍一下究竟为什么要用齐次坐标?使用齐次坐标到底有什么好处? 什么是齐次坐标?简单的说:齐次坐标就是在原有坐标上加上一个维度: 使用齐 ...