博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[bzoj4552]排序
阅读量:5324 次
发布时间:2019-06-14

本文共 1827 字,大约阅读时间需要 6 分钟。

解题关键:观察发现答案可进行二分,二分答案,将大于等于答案的数记为1,小于的记为0,从而可以使用线段树的区间赋值和区间求和解决。

复杂度:$O(nlog^2n)$

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 using namespace std; 8 typedef long long ll; 9 const int maxn=200005; 10 int a[maxn],sum[maxn<<3],add[maxn<<3]; 11 int t1[maxn],t2[maxn],t3[maxn],v[maxn]; 12 int n,m,r; 13 14 void pushdown(int rt,int m){ 15 if(add[rt]!=-1){ 16 add[rt<<1]=add[rt]; 17 add[rt<<1|1]=add[rt]; 18 sum[rt<<1]=add[rt]*(m-(m>>1)); 19 sum[rt<<1|1]=add[rt]*(m>>1); 20 add[rt]=-1; 21 } 22 } 23 24 void pushup(int rt){ 25 sum[rt]=sum[rt<<1]+sum[rt<<1|1]; 26 } 27 28 void build(int rt,int l,int r){ 29 add[rt]=-1; 30 if(l==r){ 31 sum[rt]=v[l]; 32 return; 33 } 34 int mid=(l+r)>>1; 35 build(rt<<1,l,mid); 36 build(rt<<1|1, mid+1, r); 37 pushup(rt); 38 } 39 40 void update(int rt,int l,int r,int tl,int tr,int c){ 41 if(tl>tr) return;//落掉这句话导致在bzoj一直re 42 if(tl<=l&&tr>=r){ 43 sum[rt]=c*(r-l+1); 44 add[rt]=c; 45 return; 46 } 47 pushdown(rt, r-l+1); 48 int mid=(l+r)>>1; 49 if(tl<=mid) update(rt<<1,l,mid,tl,tr, c); 50 if(tr>mid) update(rt<<1|1, mid+1, r, tl, tr, c); 51 pushup(rt); 52 } 53 54 int query(int rt,int l,int r,int tl,int tr){ 55 if(tl<=l&&tr>=r){ 56 return sum[rt]; 57 } 58 pushdown(rt,r-l+1); 59 int mid=(l+r)>>1,res=0; 60 if(tl<=mid) res+=query(rt<<1,l,mid,tl,tr); 61 if(tr>mid) res+=query(rt<<1|1,mid+1,r,tl,tr); 62 return res; 63 } 64 65 bool check(int x){ 66 for(int i=1;i<=n;i++) v[i]= a[i]>=x?1:0; 67 build(1, 1, n); 68 for(int i=0;i
>1; 87 if(check(mid)) l=mid; 88 else r=mid-1; 89 } 90 return r; 91 } 92 93 int main(){ 94 scanf("%d%d",&n,&m); 95 for(int i=1;i<=n;i++) scanf("%d",a+i); 96 for(int i=0;i

 

转载于:https://www.cnblogs.com/elpsycongroo/p/7347979.html

你可能感兴趣的文章
http://www.bootcss.com/
查看>>
20145308 《网络对抗》 注入shellcode+Return-to-libc攻击 学习总结
查看>>
python tkinter GUI绘制,以及点击更新显示图片
查看>>
C语言栈的实现
查看>>
SRM 628 DIV2
查看>>
2018-2019-2 20165314『网络对抗技术』Exp5:MSF基础应用
查看>>
SecureCRT的使用方法和技巧(详细使用教程)
查看>>
自建数据源(RSO2)、及数据源增强
查看>>
2018icpc徐州OnlineA Hard to prepare
查看>>
使用命令创建数据库和表
查看>>
【转】redo与undo
查看>>
安卓当中的线程和每秒刷一次
查看>>
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>
TCL:表格(xls)中写入数据
查看>>
Oracle事务
查看>>
String类中的equals方法总结(转载)
查看>>
标识符
查看>>
内存地址对齐
查看>>
创新课程管理系统数据库设计心得
查看>>
Could not resolve view with name '***' in servlet with name 'dispatcher'
查看>>