1369 - Answering Queries
Time Limit: 3 second(s) Memory Limit: 32 MB

The problem you need to solve here is pretty simple. You are give a function f(A, n), where A is an array of integers and n is the number of elements in the array. f(A, n) is defined as follows:

long long f( int A[], int n ) { // n = size of A

long long sum = 0;

for( int i = 0; i < n; i++ )

for( int j = i + 1; j < n; j++ )

sum += A[i] - A[j];

return sum;

}

Given the array A and an integer n, and some queries of the form:

1)      0 x v (0 ≤ x < n, 0 ≤ v ≤ 106), meaning that you have to change the value of A[x] to v.

2)      1, meaning that you have to find f as described above.

Input

Input starts with an integer T (≤ 5), denoting the number of test cases.

Each case starts with a line containing two integers: n and q (1 ≤ n, q ≤ 105). The next line contains n space separated integers between 0 and 106 denoting the array A as described above.

Each of the next q lines contains one query as described above.

Output

For each case, print the case number in a single line first. Then for each query-type "1" print one single line containing the value of f(A, n).

Sample Input

Output for Sample Input

1

3 5

1 2 3

1

0 0 3

1

0 2 1

1

Case 1:

-4

0

4

题解:我的思路本来是针对每次的修改,都在询问里面找值,不出意外肯定超时了,出来看了大神的题解,是针对每次修改再修改sum就妥了,比赛的时候就没想到。。。

代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define mem(x,y) memset(x,y,sizeof(x))
using namespace std;
const int INF=0x3f3f3f3f;
const int MAXN=1e5+;
typedef long long LL;
LL a[MAXN],b[MAXN];
int main(){
int T,n,q,cnt=;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&q);
LL sum=;
for(int i=;i<n;i++)scanf("%lld",a+i);
sum=;
for(int i=n-;i>=;i--)sum+=a[i],b[i-]=sum;
//for(int i=0;i<n;i++)printf("%d ",b[i]);puts("");
b[n-]=;
sum=;
for(int i=;i<n-;i++)sum+=(a[i]*(n-i-)-b[i]);
mem(b,);
printf("Case %d:\n",++cnt);
while(q--){
int t,x,v;
scanf("%d",&t);
if(t){
printf("%lld\n",sum);
}
else{
scanf("%d%d",&x,&v);
sum=sum+(v-a[x])*(n-x-)-x*(v-a[x]);
a[x]=v;
}
}
}
return ;
}

最新文章

  1. Everything(文件搜索神器)
  2. IO例子
  3. 分享自己写的JS版日期格式化和解析工具类,绝对好用!
  4. ES6 - promise对象
  5. NGUI3.5系列教程之 一些小功能的实现
  6. delphi Caption 垂直显示标签文本
  7. POJ 3321 Apple Tree(树状数组)
  8. “jni.h”: No such file or directory
  9. Struts2中EL表达式取值
  10. Android原生Cling演化的覆盖层
  11. 项目自动构建工具对比(Maven、Gradle、Ant)
  12. ASP.NET Core 基于JWT的认证(一)
  13. 一、Swagger配置
  14. CCF后感
  15. MyISAM索引和InnoDB索引的区别
  16. DokuWiki 使用
  17. replace()的使用方法
  18. DIV+CSS兼容解决DIV最大宽度和最小宽度问题
  19. javascript中Date对象复习
  20. openfire url get提交 中文乱码问题

热门文章

  1. Sublime Text3快捷方式总结
  2. 【原创】ASP.NET Web开发,实现打印Log日志,步骤详解
  3. slf4j+log4j配置(Maven)
  4. Android应用开发基础篇(9)-----SharedPreferences
  5. Symfony命令行
  6. 在raw_input()中使用中文提示,在CMD下中文乱码问题解决。。。
  7. 转几篇关于Android webView的网文
  8. FPGA中改善时序性能的方法_advanced FPGA design
  9. linux如何关闭selinux?
  10. QT5程序发布dll依赖