当前位置:网站首页>(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;
}
边栏推荐
猜你喜欢
1005. Maximized array sum after K negations
Codeforces Round #797 (Div. 3)无F
1605. Sum the feasible matrix for a given row and column
本地可视化工具连接阿里云centOS服务器的redis
Sword finger offer II 019 Delete at most one character to get a palindrome
Advancedinstaller installation package custom action open file
Remove the border when input is focused
Write web games in C language
读取和保存zarr文件
Local visualization tools are connected to redis of Alibaba cloud CentOS server
随机推荐
Codeforces - 1526C1&&C2 - Potions
(POJ - 3685) matrix (two sets and two parts)
Educational Codeforces Round 130 (Rated for Div. 2)A~C
(POJ - 3258) River hopper (two points)
Click QT button to switch qlineedit focus (including code)
QT有关QCobobox控件的样式设置(圆角、下拉框,向上展开、可编辑、内部布局等)
Is the sanic asynchronous framework really so strong? Find truth in practice
Installation and configuration of MariaDB
Luogu P1102 A-B number pair (dichotomy, map, double pointer)
HDU - 6024 building shops (girls' competition)
Problem - 922D、Robot Vacuum Cleaner - Codeforces
第 300 场周赛 - 力扣(LeetCode)
useEffect,函數組件掛載和卸載時觸發
Differential (one-dimensional, two-dimensional, three-dimensional) Blue Bridge Cup three body attack
“鬼鬼祟祟的”新小行星将在本周安全掠过地球:如何观看
Pull branch failed, fatal: 'origin/xxx' is not a commit and a branch 'xxx' cannot be created from it
双向链表—全部操作
Raspberry pie 4B installation opencv3.4.0
Bidirectional linked list - all operations
(POJ - 1458) common subsequence (longest common subsequence)