bzoj 3867: Nice boat
题意:给定一个正整数序列,操作是1.区间赋值,2.区间大于x的数与x取gcd,最后输出操作后的序列
用平衡树维护相同数组成的连续段,每次操作至多增加两个连续段,操作2记录一下区间最小值然后暴力修改,每个数在被修改次数不会超过质因数个数,于是均摊单次修改复杂度在log^2(n)左右
#include<bits/stdc++.h>
char buf[],*ptr=buf-;
int _(){
int x=,c=*++ptr;
while(c<)c=*++ptr;
while(c>)x=x*+c-,c=*++ptr;
return x;
}
int gcd(int a,int b){
for(int c;b;c=a,a=b,b=c%b);
return a;
}
void mins(int&a,int b){if(a<b)a=b;}
int T;
struct node{
int l,r,x,mx,rnd;
node*lc,*rc;
void pr(){
if(!this)return;
lc->pr();
for(int i=l;i<=r;++i)printf("%d ",x);
rc->pr();
}
void up(){
mx=x;
if(lc)mins(mx,lc->mx);
if(rc)mins(mx,rc->mx);
}
void gcds(int v){
if(!this||mx<=v)return;
if(x>v)x=gcd(x,v);
lc->gcds(v);
rc->gcds(v);
up();
}
}ns[],*ss[],*rt;
struct drt{node*lc,*rc;};
int sp=;
node*_new(int l,int r,int x){
node*w=ss[--sp];
w->l=l;w->r=r;w->mx=w->x=x;
return w;
}
void del(node*&w){
if(!w)return;
del(w->lc);
del(w->rc);
ss[sp++]=w;
w=;
}
node*merge(node*a,node*b){
if(!a)return b;
if(!b)return a;
if(a->rnd>b->rnd){
a->rc=merge(a->rc,b);
a->up();
return a;
}
b->lc=merge(a,b->lc);
b->up();
return b;
}
drt split(node*w,int x){
if(!w)return (drt){,};
drt m;
if(w->l>=x){
m=split(w->lc,x);
w->lc=m.rc;
m.rc=w;
w->up();
return m;
}
if(w->r<x){
m=split(w->rc,x);
w->rc=m.lc;
m.lc=w;
w->up();
return m;
}
node*u=m.lc=_new(w->l,x-,w->x);
u->lc=w->lc;
u->up();
m.rc=w;
w->lc=;w->l=x;
w->up();
return m;
}
int main(){
fread(buf,,sizeof(buf),stdin);
srand();
for(int i=;i<=;++i)(ss[sp++]=ns+i)->rnd=rand();
for(T=_();T;--T){
int n=_();
rt=;
for(int i=;i<=n;++i){
node*w=_new(i,i,_());
rt=merge(rt,w);
}
for(int q=_(),o,l,r,x;q;--q){
o=_();l=_();r=_();x=_();
if(o==){
drt a=split(rt,l);
drt b=split(a.rc,r+);
del(b.lc);
node*w=_new(l,r,x);
rt=merge(a.lc,merge(w,b.rc));
}else{
drt a=split(rt,l);
drt b=split(a.rc,r+);
b.lc->gcds(x);
rt=merge(a.lc,merge(b.lc,b.rc));
}
}
rt->pr();
putchar();
del(rt);
}
return ;
}
bzoj 3867: Nice boat的更多相关文章
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- BZOJ 2127: happiness [最小割]
2127: happiness Time Limit: 51 Sec Memory Limit: 259 MBSubmit: 1815 Solved: 878[Submit][Status][Di ...
- Lesson 20 One man in a boat
Text Fishing is my favourite sport. I often fish for hours without catching anything. But this does ...
- BZOJ 3275: Number
3275: Number Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 874 Solved: 371[Submit][Status][Discus ...
- BZOJ 2879: [Noi2012]美食节
2879: [Noi2012]美食节 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1834 Solved: 969[Submit][Status] ...
- bzoj 4610 Ceiling Functi
bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...
- BZOJ 题目整理
bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...
- 【sdoi2013】森林 BZOJ 3123
Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数.第三行包含N个非负整数 ...
- 【清华集训】楼房重建 BZOJ 2957
Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些 ...
随机推荐
- C++进阶3.字节对齐 联合
C++进阶3.字节对齐 联合 20131011 多益和金山笔试 知识漏洞 20131011 前言: 今天下午是多益网络的笔试,整体感觉还好,但是找到很多的知识漏洞.一直笔试到6:00,然后紧张的从会生 ...
- Oracle recovery manager failed to restore
解决办法: 1:清理过期失效的备份, 2:增加recovery_file_dest_size参数值即可: SQL> show parameter db_recover NAME ...
- Personal Introduction
专业:计算机科学与技术 我是博客园的新人,虽然接触编程世界只有一年,基础知识比较差,编程能力差,但对于这个专业,我还是充满兴趣,希望有一天能独当一面,从今天起,我将分享一些在学习web前端和其他方面的 ...
- MongoDB中MapReduce不同的写法,不同的结果
MapReduce有两种写法,也可以说mongodb所有的命令行都有两种写法. 但突然间发现MapReduce不同的写法会有不同的结果,接下来我们一起来看: 第一种:直接使用扩展属性. 1)emit函 ...
- Conky配置文件
Conky是一个可以在linux系统中实时显示系统性能的工具,美观且十分好用,我们选择安装conky-all程序包 # set to yes if you want Conky to be forke ...
- java高并发下的数据安全
高并发下的数据安全 我们知道在多线程写入同一个文件的时候,会存现“线程安全”的问题(多个线程同时运行同一段代码,如果每次运行结果和单线程运行的结果是一样的,结果和预期相同,就是线程安全的).如果是My ...
- 哈工大LTP语言分析:分词、词性标注、句法分析等
1. LTP介绍和安装 LTP语言云官网 在线演示 | 语言云(语言技术平台云 LTP-Cloud) 安装LTP的python接口包 $ sudo pip install pyltp 模型文件下载 ...
- swift实现label换行
so easy 换行的实质为在字符串中添加"\n" so, understand???
- #Eclipse web工程 部署 三种方式 3
Eclipse web工程 部署 三种方式 3.热部署 在Eclipse中,实现 修改一个.java文件或者.jsp文件甚至是配置文件,不需要重启WEB服务器的前提下让修改生效,实现tomcat自动加 ...
- Uoj 129 寿司晚宴
Uoj 129 寿司晚宴 显然合法性只与每个数所含的质因子有关,考虑状压 \(dp\) 若记录所有质因子状态显然爆炸,注意到每个数最多有一个超过 \(\sqrt 500\) 的大质因子,而其他的小质因 ...