当前位置:网站首页>(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;
}边栏推荐
- Programmers, what are your skills in code writing?
- QT实现窗口置顶、置顶状态切换、多窗口置顶优先关系
- Li Kou - 298th weekly match
- Effet d'utilisation, déclenché lorsque les composants de la fonction sont montés et déchargés
- (POJ - 3186) treatments for the cows (interval DP)
- QT模拟鼠标事件,实现点击双击移动拖拽等
- QT implementation window gradually disappears qpropertyanimation+ progress bar
- Data storage in memory & loading into memory to make the program run
- window11 conda安装pytorch过程中遇到的一些问题
- Ball Dropping
猜你喜欢

力扣:第81场双周赛

Click QT button to switch qlineedit focus (including code)

Install Jupiter notebook under Anaconda

Vs2019 initial use

Openwrt build Hello ipk

Flag framework configures loguru logstore

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

Advancedinstaller installation package custom action open file

Problem - 922D、Robot Vacuum Cleaner - Codeforces

MariaDB的安装与配置
随机推荐
useEffect,函數組件掛載和卸載時觸發
Alice and Bob (2021 Niuke summer multi school training camp 1)
Borg maze (bfs+ minimum spanning tree) (problem solving report)
Interesting drink
Ball Dropping
顺丰科技智慧物流校园技术挑战赛(无t4)
QT按钮点击切换QLineEdit焦点(含代码)
Auto. Getting started with JS
Codeforces round 797 (Div. 3) no f
Classic application of stack -- bracket matching problem
Openwrt build Hello ipk
Kubernetes集群部署
生成随机密码/验证码
Bidirectional linked list - all operations
Codeforces Round #803 (Div. 2)A~C
Determine the Photo Position
SF smart logistics Campus Technology Challenge (no T4)
Codeforces Round #800 (Div. 2)AC
antd upload beforeUpload中禁止触发onchange
浏览器打印边距,默认/无边距,占满1页A4