题意:

两个序列a和b,初始a[i]=0,b[i]给定且为一个1到n的排列,要求维护以下两种操作:
1.区间[L,R]内a[i]加1

2.询问[L,R]内a[i]/b[i](下取整)之和

n,q<=1e5

思路:

实际上a[i]/b[i]的线段树可以改为树状数组,因为只需要支持单点修改和前缀区间求和

 #include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<vector>
using namespace std;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef vector<int> VI;
#define fi first
#define se second
#define MP make_pair
const int N=;
int ad[N<<],mn[N<<],T[N],b[N],n,m,cas; void pushdown(int p)
{
if(ad[p])
{
ad[p<<]+=ad[p];
mn[p<<]+=ad[p];
ad[p<<|]+=ad[p];
mn[p<<|]+=ad[p];
ad[p]=;
}
} void pushup(int p)
{
mn[p]=min(mn[p<<],mn[p<<|]);
} void build(int l,int r,int p)
{
ad[p]=;
if(l==r)
{
mn[p]=b[l];
return;
}
int mid=(l+r)>>;
build(l,mid,p<<);
build(mid+,r,p<<|);
pushup(p);
} void modify(int x)
{
for(int i=x;i<=n;i+=i&-i) T[i]++;
} int ask(int x)
{
int ans=;
for(int i=x;i;i-=i&-i) ans+=T[i];
return ans;
} void update(int l,int r,int x,int y,int p)
{
if((x<=l)&&(r<=y))
{
ad[p]--;
mn[p]--;
return;
}
pushdown(p);
int mid=(l+r)>>;
if(x<=mid) update(l,mid,x,y,p<<);
if(y>mid) update(mid+,r,x,y,p<<|);
pushup(p);
} void clear(int l,int r,int p)
{
if(l==r)
{
if(!mn[p])
{
mn[p]=b[l];
modify(l);
}
return;
}
pushdown(p);
int mid=(l+r)>>;
if(!mn[p<<]) clear(l,mid,p<<);
if(!mn[p<<|]) clear(mid+,r,p<<|);
pushup(p);
} int main()
{ while(scanf("%d%d",&n,&m)!=EOF)
{
for(int i=;i<=n;i++) scanf("%d",&b[i]);
build(,n,);
for(int i=;i<=n;i++) T[i]=;
for(int i=;i<=m;i++)
{
char ch[];
scanf("%s",ch);
if(ch[]=='a')
{
int l,r;
scanf("%d%d",&l,&r);
update(,n,l,r,);
clear(,n,);
}
else
{
int l,r;
scanf("%d%d",&l,&r);
printf("%d\n",ask(r)-ask(l-));
}
}
}
return ;
}

最新文章

  1. iOS----集成ijkplayer视频直播
  2. (转)Javascript本地存储小结
  3. sharepoint 2013 入门1_ 建立一个网页程序
  4. Getting Started With Hazelcast 读书笔记(第二章、第三章)
  5. Java虚拟机12:Java内存模型
  6. Oracle - 数据库的实例、表空间、用户、表之间关系
  7. http 响应码
  8. 【好文翻译】一步一步教你使用Spire.Doc转换Word文档格式
  9. 构建高可用web站点学习(三)
  10. 做一个有理想的IT人
  11. Sublime Text2 快捷键设置
  12. XSS CSRF
  13. UML和绘图工具Visio介绍
  14. SVG的内部事件添加
  15. yii2 Nav::widget() 和 Menu::widget()
  16. MySql Host is blocked because of many connection errors;
  17. void指针和const指针
  18. 图片处理之 Base64
  19. 脑残式网络编程入门(四):快速理解HTTP/2的服务器推送(Server Push)
  20. RobotFrameWork接口设计规范

热门文章

  1. 微服务熔断限流Hystrix之流聚合
  2. 【转】Java中创建对象的5种方式
  3. CF385C Bear and Prime Numbers
  4. 02html基础
  5. ICEcoder显示汉字出现乱码的处理
  6. 洛谷 P2894 [USACO08FEB]酒店Hotel
  7. 洛谷 P1455 搭配购买
  8. NSMutableDictionary 排序问题
  9. 【算法】最长回文子串 longest palindrome substring
  10. vue-gemini-scrollbar(vue组件-自定义滚动条)