当前位置: 首页 > news >正文

P13977题解

题目链接

这道题是典型的数列分块。你问我为什么不用线段树,是因为用线段树容易写炸,毕竟这道题让你求的东西非常复杂,而用分块就可以十分暴力的解决。我们可以先把每个块都用一个vector维护,这是为了以后用upper_bound求,同时我们为了可以在块中二分肯定要把每个块都排序一遍,这样就可以求出小于c的数。

处理散块时我们直接暴力就可以,处理整块就需要二分求出小于的值,然后累加即可。其实代码还是较好写的。

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+10;
int n,a[N],len,L[N],R[N],tag[N],pos[N],cnt,op,l,r,x,ans;
vector<int>v[N];
void biuld(){len=sqrt(n);while(1){++cnt, L[cnt]=(cnt-1)*len+1, R[cnt]=cnt*len;if(R[cnt]>=n){R[cnt]=n;break;}}for(int i=1;i<=cnt;i++){for(int j=L[i];j<=R[i];j++){pos[j]=i, v[i].emplace_back(a[j]); }sort(v[i].begin(),v[i].end());}
}
void change(int x){v[x].clear();for(int i=L[x];i<=R[x];i++) v[x].emplace_back(a[i]);sort(v[x].begin(),v[x].end());
}
void update(int l, int r, int x){if(pos[l]==pos[r]){for(int i=l;i<=r;i++) a[i]+=x;change(pos[l]);return;}for(int i=l;i<=R[pos[l]];i++) a[i]+=x;for(int i=pos[l]+1;i<pos[r];i++) tag[i]+=x;for(int i=L[pos[r]];i<=r;i++) a[i]+=x;change(pos[l]), change(pos[r]);
}
int find(int l, int r, int x){ans=0, x=x*x;if(pos[l]==pos[r]){for(int i=l;i<=r;i++){if(a[i]+tag[pos[l]]<x) ans++;}return ans;}for(int i=l;i<=R[pos[l]];i++) if(a[i]+tag[pos[l]]<x) ans++;for(int i=pos[l]+1;i<pos[r];i++){ans+=upper_bound(v[i].begin(),v[i].end(),x-tag[i]-1)-v[i].begin();}for(int i=L[pos[r]];i<=r;i++) if(a[i]+tag[pos[r]]<x) ans++;return ans;
}
signed main(){cin>>n;for(int i=1;i<=n;i++) cin>>a[i];biuld();for(int i=1;i<=n;i++){scanf("%lld %lld %lld %lld",&op,&l,&r,&x);if(!op) update(l,r,x);else cout<<find(l,r,x)<<'\n';}return 0;
}

http://www.dtcms.com/a/435248.html

相关文章:

  • 网络推广岗位职责和任职要求成都做整站优化
  • DAY 38 Dataset和Dataloader类 - 2025.10. 2
  • Privacy Eraser(隐私保护软件)多语便携版
  • C4D R20新增功能概述及体积对象SDF类型深度解析
  • 上海做网站公司推荐简单网上书店网站建设php
  • HarmonyOS应用开发深度解析:ArkTS语法精要与UI组件实践
  • 北京示范校建设网站wordpress快速发布
  • 常用网站布局土巴兔这种网站怎么做
  • toLua[四] Examples 03_CallLuaFunction分析
  • 建设景区网站推文企业网站排名怎么优化
  • 汽车信息安全测试与ISO/SAE 21434标准
  • Hadoop HA 集群安装配置
  • 10.2总结
  • 旅游网站建设最重要的流程如何制作公众号教程
  • 淄博建设局网站秀堂h5官网
  • 【动态规划DP:纸币硬币专题】P2834 纸币问题 3
  • springbatch使用记录
  • 平面设计师网站都有哪些网站突然被降权怎么办
  • 前向传播与反向传播(附视频链接)
  • 广州建设工程造价管理站橙色网站欣赏
  • ipv6之6to4配置案例
  • 太仓有专门做网站的地方吗沧州企业网站专业定制
  • gRPC从0到1系列【14】
  • JVM的内存分配策略有哪些?
  • 卡特兰数【模板】(四个公式模板)
  • Process Monitor 学习笔记(5.5):保存/打开追踪记录——复盘、复现与分享的正确姿势
  • 【机器学习宝藏】深入解析经典人脸识别数据集:Olivetti Faces
  • 【C++】深入理解红黑树:概念、性质和实现
  • 制作卖东西网站玩具网站 下载
  • 网站建设培训课程wordpress描述插件