COJ 0967 WZJ的数据结构(负三十三)
WZJ的数据结构(负三十三) |
难度级别:E; 运行时间限制:7000ms; 运行空间限制:262144KB; 代码长度限制:2000000B |
试题描述
|
请你设计一个数据结构,完成以下功能: 给定一个大小为N的整数组A,要求你回答执行N次操作。操作分两种: 操作1:每次操作给你l,r,v三个参数,求Al至Ar中值<=v的个数。 操作2:每次操作给你l,r,v三个参数,将Al至Ar所有数的值设为v。 |
输入
|
第一行为一个正整数N。
第二行为N个整数Ai。 接下来N行每行4个正整数t,l,r,v。若t=2表示操作1,t=1表示操作2。 |
输出
|
对每个操作1输出结果。
|
输入示例
|
6
1 2 2 1 2 3 2 1 4 2 2 1 4 1 1 2 4 1 2 1 4 1 1 3 5 2 2 2 5 2 |
输出示例
|
4
2 4 4 |
其他说明
|
1<=N<=200000
1<=Ai,v<=10^9 |
题解:标程肯定是什么线段树分治什么的奇怪的东西,窝不会写呀,,,就写分块吧,于是就虐标程了哦,excited!
1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<algorithm> 5 #include<queue> 6 #include<cstring> 7 #define PAU putchar(' ') 8 #define ENT putchar('\n') 9 using namespace std; 10 const int maxn=200000+10,maxb=500,inf=-1u>>1; 11 int z[maxn],st[maxb],en[maxb],size,n,A[maxn],B[maxn],set[maxb],siz[maxb]; 12 inline int read(){ 13 int x=0,sig=1;char ch=getchar(); 14 for(;!isdigit(ch);ch=getchar())if(ch=='-')sig=0; 15 for(;isdigit(ch);ch=getchar())x=10*x+ch-'0'; 16 return sig?x:-x; 17 } 18 inline void write(int x){ 19 if(x==0){putchar('0');return;}if(x<0)putchar('-'),x=-x; 20 int len=0,buf[15];while(x)buf[len++]=x%10,x/=10; 21 for(int i=len-1;i>=0;i--)putchar(buf[i]+'0');return; 22 } 23 void build(int b){ 24 for(int i=st[b];i<=en[b];i++)B[i]=A[i];sort(B+st[b],B+en[b]+1);return; 25 } 26 void down(int b){ 27 if(set[b]!=inf){for(int i=st[b];i<=en[b];i++)A[i]=B[i]=set[b];set[b]=inf;}return; 28 } 29 void sett(int L,int R,int cv){ 30 down(z[L]);for(int i=L;i<=R;i++)A[i]=cv;build(z[L]);return; 31 } 32 void setb(int L,int R,int cv){ 33 for(int b=L;b<=R;b++)set[b]=cv;return; 34 } 35 void seto(int ql,int qr,int cv){ 36 if(z[ql]==z[qr])sett(ql,qr,cv); 37 else sett(ql,en[z[ql]],cv),setb(z[ql]+1,z[qr]-1,cv),sett(st[z[qr]],qr,cv);return; 38 } 39 int queryb(int L,int R,int cv){ 40 int ans=0; 41 for(int b=L;b<=R;b++){ 42 if(set[b]!=inf){ 43 if(set[b]<=cv)ans+=siz[b]; 44 }else ans+=upper_bound(B+st[b],B+en[b]+1,cv)-B-st[b]; 45 }return ans; 46 } 47 int queryt(int L,int R,int cv){ 48 int ans=0; 49 if(set[z[L]]!=inf){ 50 if(set[z[L]]<=cv)ans+=(R-L+1); 51 }else for(int i=L;i<=R;i++)if(A[i]<=cv)ans++; 52 return ans; 53 } 54 int queryo(int ql,int qr,int cv){ 55 if(z[ql]==z[qr])return queryt(ql,qr,cv); 56 else return queryt(ql,en[z[ql]],cv)+queryb(z[ql]+1,z[qr]-1,cv)+queryt(st[z[qr]],qr,cv); 57 } 58 void init(){ 59 n=read();size=sqrt((double)n*0.9);int tp,ql,qr,cv; 60 for(int i=1;i<=n;i++){ 61 A[i]=B[i]=read(); 62 z[i]=(i-1)/size+1; 63 if(!st[z[i]])st[z[i]]=i; 64 en[z[i]]=i; 65 } 66 for(int b=1;b<=z[n];b++)build(b),set[b]=inf,siz[b]=en[b]-st[b]+1; 67 for(int i=1;i<=n;i++){ 68 tp=read();ql=read();qr=read();cv=read(); 69 if(tp==2)write(queryo(ql,qr,cv)),ENT; 70 else seto(ql,qr,cv); 71 } 72 return; 73 } 74 void work(){ 75 return; 76 } 77 void print(){ 78 return; 79 } 80 int main(){init();work();print();return 0;}
总结一下这次WA的tip:queryt的时候窝萌是要暴力的呀。。。。。。。。。。。。
还有就是一开始没写B数组哦。。。。。。
转载于:https://www.cnblogs.com/chxer/p/4717039.html
COJ 0967 WZJ的数据结构(负三十三)相关推荐
- COJ 0995 WZJ的数据结构(负五)区间操作
WZJ的数据结构(负五) 难度级别:C: 运行时间限制:1000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 请你设计一个数据结构,完成以下功能: 给定一个大小为 ...
- COJ 1008 WZJ的数据结构(八) 树上操作
传送门:http://oj.cnuschool.org.cn/oj/home/problem.htm?problemID=986 WZJ的数据结构(八) 难度级别:E: 运行时间限制:3000ms: ...
- OpenCV学习笔记(三十一)——让demo在他人电脑跑起来 OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住 OpenCV学习笔记(三十三)——用haar特征训练自己
OpenCV学习笔记(三十一)--让demo在他人电脑跑起来 这一节的内容感觉比较土鳖.这从来就是一个老生常谈的问题.学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那 ...
- 学习Java的三十三个建议
学习Java的三十三个建议 1把Java当成一门新的语言学习(和C++差别很大,真的,我觉得和Delphi的Object Pas cal反而更像一点): 2看<Thinking in Java& ...
- [Python从零到壹] 三十三.图像处理基础篇之什么是图像处理和OpenCV配置
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- 高级shell编程笔记(第三十三章 杂项)
第三十三章 杂项 33.1 交互式和非交互式的shell和脚本 交互式的shell在tty终端从用户的输入中读取命令.另一方面,shell能在启动时读取启动文件,显示一个提示符并默认激活作业控制.用户 ...
- 计算机网络 - 练习(二百三十三)
计算机网络 练习(二百三十三) 以下关于入侵检测系统的描述中,正确的是(). A. 实现内外网隔离与访问控制 B. 对进出网络的信息进行实时的监测与比对,及时发现攻击行为 C. 隐藏内部网络拓扑 D. ...
- 左耳听风 第三十三周
左耳听风 第三十三周 每周完成一个ARTS: 每周至少做一个 leetcode 的算法题.阅读并点评至少一篇英文技术文章.学习至少一个技术技巧.分享一篇有观点和思考的技术文章.(也就是 Algorit ...
- [系统安全] 三十三.恶意代码检测(3)基于机器学习的恶意代码检测技术
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...
- 美学心得(第二百三十三集) 罗国正
美学心得(第二百三十三集) 罗国正 (2022年1月) 3005.查礼是清朝画家,一生好古印章.金石.书画.收藏.擅长画山水花鸟,特长是画墨梅,他官至湖南巡抚.下面介绍他的主要美学思想: 1.强调文人 ...
最新文章
- Unity与C#创建一个3D平台游戏 Learn to Create a 3D Platformer Game with Unity C#
- linux tar 提示 time stamp xxx in the future 解决方法
- html标签article,html标签中section与article 区别
- linux下db2创建批量存储过程,DB2批量执行SQL脚本以及存储过程的实现
- WinForm实现简单的拖拽文件到出题的功能(C#)(3)
- springframework包下的RequestContextHolder类和ServletRequestAttributes类的源码和使用
- LeetCode 125. Valid Palindrome
- 【ASP.NET】基础补习之验证控件
- 特斯拉股价周五收盘下跌7.38% 此前公布第三季度交付量创新高
- 使用matlab进行三角函数拟合
- ROS机器人更换新雷达需要重新配置carto和navigation的哪些参数
- Ubuntu解决text file busy
- c 语言rand()生成随机数
- ThinkpadE450 Win8改Win7 BIOS设置图解
- win7空文件夹删不掉的原因及解决方法
- 有什么助于睡眠的方法,睡眠不好,一定要知道这些方法
- AD怎么输入坐标_CAD入门基础小知识(二)捕捉栅格绘制直线amp;使用坐标绘图...
- 实战Nagios NSCA方式监控Linux系统资源使用情况 -- Nagios配置篇 -- 被监控端
- github中clone代码到本地与直接下载压缩包的区别
- Java--实验一(2)
热门文章
- 如何判断你和优秀AI算法工程师之间的差异?
- 【ESIM】论文阅读笔记:文本蕴含之ESIM
- 深度学习TF—2.TensorFlow2高阶操作
- 3.1 API : DecisionTreeClassifier、DecisionTreeRegressor
- [论文笔记]Poly-encoders: architectures and pre-training strategies for fast and accurate multi-sentence
- pytorch基础知识
- HarmonyOS IoT首著,走进万物互联的世界!
- 10本畅销全球的技术经典,这次整个大的
- 算法与数据中台:网约车业务实践
- 为什么你会觉得微服务架构很别扭