2017.10.28 排序 思考记录
这个题有一种套路,就是大小关系转化成01串,这样就变成了二分检验问题,,
就是把排序变成区间修改,然后单点查询。。
把所有比他小的赋成0,比他大的赋成1
然后判断要求位是0还是1来判断答案与当前值的大小
码:
#include<iostream>
#include<cstdio>
using namespace std;
#define zuo o<<1,l,mid
#define you o<<1|1,mid+1,r
#define N 100005
int bj[N<<2],sz[N<<2],op,wen,a,b,c,n,m,ans,ll[N],rr[N],aa[N],qq[N],i;
void down(int o,int l,int r)
{int ll=o<<1,rr=o<<1|1,mid=(r+l)>>1;if(bj[o]==1){bj[o]=0;bj[ll]=1;bj[rr]=1;sz[ll]=0;sz[rr]=0; }if(bj[o]==2){bj[o]=0;bj[ll]=2;bj[rr]=2;sz[ll]=(mid-l+1);sz[rr]=(r-mid); }
}
void up(int o)
{int ll=o<<1,rr=o<<1|1;sz[o]=sz[ll]+sz[rr];
}
void gai(int o,int l,int r)
{if(a<=l&&r<=b){if(op==0){sz[o]=c*(r-l+1);bj[o]=c+1;}else {c+=sz[o]; }return;}down(o,l,r);int mid=(l+r)>>1;if(a<=mid)gai(zuo);if(b>mid)gai(you); up(o);
}
int main()
{scanf("%d%d",&n,&m);for(i=1;i<=n;i++){scanf("%d",&aa[i]); }for(i=1;i<=m;i++){scanf("%d%d%d",&qq[i],&ll[i],&rr[i]);}scanf("%d",&wen);int l=1,r=n+1;while(l<r){int mid=(l+r)>>1; for(i=1;i<=n;i++)if(aa[i]<=mid){a=i;b=i;c=0;op=0;gai(1,1,n); }else{a=i;b=i;c=1;op=0;gai(1,1,n); }for(i=1;i<=m;i++){c=0;op=1;a=ll[i],b=rr[i];gai(1,1,n);int lin=c;op=0;if(qq[i]==0){c=1; a=rr[i]-lin+1;b=rr[i];if(a<=b)gai(1,1,n);c=0; a=ll[i];b=rr[i]-lin;if(a<=b)gai(1,1,n); }else{c=1; a=ll[i];b=ll[i]+lin-1;if(a<=b)gai(1,1,n); c=0; a=ll[i]+lin;b=rr[i];if(a<=b)gai(1,1,n); } }op=1;c=0;a=b=wen;gai(1,1,n);if(c==0){ans=mid,r=mid;}else l=mid+1;}
printf("%d",ans);
}
2017.10.28 排序 思考记录相关推荐
- 2017.10.28 压缩 思考记录
这个题首先要知道M和R不是栈的搭配,是贪心的搭配,,就是向左找到第一个M.. 如 abababab cdcdcdcd abababab cdcdcdcd = abRRcdcdcdcdR != Ma ...
- 2017.10.6 单词 思考记录
少有的会做的ac自动机题 .这个题是匹配模式串. 所以就不需要匹配的过程,只需要建出fail树,然后直接拓扑 由于每次加进去一个单词,这个单词的每一个字母都有可能作为最后一个字母影响他的失配,所以词路 ...
- 2017.10.5 高速公路 思考记录
..一开始死活不知道样例8/3是怎么算出来的.. 后来才发现右端点要-1.. 这个题说是期望,但因为每个点的概率相同,所以直接求和然后除就可以了 维护每个区间的答案,听说直接维护答案很难写,,感觉还可 ...
- 2017.10.1 蚯蚓 思考记录
现在看来这个题真心不难. 如果能保证一个从大到小的顺序的话,对所有的数依次进行相同比例的分裂操作,左右两边一定也是单调的 由于每次要+q,等价于取出元素-q,这在式子里是不影响大小关系的 所以就sor ...
- 2017.9.28 产品加工 思考记录
很早之前做的了.发现bzoj上竟然没提交过 于是又重推了一遍 首先这个ti<=5是用来让n^2的复杂度降一降的, 然后就考虑装每个物品之后各个机器的耗时,同时,对于一个A机器的耗时,可能会有多个 ...
- 2017.9.28 降雨量 思考记录
论逻辑清晰的重要性. 首先大小的关系明摆着是要你建一颗线段树 然后就可以分类讨论了 x没有 y有 x有 y没有 x没有 y没有 x有 y有 对于都没有的情况 只可能是maybe 对于一个没有的情况, ...
- 2017.7.28 愤怒的小鸟 思考记录
现在来看,这个noip的状压dp就不是很难了 先枚举抛物线(一个确定的,两个确定的) 再对每个抛物线枚举目标,把能打的压在一起 最后扫一遍抛物线,枚举状态出最优解即可 注意此题精度!设成0.00005 ...
- 2017.9.10 连续攻击游戏 思考记录
这个题..可以把它当成结论题搞, 结论就是对于每个数字的出现次数,如果区间1~n内的出现次数都>=2,那么这个区间1~n内都会合法 这个结论很好证明,连到外面可以视为停止 外面连进来的可以视 ...
- 2017.10.10 杀人游戏 思考记录
这个题题目描述还是有一点问题..这里的知道关系是有传递性的.第一次理解成只会明白直接相连的,最小点覆盖 -- 这样就成np了吧.. 所以就比较显然了,,对于每组能互达的强连通分量,都只需一个头上 ...
最新文章
- Taurus.MVC 2.0 开源发布:WebAPI开发教程
- 基于Springboot实现仿百度网盘开发
- SQLite.NET提供程序的选择
- UA MATH571B 试验设计III 单因素试验设计3
- boost::gil::view_is_basic用法的测试程序
- Hive元数据信息表详解
- ajax改变div内容,jquery ajax双击div可直接修改div中的内容
- the android emulator process,Android studio报错:The emulator process for AVD (xxx) was killed
- QNAP 威联通 NAS的个人使用经验 篇三:#剁主计划-西安# 时隔3年,NAS使用须知
- 开发转测试的面试总结
- 「分布式系统之美」知乎圆桌精选大放送第二期|不要放过任何你感兴趣的话题
- 交叉编译使用 hostapd-2.0 在开发板上开机自启动无线网卡 AP 功能
- AD20 PCB导出Gerber、拼板,华秋DFM一键拼板,同理支持其他PCB EDA软件的Gerber导入与拼板
- Solid Sphere Inc.:智能手机原创恶搞App“Takeshobo Quest - POP TEAM EPIC ASSAULTS”
- div默认外边距是多少_CSS外边距
- Git是什么?如何用?
- 计算机考研容易的985211学校,全国211院校考研难度分析,建议收藏!(详细版)...
- python卸载opencv包_Ubuntu下安装与卸载opencv模块
- PLS-DA中的LV(潜在变量)数量
- 如果你喜欢的女孩有了男朋友,但她男朋友比你差很多,怎么办?
热门文章
- c#split方法拆分为数据_【转载】C#使用Split函数根据特定分隔符分割字符串
- Kotlin学习笔记 第二章 类与对象 第五节 可见性 第六节 扩展
- 基于Matlab的跨孔CT胖射线追踪算法(三)
- java运行多个linux命令_在shell的一行中运行多个命令
- Windows 10 + anaconda3快速配置tensorflow-gpu开发环境
- ubuntu安装常用软件(比如python、搜狗拼音、cudnn等)
- WORD如何比较原文档和别人修改过的文档?
- day28 java的IO流 (1)对IO的初步了解
- java foreach6_Java foreach循环是否会创建一个新对象?
- bottleneck resnet网络_深度学习|图像分类:ResNet(二)