当前位置:网站首页>(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;
}边栏推荐
- < li> dot style list style type
- “鬼鬼祟祟的”新小行星将在本周安全掠过地球:如何观看
- Calculate the time difference
- 7-1 understand everything (20 points)
- 628. Maximum product of three numbers
- 力扣——第298场周赛
- Interval sum ----- discretization
- QT实现窗口渐变消失QPropertyAnimation+进度条
- Li Kou - 298th weekly match
- Raspberry pie 4b64 bit system installation miniconda (it took a few days to finally solve it)
猜你喜欢

1013. Divide the array into three parts equal to and

第 300 场周赛 - 力扣(LeetCode)

628. Maximum product of three numbers

window11 conda安装pytorch过程中遇到的一些问题

Li Kou - 298th weekly match

Codeforces Round #799 (Div. 4)A~H

Determine the Photo Position

807. Maintain the urban skyline

It is forbidden to trigger onchange in antd upload beforeupload

本地可视化工具连接阿里云centOS服务器的redis
随机推荐
Codeforces Round #799 (Div. 4)A~H
QT realizes window topping, topping state switching, and multi window topping priority relationship
QNetworkAccessManager实现ftp功能总结
(lightoj - 1236) pairs forming LCM (prime unique decomposition theorem)
(lightoj - 1354) IP checking (Analog)
QWidget代码设置样式表探讨
1323. Maximum number of 6 and 9
本地可视化工具连接阿里云centOS服务器的redis
Codeforces Round #797 (Div. 3)无F
Raspberry pie 4b64 bit system installation miniconda (it took a few days to finally solve it)
Opencv learning log 28 -- detect the red cup cover
F - birthday cake (Shandong race)
Problem - 1646C. Factorials and Powers of Two - Codeforces
HDU - 6024 building shops (girls' competition)
Find 3-friendly Integers
Input can only input numbers, limited input
生成随机密码/验证码
Generate random password / verification code
Data storage in memory & loading into memory to make the program run
Useeffect, triggered when function components are mounted and unloaded