当前位置:网站首页>(lightoj - 1369) answering queries (thinking)
(lightoj - 1369) answering queries (thinking)
2022-07-06 16:25:00 【AC__ dream】
Topic link :Answering Queries - LightOJ 1369 - Virtual Judge
The question : Definition f(A,n) yes
Result , We have two operations , One is to query the current results , The other is to put A Modify the value of an element in the array
analysis : We first find the result of the original array , Note that you cannot solve the result of the original array directly , This will time out , We can only observe the characteristics of each number to find the law to solve , such as a[i] Will act as n-i Secondary addend , And as a i-1 Times subtraction , So in general a[i] Will be added (n-2*i+1) Time , Using this law, we can o(n) Calculate the result of the original array , Let's analyze it a little bit What will be the impact of modifying an element on the result , For example a[x] yes m, Now change it to n, So for any containing a[x] The value of the expression of will change accordingly ,a[x] There are two ways in expressions , One is a[i]-a[x](i<x), The other is a[x]-a[j](j>x), The value of the former expression will increase m-n Yes x-1 This happens to expressions , The latter expression will reduce m-n, Yes n-x This happens to expressions , Generally speaking, there is an increase (2*x-n-1) individual (m-n), So we can o(1) The result was modified , Here is the code :
#include<cstdio>
#include<iostream>
#include<cstring>
#include<vector>
#include<algorithm>
#include<map>
#include<cmath>
#include<queue>
using namespace std;
#define int long long
const int N=1e5+10;
int a[N];
signed main()
{
int T;
cin>>T;
for(int _=1;_<=T;_++)
{
printf("Case %lld:\n",_);
long long ans=0;
int n,q;
scanf("%lld%lld",&n,&q);
for(int i=1;i<=n;i++)
scanf("%lld",&a[i]);
for(int i=1;i<=n;i++)
ans+=(n-2*i+1)*a[i];
while(q--)
{
int op,x,y;
scanf("%lld",&op);
if(op==1) printf("%lld\n",ans);
else
{
scanf("%lld%lld",&x,&y);
x++;
ans+=(a[x]-y)*(2*x-1-n);
a[x]=y;
}
}
}
return 0;
}边栏推荐
- B - Code Party (girls' competition)
- Flask框架配置loguru日志庫
- Opencv learning log 26 -- detect circular holes and mark them
- Alice and Bob (2021 Niuke summer multi school training camp 1)
- 1605. Sum the feasible matrix for a given row and column
- Codeforces Round #801 (Div. 2)A~C
- VMware Tools和open-vm-tools的安装与使用:解决虚拟机不全屏和无法传输文件的问题
- (POJ - 2739) sum of constructive prime numbers (ruler or two points)
- Some problems encountered in installing pytorch in windows11 CONDA
- C language learning notes
猜你喜欢

QT realizes window topping, topping state switching, and multi window topping priority relationship

C language learning notes

Li Kou - 298th weekly match

Codeforces Round #802(Div. 2)A~D

OneForAll安装使用

2027. Minimum number of operations to convert strings

QT style settings of qcobobox controls (rounded corners, drop-down boxes, up expansion, editable, internal layout, etc.)

1903. Maximum odd number in string

Kubernetes集群部署

409. Longest palindrome
随机推荐
Date plus 1 day
Openwrt build Hello ipk
Configuration du cadre flask loguru log Library
QT implementation window gradually disappears qpropertyanimation+ progress bar
What is the difficulty of programming?
Installation and configuration of MariaDB
Write web games in C language
1529. Minimum number of suffix flips
QWidget代码设置样式表探讨
Anaconda下安装Jupyter notebook
双向链表—全部操作
Some problems encountered in installing pytorch in windows11 CONDA
Useeffect, triggered when function components are mounted and unloaded
Codeforces round 797 (Div. 3) no f
Codeforces Round #801 (Div. 2)A~C
Radar equipment (greedy)
Calculate the time difference
Opencv learning log 27 -- chip positioning
(lightoj - 1354) IP checking (Analog)
Educational Codeforces Round 130 (Rated for Div. 2)A~C