1164 - Horrible Queries
| Time Limit: 2 second(s) | Memory Limit: 64 MB |
World is getting more evil and it's getting tougher to get into the Evil League of Evil. Since the legendary Bad Horse has retired, now you have to correctly answer the evil questions of Dr. Horrible, who has a PhD in horribleness (but not in Computer Science). You are given an array of n elements, which are initially all 0. After that you will be given q commands. They are -
- 0 x y v - you have to add v to all numbers in the range of x to y (inclusive), where x and y are two indexes of the array.
- 1 x y - output a line containing a single integer which is the sum of all the array elements between x and y (inclusive).
The array is indexed from 0 to n - 1.
Input
Input starts with an integer T (≤ 5), denoting the number of test cases.
Each case contains two integers n (1 ≤ n ≤ 105) and q (1 ≤ q ≤ 50000). Each of the next q lines contains a task in one of the following form:
0 x y v (0 ≤ x ≤ y < n, 1 ≤ v ≤ 1000)
1 x y (0 ≤ x ≤ y < n)
Output
For each case, print the case number first. Then for each query '1 x y', print the sum of all the array elements between x and y.
Sample Input |
Output for Sample Input |
|
2 10 5 0 0 9 10 1 1 6 0 3 7 2 0 4 5 1 1 5 5 20 3 0 10 12 1 1 11 12 1 19 19 |
Case 1: 60 13 Case 2: 2 0 |
Note
Dataset is huge. Use faster i/o methods.
1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<string.h>
5 #include<queue>
6 #include<stack>
7 #include<map>
8 #include<math.h>
9 using namespace std;
10 typedef long long LL;
11 LL tree[6*100005];
12 LL cnt[6*100005];
13 LL aa[100005];
14 void down(int k);
15 void up(int k,int v);
16 LL ask(int l,int r,int k,int n,int m);
17 void in(int l,int r,int k,int n,int m,int u);
18 int main(void)
19 {
20 int i,j,k;
21 scanf("%d",&k);
22 int s;
23 int n,m;
24 for(s=1; s<=k; s++)
25 {
26 scanf("%d %d",&n,&m);
27 memset(tree,0,sizeof(tree));
28 memset(cnt,0,sizeof(cnt));
29 int flag=0;
30 while(m--)
31 {
32 int x,y;
33 int xx,yy,zz;
34 scanf("%d",&x);
35 if(x==0)
36 {
37 scanf("%d %d %d",&xx,&yy,&zz);
38 in(xx,yy,0,0,n-1,zz);
39 }
40 else
41 {
42 scanf("%d %d",&xx,&yy);
43 LL as=ask(xx,yy,0,0,n-1);
44 aa[flag++]=as;
45 }
46
47 }
48 printf("Case %d:\n",s);
49 for(i=0; i<flag; i++)
50 printf("%lld\n",aa[i]);
51 }
52 }
53 void down(int k)
54 {
55 cnt[2*k+1]+=cnt[k];
56 cnt[2*k+2]+=cnt[k];
57 cnt[k]=0;
58 }
59 void up(int k,int v)
60 {
61 int cc=k;
62 tree[cc]+=cnt[k]*v;
63 if(cc==0)return ;
64 while(cc>=0)
65 {
66 cc=(cc-1)/2;
67 tree[cc]=tree[2*cc+1]+tree[2*cc+2];
68 if(cc==0)
69 return ;
70 }
71 }
72 LL ask(int l,int r,int k,int n,int m)
73 {
74 if(l>m||r<n)
75 {
76 if(cnt[k]>0)
77 {
78 up(k,m-n+1);
79 down(k);
80 }
81 return 0;
82 }
83 else if(l<=n&&r>=m)
84 {
85 if(cnt[k]>0)
86 {
87 up(k,m-n+1);
88 down(k);
89 return tree[k];
90 }
91 else return tree[k];
92 }
93 else
94 {
95 if(cnt[k]>0)
96 {
97
98 down(k);
99 }
100 LL nx=ask(l,r,2*k+1,n,(n+m)/2);
101 LL ny=ask(l,r,2*k+2,(n+m)/2+1,m);
102 return nx+ny;
103 }
104 }
105 void in(int l,int r,int k,int n,int m,int u)
106 {
107 if(l>m||r<n)
108 {
109 if(cnt[k]>0)
110 {
111 up(k,m-n+1);
112 down(k);
113 }
114 return ;
115 }
116 else if(l<=n&&r>=m)
117 {
118 cnt[k]+=u;
119 up(k,m-n+1);
120 down(k);
121 return ;
122 }
123 else
124 {
125 if(cnt[k]>0)
126 {
127
128 down(k);
129 }
130 in(l,r,2*k+1,n,(n+m)/2,u);
131 in(l,r,2*k+2,(n+m)/2+1,m,u);
132 }
133 }
1164 - Horrible Queries的更多相关文章
- 题解【SP8002】HORRIBLE - Horrible Queries
题面 题解 这是一道线段树的模板题. 题目需要我们维护一个支持区间修改.区间查询的一个数据结构,很容易想到线段树. 然后发现和洛谷上线段树的模板1是同一道题. 由于本题中每个数的初始值都为\(0\), ...
- GSS4 2713. Can you answer these queries IV 线段树
GSS7 Can you answer these queries IV 题目:给出一个数列,原数列和值不超过1e18,有两种操作: 0 x y:修改区间[x,y]所有数开方后向下调整至最近的整数 1 ...
- Spring Data JPA教程, 第三部分: Custom Queries with Query Methods(翻译)
在本人的Spring Data JPA教程的第二部分描述了如何用Spring Data JPA创建一个简单的CRUD应用,本博文将描述如何在Spring Data JPA中使用query方法创建自定义 ...
- 洛谷P3538 [POI2012]OKR-A Horrible Poem [字符串hash]
题目传送门 A Horrible Poem 题目描述 Bytie boy has to learn a fragment of a certain poem by heart. The poem, f ...
- 实践 HTML5 的 CSS3 Media Queries
先来介绍下 media,确切的说应该是 CSS media queries(CSS 媒体查询),媒体查询包含了一个媒体类型和至少一个使用如宽度.高度和颜色等媒体属性来限制样式表范围的表达式.CSS3 ...
- SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问
delphi ado 跨数据库访问 语句如下 ' and db = '帐套1' 报错内容是:SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATE ...
- CSS3 Media Queries 实现响应式设计
在 CSS2 中,你可以为不同的媒介设备(如屏幕.打印机)指定专用的样式表,而现在借助 CSS3 的 Media Queries 特性,可以更为有效的实现这个功能.你可以为媒介类型添加某些条件,检测设 ...
- 使用CSS3 Media Queries实现网页自适应
原文来源:http://webdesignerwall.com 翻译:http://xinyo.org 当今银屏分辨率从 320px (iPhone)到 2560px (大屏显示器)或者更大.人们也不 ...
- SQL Queries from Transactional Plugin Pipeline
Sometimes the LINQ, Query Expressions or Fetch just doesn't give you the ability to quickly query yo ...
随机推荐
- 搭建简单的SpringCloud项目三:问题及解决
GitHub:https://github.com/ownzyuan/test-cloud 前篇:搭建简单的SpringCloud项目一:注册中心和公共层 搭建简单的SpringCloud项目二:服务 ...
- cmd到指定目录并执行命令 mysql到bin目录并执行命令 cmd bat进入指定文件夹中并执行命令
其实就一条命令:(保存为bat格式,注意:有两个and希腊字母 && )cmd /k "cd /d Your ProjectPath&&Your CMD co ...
- 日常Java 2021/9/28
字符串反转 package m; public class m { public static void main(String[] args) { //定义一个字符串 String str = &q ...
- 【Android】No Android SDK found(mac)+ 真机调试
[1]No Android SDK found 如果没下载SDK,可以去google官方下载 如果因为上网问题,这里提供两个网址,有人整理好了,这里先谢谢他们,下面两个择其一下载 http://to ...
- ORACLE 获取执行计划的方法
一.获取执行计划的6种方法(详细步骤已经在每个例子的开头注释部分说明了): 1. explain plan for获取: 2. set autotrace on : 3. statistics_lev ...
- Linux基础命令---uptime
uptime uptime指令用来显示系统运行多长时间.有多少用户登录.系统负载情况. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora.SUSE.openSUSE. ...
- layui 弹窗中 分页展示table
1. 需求:点击查看更多,展示该类别 所有数据,并分页 2. 参考文档: (1)https://www.jianshu.com/p/40da11ebae66 (2) https://blog.csdn ...
- 【Java 8】函数式接口(一)—— Functional Interface简介
什么是函数式接口(Functional Interface) 其实之前在讲Lambda表达式的时候提到过,所谓的函数式接口,当然首先是一个接口,然后就是在这个接口里面只能有一个抽象方法. 这种类型的接 ...
- 最基础的SSM框架整合篇
一.简单理解 Spring.Spring MVC和MyBatis的整合主要原理就是将我们在单独使用Spring MVC和MyBatis过程中需要自己实例化的类都交由Ioc容器来管理,过程分为两步: 第 ...
- 莫烦python教程学习笔记——保存模型、加载模型的两种方法
# View more python tutorials on my Youtube and Youku channel!!! # Youtube video tutorial: https://ww ...