题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6315

题目大意:告诉你a,b两个数组,a数组初始化为0,b数组告诉你长度和具体值,接下来有q次操作,add操作是从向区间[l,r]加1,query操作是求区[l,r]的ai/bi的总和。

解题思路:维护一个mn,表示这个区间里的a最少加几次才能有新的贡献。比如1最多对总和造成q的贡献,2最多q/2,q/3,q/4,一直到q/n。最少要加min(b[i]-a[i]%b[i])次才能有新的贡献,如果这个区间+1之后没有贡献,也就是mn>1,就直接打标记.

AC代码:

  1. #include<iostream>
  2. using namespace std;
  3. #define rep(i,a,n) for(int i=a;i<n;i++)
  4. #define clr(a,x) memset(a,x,sizeof(a))
  5. #define pb push_back
  6. #define mp make_pair
  7. #define inf 0x3f3f3f3f
  8. #define lson rt<<1
  9. #define rson rt<<1|1
  10. #define Lson l,m,lson
  11. #define Rson m+1,r,rson
  12. typedef long long ll;
  13.  
  14. const ll mod= 1e9+;
  15. const int maxn=1e5+;
  16.  
  17. int n;
  18. int a[maxn],b[maxn];
  19. char s[];
  20.  
  21. int lazy[maxn<<],sum[maxn<<],mn[maxn<<];
  22. void pushup(int rt){
  23. sum[rt]=sum[lson]+sum[rson];
  24. mn[rt]=min(mn[lson],mn[rson]);
  25. }
  26. void pushdown(int rt,int m){
  27. if(lazy[rt]==){
  28. return;
  29. }
  30. lazy[lson]+=lazy[rt];
  31. lazy[rson]+=lazy[rt];
  32. mn[lson]-=lazy[rt];
  33. mn[rson]-=lazy[rt];
  34. lazy[rt]=;
  35. }
  36.  
  37. void build(int l,int r,int rt){
  38. lazy[rt]=;
  39. sum[rt]=;
  40. if(l==r){
  41. mn[rt]=b[l];
  42. return ;
  43. }
  44. int m=(l+r)>>;
  45. build(Lson);
  46. build(Rson);
  47. pushup(rt);
  48. }
  49.  
  50. void update(int L,int R,int add,int l,int r,int rt){
  51. if(L<=l&&r<=R&&mn[rt]>){
  52. lazy[rt]++,mn[rt]--;
  53. return ;
  54. }
  55. if(l==r){
  56. sum[rt]++;
  57. mn[rt]=b[l];
  58. return ;
  59. }
  60. pushdown(rt,r-l+);
  61. int m=(l+r)>>;
  62. if(L<=m) update(L,R,add,Lson);
  63. if(m<R) update(L,R,add,Rson);
  64. pushup(rt);
  65. }
  66.  
  67. int query(int L,int R,int l,int r,int rt){
  68. if(L<=l&&r<=R){
  69. return sum[rt];
  70. }
  71. pushdown(rt,r-l+);
  72. int m=(r+l)>>,ret=;
  73. if(L<=m) ret+=query(L,R,Lson);
  74. if(m<R) ret+=query(L,R,Rson);
  75. return ret;
  76. }
  77. int main(){
  78. int q;
  79. while(~scanf("%d%d",&n,&q)){
  80. for(int i=;i<=n;i++){
  81. scanf("%d",&b[i]);
  82. }
  83. build(,n,);
  84. while(q--){
  85. int l,r;
  86. scanf("%s %d %d",s,&l,&r);
  87. if(s[]=='a'){
  88. update(l,r,,,n,);
  89. }else{
  90. printf("%d\n",query(l,r,,n,));
  91. }
  92. }
  93. }
  94. return ;
  95. }

(2018 Multi-University Training Contest 2)Problem G - Naive Operations的更多相关文章

  1. (2018 Multi-University Training Contest 3)Problem D. Euler Function

    //题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6322 //题目大意:给定 k,求第 k 小的数 n,满足 φ(n) 是合数.显然 φ(1) = 1 ...

  2. (2018 Multi-University Training Contest 3)Problem L. Visual Cube

      //题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6330//题目大意:按照一定格式画出一个 a×b×c 的长方体.  #include <b ...

  3. ( 2018 Multi-University Training Contest 2)

    2018 Multi-University Training Contest 2) HDU 6311 Cover HDU 6312 Game HDU 6313 Hack It HDU 6314 Mat ...

  4. zoj 4020 The 18th Zhejiang University Programming Contest Sponsored by TuSimple - G Traffic Light(广搜)

    题目链接:The 18th Zhejiang University Programming Contest Sponsored by TuSimple - G Traffic Light 题解: 题意 ...

  5. HDU 5726 GCD (2016 Multi-University Training Contest 1)

      Time Limit: 5000MS   Memory Limit: 65536KB   64bit IO Format: %I64d & %I64u Description Give y ...

  6. HDU4888 Redraw Beautiful Drawings(2014 Multi-University Training Contest 3)

    Redraw Beautiful Drawings Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. HDU 4897 Little Devil I(树链剖分)(2014 Multi-University Training Contest 4)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4897 Problem Description There is an old country and ...

  8. HDU 4906 Our happy ending(2014 Multi-University Training Contest 4)

    题意:构造出n个数 这n个数取值范围0-L,这n个数中存在取一些数之和等于k,则这样称为一种方法.给定n,k,L,求方案数. 思路:装压 每位 第1为表示这种方案能不能构成1(1表示能0表示不能)   ...

  9. hdu6315( 2018 Multi-University Training Contest 2)

    bryce1010模板 http://acm.hdu.edu.cn/showproblem.php?pid=6315 /*hdu 1007 首先我们在建立线段树之前应该思考的是线段树的节点维护一个什么 ...

随机推荐

  1. CentOS7.X中使用yum安装nginx的方法

    nginx官方文档说明:http://nginx.org/en/linux_packages.html#RHEL-CentOS 一.安装前准备: yum install yum-utils 二.添加源 ...

  2. CF Manthan, Codefest 16 B. A Trivial Problem

    数学技巧真有趣,看出规律就很简单了 wa 题意:给出数k  输出所有阶乘尾数有k个0的数 这题来来回回看了两三遍, 想的方法总觉得会T 后来想想  阶乘 emmm  1*2*3*4*5*6*7*8*9 ...

  3. efk学习整理

    概念 Logstash 数据收集处理引擎.支持动态的从各种数据源搜集数据,并对数据进行过滤.分析.丰富.统一格式等操作,然后存储以供后续使用. kibana 可视化化平台.它能够搜索.展示存储在 El ...

  4. 第 10 章 容器监控 - 080 - Weave Scope 容器地图

    Weave Scope 容器地图 Weave Scope 的最大特点是会自动生成一张 Docker 容器地图,让我们能够直观地理解.监控和控制容器. 安装 执行如下脚本安装运行 Weave Scope ...

  5. caffe分类

    1.制作数据  标签   label.bat dir/s/on/b >.txt 2.制作lmdb     convert_lmdb.bat SET GLOG_logtostderr= E:\ca ...

  6. springboot killed springboot 无故停止运行解决办法

    测试环境的服务部署在阿里云服务器上,运行一段时间总是自动宕掉,在配置文件里加上内存溢出配置,也不能打印出相关日志,一直找不出原因.今天在网上:http://www.cnblogs.com/chener ...

  7. HDOJ-2011

    #include<iostream> #include<cstdio> using namespace std; int main(){ int m,n,i; float su ...

  8. git 拉取远程代码

    git 拉取远程代码 || 利用vscode编辑器自带了git,可在ctrl+~打开控制台拉取代码,非常好用哦~在实际项目开发过程中,往往是已经存在远程项目了,我们定义的需求是只需要简单的操作git, ...

  9. 『超分辨率重建』从SRCNN到WDSR

    超分辨率重建技术(Super-Resolution)是指从观测到的低分辨率图像重建出相应的高分辨率图像.SR可分为两类:    1. 从多张低分辨率图像重建出高分辨率图像    2. 从单张低分辨率图 ...

  10. pycharm配置QtDesigner

    QtDesigner C:\Qt\Qt5.12.2\5.12.2\mingw73_64\bin\designer.exe $ProjectFileDir$ Pyuic C:\Anaconda3\pyt ...