牛客小白月赛5 I.区间 (interval)
发布日期:2021-06-22 22:48:22
浏览次数:3
分类:技术文章
本文共 982 字,大约阅读时间需要 3 分钟。
牛客小白月赛5 I.区间 (interval)
题目描述
Apojacsleam喜欢数组。他现在有一个n个元素的数组a,而他要对a[L]-a[R]进行M次操作: 操作一:将a[L]-a[R]内的元素都加上P 操作二:将a[L]-a[R]内的元素都减去P最后询问a[l]-a[r]内的元素之和?请认真看题干及输入描述。
输入描述:
输入共 M + 3 M+3 M+3 行:
第一行两个数,n,M,意义如“题目描述”
第二行 n 个数,描述数组。
下面共 M M M 行,每行四个数,q,L,R,P,若 q q q 为1则表示执行操作2,否则为执行操作1
最后一行,两个正整数 l,r
输出描述:
一个正整数,为 a [ l ] − a [ r ] a[l]-a[r] a[l]−a[r] 内的元素之和
示例1
输入
10 51 2 3 4 5 6 7 8 9 101 1 5 51 2 3 60 2 5 5 0 2 5 81 4 9 62 7
输出
23
典型的离散思想求前缀和即可,注意题目保证输入是 i n t int int,但并没有保证输出也在 i n t int int 范围内,AC代码如下:
#includeusing namespace std;typedef long long ll;const int N=1e6+5;int n,m,op,l,r;ll p,x,ans,a[N],sum[N];int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%lld",&a[i]); while(m--){ scanf("%d%d%d%lld",&op,&l,&r,&p); if(op==1) sum[l]-=p,sum[r+1]+=p; else sum[l]+=p,sum[r+1]-=p; } scanf("%d%d",&l,&r); for(int i=1;i<=n;i++){ x+=sum[i]; if(i>=l&&i<=r) ans+=x+a[i]; } printf("%lld",ans);}
转载地址:https://zaizai.blog.csdn.net/article/details/108166144 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年03月21日 20时26分44秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
做有挑战的事情就行了~
2019-04-26
subprime debt
2019-04-26
regardless what you do
2019-04-26
ways to talk with girls
2019-04-26
statistics DATA in jiangsu
2019-04-26
Oral certificate at 7TH INTERNATIONAL CONFERENCE ON CONTROL, AUTOMATION AND ROBOTICS (ICCAR)
2019-04-26
Latex Smartdiagram
2019-04-26
everytime you feel nervous
2019-04-26
online Solver of a Bimatrix Game
2019-04-26
iccar conference oral presentation
2019-04-26
gpl3.0 open source software
2019-04-26
first flask blog
2019-04-26
flask and html connection
2019-04-26
school‘s movie demonstration
2019-04-26
ciao
2019-04-26
Kopernio插件+SCI-HUB最新可用网址
2019-04-26