关键词:
solution
6 7 8都好说
对于1 2 3 4只需自己yy一个函数就行
(ps:我把L打成l....)
1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #define ll long long 5 using namespace std; 6 const int N=1000006; 7 inline ll maxn(ll a,ll b){return a>b?a:b;} 8 inline ll minn(ll a,ll b){return a<b?a:b;} 9 10 int n,m; 11 ll v[N]; 12 struct son 13 { 14 ll max,min; 15 }; 16 son a[N*5]; 17 ll ji[N*5]; 18 void pushup(int x) 19 { 20 a[x].max=maxn(a[x<<1].max,a[x<<1|1].max); 21 a[x].min=minn(a[x<<1].min,a[x<<1|1].min); 22 } 23 void pushdown(int x) 24 { 25 if(ji[x]) 26 { 27 ji[x<<1]+=ji[x]; 28 ji[x<<1|1]+=ji[x]; 29 a[x<<1].max+=ji[x]; 30 a[x<<1].min+=ji[x]; 31 a[x<<1|1].min+=ji[x]; 32 a[x<<1|1].max+=ji[x]; 33 ji[x]=0; 34 } 35 } 36 void build(int l,int r,int x) 37 { 38 if(l==r) 39 { 40 a[x].min=a[x].max=v[l]; 41 return ; 42 } 43 int mid=(l+r)>>1; 44 build(l,mid,x<<1); 45 build(mid+1,r,x<<1|1); 46 pushup(x); 47 } 48 void addqu(int L,int R,ll c,int l,int r,int x) 49 { 50 if(L<=l&&r<=R) 51 { 52 a[x].max+=c; 53 a[x].min+=c; 54 ji[x]+=c; 55 return ; 56 } 57 pushdown(x); 58 int mid=(l+r)>>1; 59 if(L<=mid) 60 addqu(L,R,c,l,mid,x<<1); 61 if(mid<R) 62 addqu(L,R,c,mid+1,r,x<<1|1); 63 pushup(x); 64 } 65 void adddian(int pos,ll c,int l,int r,int x) 66 { 67 if(l==r) 68 { 69 a[x].min+=c; 70 a[x].max+=c; 71 return ; 72 } 73 int mid=(l+r)>>1; 74 pushdown(x); 75 if(pos<=mid) 76 adddian(pos,c,l,mid,x<<1); 77 else 78 adddian(pos,c,mid+1,r,x<<1|1); 79 pushup(x); 80 } 81 ll qq(int pos,int l,int r,int x) 82 { 83 if(l==r) 84 return a[x].max; 85 pushdown(x); 86 int mid=(l+r)>>1; 87 if(pos<=mid) 88 return qq(pos,l,mid,x<<1); 89 else 90 return qq(pos,mid+1,r,x<<1|1); 91 } 92 void Swap(int posx,int posy) 93 { 94 ll valx=qq(posx,1,n,1),valy=qq(posy,1,n,1); 95 adddian(posx,valy-valx,1,n,1); 96 adddian(posy,valx-valy,1,n,1); 97 } 98 ll zuoxiao(int L,int R,ll c,int l,int r,int x) 99 { 100 if(L<=l&&r<=R&&a[x].min>c) 101 return -1; 102 if(l==r) 103 return a[x].max<c?a[x].max:-1; 104 int mid=(l+r)>>1; 105 ll temp; 106 pushdown(x); 107 if(R>mid) 108 { 109 temp=zuoxiao(L,R,c,mid+1,r,x<<1|1); 110 return temp==-1?zuoxiao(L,R,c,l,mid,x<<1):temp; 111 } 112 else 113 return zuoxiao(L,R,c,l,mid,x<<1); 114 } 115 ll zuoda(int L,int R,ll c,int l,int r,int x) 116 { 117 if(L<=l&&r<=R&&a[x].max<c) 118 return -1; 119 if(l==r) 120 return a[x].max>c?a[x].max:-1; 121 int mid=(l+r)>>1; 122 ll temp; 123 pushdown(x); 124 if(R>mid) 125 { 126 temp=zuoda(L,R,c,mid+1,r,x<<1|1); 127 return temp==-1?zuoda(L,R,c,l,mid,x<<1):temp; 128 } 129 else 130 return zuoda(L,R,c,l,mid,x<<1); 131 } 132 ll youxiao(int L,int R,ll c,int l,int r,int x) 133 { 134 if(L<=l&&r<=R&&a[x].min>c) 135 return -1; 136 if(l==r) 137 return a[x].max<c?a[x].max:-1; 138 int mid=(l+r)>>1; 139 ll temp; 140 pushdown(x); 141 if(L<=mid) 142 { 143 temp=youxiao(L,R,c,l,mid,x<<1); 144 return temp==-1?youxiao(L,R,c,mid+1,r,x<<1|1):temp; 145 } 146 else 147 return youxiao(L,R,c,mid+1,r,x<<1|1); 148 } 149 ll youda(int L,int R,ll c,int l,int r,int x) 150 { 151 if(L<=l&&r<=R&&a[x].max<c) 152 return -1; 153 if(l==r) 154 return a[x].max>c?a[x].max:-1; 155 int mid=(l+r)>>1; 156 ll temp; 157 pushdown(x); 158 if(L<=mid) 159 { 160 temp=youda(L,R,c,l,mid,x<<1); 161 return temp==-1?youda(L,R,c,mid+1,r,x<<1|1):temp; 162 } 163 else 164 return youda(L,R,c,mid+1,r,x<<1|1); 165 } 166 int main(){ 167 //freopen("1.txt","r",stdin); 168 freopen("ccsworld.in","r",stdin); 169 freopen("ccsworld.out","w",stdout); 170 scanf("%d%d",&n,&m); 171 for(int i=1;i<=n;++i) 172 scanf("%lld",&v[i]); 173 174 build(1,n,1); 175 while(m--) 176 { 177 int kk; 178 int x,y; 179 ll w; 180 scanf("%d%d",&kk,&x); 181 if(kk==1)printf("%lld ",zuoxiao(1,x,qq(x,1,n,1),1,n,1)); 182 else if(kk==2)printf("%lld ",zuoda(1,x,qq(x,1,n,1),1,n,1)); 183 else if(kk==3)printf("%lld ",youxiao(x,n,qq(x,1,n,1),1,n,1)); 184 else if(kk==4)printf("%lld ",youda(x,n,qq(x,1,n,1),1,n,1)); 185 else if(kk==5){scanf("%d",&y);Swap(x,y);} 186 else if(kk==6){scanf("%d%lld",&y,&w);addqu(x,y,w,1,n,1);} 187 else if(kk==7){scanf("%d%lld",&y,&w);addqu(x,y,-w,1,n,1);} 188 } 189 //while(1); 190 return 0; 191 }
cogs2123.[hzoi2015]glassbeads
2123.[HZOI2015]GlassBeads★★★ 输入文件:MinRepresentations.in 输出文件:MinRepresentations.out 简单对比时间限制:1s 内存限制:1024MB【题目描述】给定长度为n(n<=300000)的循环同构的字符串,定义... 查看详情
[cogs2258][hzoi2015]复仇的序幕曲
Description你还梦不梦痛不痛,回忆这么重你怎么背得动----序言当年的战火硝烟已经渐渐远去,可仇恨却在阿凯蒂王子的心中越来越深他的叔父三年前谋权篡位,逼宫杀死了他的父王,用铁血手腕平定了国内所有的不满只有他一个... 查看详情
cogs2287[hzoi2015]疯狂的机器人
【题目描述】现在在二维平面内原点上有一只机器人他每次操作可以选择向右走,向左走,向下走,向上走和不走(每次如果走只能走一格)但是由于本蒟蒻施展的大魔法,机器人不能走到横坐标是负数或者纵坐标是负数的点上... 查看详情
cogs2479hzoi2016—偏序
http://cogs.pro/cogs/problem/problem.php?pid=2479 (题目链接)题意 四维偏序。Solution CDQ套CDQ。细节 第二次分治不能直接按照mid分离两类数了。代码//cogs2479#include<algorithm>#include<iostream>#include<cstdlib>#in 查看详情
cogs2478.[hzoi2016]简单的最近公共祖先
2478.[HZOI2016]简单的最近公共祖先★☆ 输入文件:easy_LCA.in 输出文件:easy_LCA.out 简单对比时间限制:2s 内存限制:128MB【题目描述】 给定一棵有n个节点的有根树,根节点为1,每个节点有... 查看详情
cogs2478.[hzoi2016]简单的最近公共祖先
2478.[HZOI2016]简单的最近公共祖先★☆ 输入文件:easy_LCA.in 输出文件:easy_LCA.out 简单对比时间限制:2s 内存限制:128MB【题目描述】 给定一棵有n个节点的有根树,根节点为1,每个节点有... 查看详情
cogs2334.[hzoi2016]最小函数值
时间限制:1s 内存限制:128MB【题目描述】有n个函数,分别为F1,F2,...,Fn。定义Fi(x)=Aix2+Bix+Ci(x∈N∗)。给定这些Ai、Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个)。【输入格式】第一行... 查看详情
四边形不等式cogs1658-[hzoi2014]合并石子
【题目大意】在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。试设计出1个算法,计算出将N堆石子合并成1堆的最小得... 查看详情
[cogs2421][hzoi2016]简单的treap笛卡尔树
笛卡尔树就是你给两维限制,一维堆R,一维二叉搜索树K,平地拔起一棵Treap,最广范的应用:用LCA求区间最值,建Treap,还有个什么范围topk我表示并不会查都查不到。它最妙最高的地方在于用栈来建树:我们可以先排序K然后一... 查看详情
cogs2479.[hzoi2016]偏序[cdq分治套cdq分治四维偏序]
传送门 给定一个有n个元素的序列,元素编号为1~n,每个元素有三个属性a,b,c,求序列中满足i<j且ai<aj且bi<bj且ci<cj的数对(i,j)的个数。 对于100%的数据,1<=n<=50000,保证所有的ai、bi、ci分别组成三个1~n的排列。&... 查看详情
hzoi2015帕秋莉的超级多项式(代码片段)
题面题目分析超级模板题:多项式乘法多项式求逆多项式开根多项式求导多项式求积分多项式求对数多项式求自然对数为底的指数函数多项式快速幂代码实现#include<iostream>#include<cstring>#include<cmath>#include<algorithm>... 查看详情
cogs1224.[shoi2002]百事世界杯之旅(期望概率)
COGS1224.[SHOI2002]百事世界杯之旅★ 输入文件:pepsi.in 输出文件:pepsi.out 简单对比 时间限制:1s 内存限制:128MB 【问题描述】 “……在2002年6月之前购买的百事任何饮料的瓶盖上都... 查看详情
聪聪归来!
时隔半年,我又捡起了我的博客园,准备记录点什么东西,好记性不如烂笔头,对于面向对象的语言来说,把方法封装起来或者做成dll保存起来,后续在使用的时候会轻松很多。程序员不能老想着用自己的脑子记住所有的方法,... 查看详情
[国家集训队]聪聪可可(代码片段)
Description聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃、两个人都想玩儿电脑(可是他们家只有一台电脑)……遇到这种问题,一般情况下石头剪刀布就好了,可是他们已经... 查看详情
bzoj2152聪聪可可
2152:聪聪可可TimeLimit: 3Sec MemoryLimit: 259MBSubmit: 3915 Solved: 2015[Submit][Status][Discuss]Description聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃、两个人... 查看详情
cogs2104.[noip2015]神奇的幻方
★ 输入文件:2015magic.in 输出文件:2015magic.out 简单对比时间限制:1s 内存限制:256MB1#include<iostream>2#include<cstdio>3inta[41][41];4intmain()5{6freopen("2015magic.i 查看详情
cogs2104.[noip2015]神奇的幻方
★ 输入文件:2015magic.in 输出文件:2015magic.out 简单对比时间限制:1s 内存限制:256MB 模拟一开始数组开小了。。屠龙宝刀点击就送#include<cstdio>intn,h[1600],l[1600],hf[45][45];intmain() 查看详情
ac日记——[noip2015]运输计划cogs2109
[NOIP2015]运输计划 思路: 树剖+二分; 代码:#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>usingnamespacestd;#definemaxn300005#defineINF0x7fffffffintn,deep[m 查看详情