地址:http://acm.uestc.edu.cn/#/problem/show/1344

题目:

卿学姐种美丽的花

Time Limit: 8000/4000MS (Java/Others)     Memory Limit: 125535/65535KB (Java/Others)

Submit Status

众所周知,在喵哈哈村,有一个温柔善良的卿学姐。

卿学姐喜欢和她一样美丽的花。所以卿学姐家的后院有很多的花坛。

卿学姐有nn个花坛,一开始第ii个花坛里有A[i]A[i]朵花。每过一段时间,卿学姐都会在花坛里种上新的花。

作为一个聪明的学姐,卿学姐的种花方式也是与众不同 , 每一次,卿学姐会在第xx个花坛种上yy朵花,然后在第x+1x+1个花坛上种上y−1y−1朵花,再在第x+2x+2个花坛上种上y−2y−2朵花......以此类推,直到种到最后一个花坛,或者不需要种花为止。

喵哈哈的村民们都喜欢去卿学姐的后院赏花,沈宝宝也不例外。然而沈宝宝可不是省油的灯,怎么可能会老老实实地赏花呢。每次沈宝宝来时,都会随机询问卿学姐在第ii个花坛有多少朵花。

花坛的花实在太多了,卿学姐实在是数不过来。于是现在她向你求助,希望你能帮她数出花坛里多少朵花。

Input

第一行输入两个整数,花坛个数NN和操作次数QQ。

第二行NN个整数A[1],A[2],A[3].....A[N]A[1],A[2],A[3].....A[N]。 ( 1≤A[i]≤2311≤A[i]≤231 )

接下来QQ行,每行一个操作。

  1. 1 x y 表示卿学姐会在xx号花坛种yy朵花,并按相应的规律在后面的花坛上种花。

  2. 2 x 表示沈宝宝问卿学姐第xx个花坛有多少朵花。

数据保证:

  • 1≤N≤1061≤N≤106

  • 1≤Q≤2∗1061≤Q≤2∗106

  • 对于操作 11 , 1≤x≤N1≤x≤N,1≤y≤1091≤y≤109

  • 对于操作 22 , 1≤x≤N1≤x≤N

Output

对于每个询问操作,按顺序输出答案对772002+233772002+233取模的值。

Sample input and output

Sample Input Sample Output
6 3
1 2 3 2 1 2
1 2 3
2 3
2 6
5
2

思路:

这题之前做过,,所以一看到就去卿学姐的代码搞一发(因为我发现之前提交的代码看不到了,所以就用的卿学姐的)

后来听说会查重,就只好重写了。。

思路:用线段树处理,每个节点记录要加的值,并记录加的次数,然后查询的时候加上原来的数值就好了,不过这题会爆int,重写的时候居然又错了一次,,,,,惨

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstdio>
 4 #include <cmath>
 5 #include <cstring>
 6 #include <queue>
 7 #include <stack>
 8 #include <map>
 9 #include <set>
10 #include <vector>
11 #include <cstdlib>
12 #include <string>
13 #include <bitset>
14
15 #define PI acos((double)-1)
16 #define E exp(double(1))
17 #define K 1000000
18 using namespace std;
19
20 struct node
21 {
22     int left,right;
23     long long cnt,x;
24
25 };
26 struct node tree[4*K+9];
27 int a[K+9];
28 void build(int id,int l,int r)
29 {
30     tree[id].left=l;tree[id].right=r;
31     if(l==r)
32     {
33         tree[id].x=tree[id].cnt=0;
34     }
35     else
36     {
37         build(2*id,l,(l+r)/2);
38         build(2*id+1,(l+r)/2+1,r);
39     }
40 }
41 void update(int id,int l,int r,int v)
42 {
43     if(tree[id].left ==l &&  tree[id].right==r)
44     {
45         tree[id].x+=v;tree[id].cnt++;
46     }
47     else
48     {
49         int mid=(tree[id].left+tree[id].right)/2;
50         if (r<=mid) update(id*2,l,r,v);
51         else if(l>mid)  update(id*2+1,l,r,v);
52         else update(id*2,l,mid,v),update(id*2+1,mid+1,r,v-(mid+1-l));
53     }
54 }
55
56 long long query(int id,int x)
57 {
58     if(tree[id].left==tree[id].right)
59         return tree[id].x;
60     long long sum=0;
61     sum+=tree[id].x-(x-tree[id].left)*tree[id].cnt;
62     int mid=(tree[id].left+tree[id].right)/2;
63     if (x<=mid)  return sum+query(id*2,x);
64     else  return sum+query(id*2+1,x);
65 }
66
67 int main(void)
68 {
69     int n,m;
70     cin>>n>>m;
71     for(int i=1;i<=n;i++)
72         scanf("%d",&a[i]);
73     build(1,1,n);
74     while(m--)
75     {
76         int op;
77         scanf("%d",&op);
78         if(op==1)
79         {
80             long long x,v,y;
81             scanf("%lld%lld",&x,&v);
82             y=v+x-1;
83             if(y>n)y=n;
84             update(1,x,y,v);
85         }
86         else
87         {
88             int x;
89             scanf("%d",&x);
90             printf("%d\n",(a[x]+query(1,x))%(772002 + 233));
91         }
92     }
93 }

View Code

转载于:https://www.cnblogs.com/weeping/p/5456151.html

cdoj1344卿学姐种美丽的花相关推荐

  1. 2016 UESTC Training for Data Structures O - 卿学姐种美丽的花 树状数组+等差数列

    O - 卿学姐种美丽的花 Time Limit: 8000/4000MS (Java/Others)     Memory Limit: 125535/65535KB (Java/Others) Su ...

  2. CDOJ 1292 卿学姐种花 暴力 分块 线段树

    卿学姐种花 题目连接: http://acm.uestc.edu.cn/#/problem/show/1292 Description 众所周知,在喵哈哈村,有一个温柔善良的卿学姐. 卿学姐喜欢和她一 ...

  3. CDOJ 1292 卿学姐种花(暴力,分块,线段树)

    众所周知,在喵哈哈村,有一个温柔善良的卿学姐. 卿学姐喜欢和她一样美丽的花.所以卿学姐家的后院有很多的花坛. 卿学姐有n 个花坛,一开始第 i个花坛里有 A[i] 朵花.每过一段时间,卿学姐都会在花坛 ...

  4. 卿学姐种花(线段树)

    卿学姐种花 Time Limit: 0/7500MS (Java/Others)     Memory Limit: 0/220000KB (Java/Others) 众所周知,在喵哈哈村,有一个温柔 ...

  5. D - 卿学姐与魔法

    卿学姐与魔法 Time Limit: 1200/800MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Sta ...

  6. cdoj 1328 卿学姐与诡异村庄 Label:并查集 || 二分图染色

    卿学姐与诡异村庄 Time Limit: 4500/1500MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit  ...

  7. 卿学姐与诡异村庄(并查集)

    C - 卿学姐与诡异村庄 Time Limit: 4500/1500MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Sub ...

  8. A - 卿学姐与公主(线段树+单点更新+区间极值)

    A - 卿学姐与公主 Time Limit: 2000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submi ...

  9. 卿学姐与公主(线段树区间求最大值)

    A - 卿学姐与公主 Time Limit: 2000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submi ...

最新文章

  1. R语言switch语句语法、实战:Switch语句用来处理嵌套的if else处理起来比较困难或者麻烦的条件判断问题
  2. [技术文档] 一劳永逸,用USB设备制作多系统引导
  3. 深度linux12,Linux Deepin 12.06 试用体验
  4. Smart Link
  5. 无关标签的一般长文本网页正文内容抽取
  6. Unity 3D网络游戏实战 pdf
  7. java关于异常的面试程序题_Java挑战:最难的十个面试题(附答案)「下」
  8. msf各种弱口令爆破
  9. k8s集群部署项目_JAVA项目(部署镜像暴露应用)---K8S_Google工作笔记0062
  10. ORA-06413连接未打开的错误的原因和解决方法
  11. python中类的定义和使用_Python中类的定义与使用
  12. LabView学习笔记(九):数组与簇
  13. 挑战:工资计算器读写数据文件
  14. Linux下搭建打印机共享服务器(支持苹果AirPrint)
  15. 2021年山东省安全员C证考试内容及山东省安全员C证考试试卷
  16. SuperMap矢量瓦片优化方案
  17. 根据前序序列和中序序列重建二叉树
  18. Echarts曲线渐变色lineStyle
  19. excel两列数据查重
  20. 网易云瀚海一体机,云计算“全栈”航母带来了什么?

热门文章

  1. python积累--pandas---使用pandas-datareader获取股票信息进行分析
  2. 从socket开始讲解网络模式(epoll)
  3. 马虎的算式(蓝桥杯c语言)
  4. AlertDialo的使用(具体参照官方文档)
  5. 简易版java的安装
  6. Java设计模式之里氏替换原则(Liskov Substitution principle)
  7. 豆瓣 9 分以上,测试程序员必看的 7 本书
  8. 空气中相对湿度换算成绝对湿度的计算公式以及C语言函数计算方式
  9. linux如何查看光驱刻录日志,linux 刻录光碟 命令 cdrecord
  10. p神 代码审计知识星球二周年wp[1]