light oj 1369 - Answering Queries
来源:互联网 发布:棒球帽推荐 知乎 编辑:程序博客网 时间:2024/06/05 01:14
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
Note
Dataset is huge, use faster I/O methods.
#include<cstdio> #include<iostream> using namespace std; long long a[100010]; int main() { int t,n,m,l = 1; int k,x,v; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); long long sum = 0; for(int i = 0 ; i < n ; i++) { scanf("%lld",&a[i]); sum += a[i]; } long long ans = 0; for(int i = 0 ; i < n ; i++) { ans += (a[i] * (n-i-1) - (sum-a[i])); // 计算f(A[],n) 的值 sum -= a[i]; } printf("Case %d:\n",l++); while(m--) { scanf("%d",&k); if(k == 1) printf("%lld\n",ans); else { scanf("%d%d",&x,&v); ans -= ((v-a[x]) * x + (a[x]-v) * (n-x-1)); // 考虑将A[x]换成V对ans和的影响 a[x] = v; //更新改变后的值 } } } return 0; }
- light oj 1369 - Answering Queries
- Light OJ 1369 - Answering Queries 【规律】
- Light OJ 1369 Answering Queries (思维)
- lightoj 1369 - Answering Queries
- lightoj 1369 Answering Queries
- 1369 - Answering Queries
- 1369 - Answering Queries<数>
- lightoj 1369 - Answering Queries 【思维】
- 【技巧】LightOj Answering Queries 1369
- LightOJ 1369 - Answering Queries(规律)
- lightoj 1369 - Answering Queries 数学
- LightOJ 1369 - Answering Queries (预处理)
- lightoj 1369 - Answering Queries (思维规律)
- Light oj 1082 - Array Queries 【RMQ 裸题】
- light oj 1100 - Again Array Queries
- Light OJ 1082 Array Queries 【RMQ裸题】
- R - Answering Queries
- lightoj Answering Queries 1369 (数学转换&&技巧)
- 穷人做事、富人做市、商人做势[趋势]
- apple IOS的base64编解码
- 【幻化万千戏红尘】qianfengDay22-java基础学习:线程安全、synchronized、死锁
- nand flash_笔记
- 100V 降压恒流led驱动 FP7175
- light oj 1369 - Answering Queries
- HTML5 Web存储 sessionStorage localStorage
- JProfiler性能调优工具
- Andorid 常规二级分类列表选择
- Android屏幕适配基础
- 一套Windows上C/C++的编码转换函数
- 设计模式之 状态模式(银行账户状态实例)
- es 字段 权重
- STL源码学习----lower_bound和upper_bound算法