题面

维护一个\(n(n\leqslant 100000)\)个元素序列\(a_1,a_2,\dots,a_n\),有\(m(m\leqslant 100000)\)次操作,分为如下两种。

  1. 给定\(l,r,x\),将\(a_l,a_{l+1},\dots,a_r\)中所有大于\(x\)的元素减去\(x\)
  2. 给定\(l,r,x\),询问\(a_l,a_{l+1},\dots,a_r\)中,有多少个元素恰好等于\(x\)

思路

只要常数卡的好,暴力是珂以过的!

  • 快速读入/快速输出
  • 手动开 Ofast

代码

#include<bits/stdc++.h>
#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")
using namespace std; namespace IO{
const int SIZE=1<<21;
static char ibuf[SIZE],obuf[SIZE],*iS,*iT,*oS=obuf,*oT=oS+SIZE-1;
int qr;
char qu[55],c;
bool f;
#define getchar() (IO::iS==IO::iT?(IO::iT=(IO::iS=IO::ibuf)+fread(IO::ibuf,1,IO::SIZE,stdin),(IO::iS==IO::iT?EOF:*IO::iS++)):*IO::iS++)
#define putchar(x) (*IO::oS++=x,IO::oS==IO::oT?flush():0)
#define flush() (fwrite(IO::obuf,1,IO::oS-IO::obuf,stdout),IO::oS=IO::obuf)
template<typename T>
inline bool read(T&x){
for(f=1,c=getchar();c<48||c>57;c=getchar()){
f^=c=='-';if(!~c) return false;
}
for(x=0;c<=57&&c>=48;c=getchar())
x=(x<<1)+(x<<3)+(c&15);
x=f?x:-x;
return true;
}
inline void outstr(const char*s){
for(int i=0;s[i];++i)
putchar(s[i]);
}
inline void outstr(const string&s){
for(size_t i=0;i<s.length();++i)
putchar(s[i]);
}
template<typename T>
inline void write(T x){
if(!x) putchar(48);
else{
if(x<0) putchar('-'),x=-x;
while(x) qu[++qr]=x%10^48,x/=10;
while(qr) putchar(qu[qr--]);
}
}
template<typename T>
inline void write(T x,const char*s){
if(!x) putchar(48);
else{
if(x<0) putchar('-'),x=-x;
while(x) qu[++qr]=x%10^48,x/=10;
while(qr) putchar(qu[qr--]);
}
outstr(s);
}
struct Flusher_{~Flusher_(){flush();}}io_flusher_;
}
using IO::read;
using IO::write;
using IO::outstr; int a[100005]; int main(){
int n,m,op,l,r,x,ans;
read(n),read(m);
for(int i=1;i<=n;++i){
read(a[i]);
}
while(m--){
read(op),read(l),read(r),read(x);
if(op==1){
for(int i=l;i<=r;++i){
a[i]=(a[i]>x)?(a[i]-x):a[i];
}
}
else{
ans=0;
for(int i=l;i<=r;++i)
ans+=(a[i]==x);
write(ans,"\n");
}
}
return 0;
}

最新文章

  1. Connection broken for id 62, my id = 70, error =
  2. 从NDK开始吧
  3. Android异常:唤醒锁未授权。(Caused by: java.lang.SecurityException: Neither user 10044 nor current process has android.permission.WAKE_LOCK.)
  4. JS,html压缩及混淆工具
  5. .NET开发工具之Excel导出公共类
  6. fiddler实现手机端抓包(代理)
  7. 实验12:Problem J: 动物爱好者
  8. 清除IE中Ajax缓存,Chrome不需要
  9. HDU 4539 郑厂长系列故事——排兵布阵
  10. 模拟I2C从机程序
  11. 打勾显示输入的密码 --EditText与setTransformationMethod
  12. linux文件属性
  13. 1006-HBase操作实战(JAVA API状态)
  14. LPC1768的IIS通讯
  15. sql的having深入理解;group by只返回一组的一行,compute更好
  16. prefixspan是挖掘频繁子序列,子序列不一定是连续的,当心!!!
  17. Django框架的探索
  18. UTF8 UTF16 之间的互相转换
  19. HTTPS和SSL握手过程(转载)
  20. 洛谷P1144 最短路计数(SPFA)

热门文章

  1. GO编译时不避免引入外部动态库的解决方法
  2. CURL提交--POST/GET-带header信息
  3. 齐博x2模型里边钩子的创建与使用
  4. C语言客房管理&amp;酒店管理
  5. 5.pygame快速入门-精灵和精灵组
  6. vue3+element-plus+登录逻辑token+环境搭建
  7. 云原生之旅 - 10)手把手教你安装 Jenkins on Kubernetes
  8. SpringBoot 08: SpringBoot综合使用 MyBatis, Dubbo, Redis
  9. 在服务器上搭建Jenkins自动化部署工具
  10. 2 c++编程-核心