程序设计思维Week5-作业

B-TT’s Magic Cat

Description

从世界地图中选择n个城市,a[i]表示第i个城市拥有的资产价值。然后魔术猫将执行q次操作。每一个回合都要选择区间内的城市 [l,r] 并将其资产价值增加c。最后,要求在q次操作之后给出每个城市的资产价值。
输入第一行n,q (1≤n,q≤2⋅10e5),第二行n个城市的资产价值a[i] (−10e6≤ai≤10e6).,下面每行是第i(i<=q)次操作的l,r,c (1≤l≤r≤n,−10e5≤c≤10e5)。
输出q次操作后每个城市的资产价值。

Sample

input:
4 2
-3 6 8 4
4 4 -2
3 3 1
output:
-3 6 9 2input:
2 1
5 -2
1 2 4
output:
9 2input:
1 2
0
1 1 -8
1 1 -6
output:
-14

Idea

我们采用差分构造法,首先构造对应于原数组a的差分数组b,其中b[1]=a[1],b[i]=a[i]-a[i-1]。对于数组a的区间L~R均价上c相当于b[L]+=c,b[R+1]-=c,所以q次操作都化成对差分数组的操作。所有操作结束后,还需要把差分数组转换成正常的原数组,SUM{b[1-i]}=a[i],根据这个规律可以对每个a[i]进行计算得到最终结果。

Summary

这道题不难,暴力做法的时间复杂度是O(qn),会超时
所以主要思想就是差分构造法,根据几个规律:
①B[1]=A[1],B[i]=A[i]-A[i-1]
②B[L]+=c,B[R+1]-=c
③SUM{B[1-i]}=A[i]

可以找到原数组与差分数组的关系,将它们互相转化,这种方法的时间复杂度是O(n+q)。
注意到每个城市价值的数值范围,我们需要用long long存储数组。

Codes

#include <iostream>
using namespace std;
int n, q;
long long a[200010];
long long b[200010];
int l, r, c;
int main()
{cin.sync_with_stdio(false);cin >> n >> q;for (int i = 1; i <= n; i++) {cin >> a[i];if (i == 1)b[i] = a[i];else b[i] = a[i] - a[i - 1];}for (int i = 1; i <= q; i++){cin >> l >> r >> c;b[l] +=c;b[r+1]-=c;}long long sum = 0;for (int i = 1; i <= n; i++){sum += b[i];a[i] = sum;cout<<a[i]<<" ";}}

SDU程序设计思维Week5-作业 B-TT's Magic Cat相关推荐

  1. SDU程序设计思维实践题目总结

    题目来源及链接 题目名称及讲解博客链接 涉及算法 原题以及原题链接 第二周作业 Maze BFS POJ-3984 Pour water BFS POJ-1606 第二周实验 化学 模拟 codefo ...

  2. SDU程序设计思维Week7-作业 C-TT的美梦

    程序设计思维Week7-作业 C-TT的美梦 Description 有 N 个商业城市,编号 1 - N,其中 1 号城市是 TT 所在的城市,即首都. 喵星上共有 M 条有向道路在商业城市相互往来 ...

  3. SDU程序设计思维Week6-限时模拟 掌握魔法の东东II

    程序设计思维Week6-限时模拟 掌握魔法の东东II Description 东东有 A × B 张扑克牌.每张扑克牌有一个大小(整数,记为a,范围区间是 0 到 A - 1)和一个花色(整数,记为b ...

  4. SDU 程序设计思维与实践 week7 B TT 的旅行日记【Dijkstra】

    B TT 的旅行日记 题意描述 众所周知,TT 有一只魔法猫 今天他在 B 站上开启了一次旅行直播,记录他与魔法猫在喵星旅游时的奇遇. TT 从家里出发,准备乘坐猫猫快线前往喵星机场.猫猫快线分为经济 ...

  5. 程序设计思维 week8 作业B-猫猫向前冲

    题目 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束后,Up 主会为所有的猫猫从前到后依次排名并发放爱吃的小鱼干.不幸的是,此时 TT 的 ...

  6. 我的艰辛作业之旅之程序设计思维week3作业

    题目A:选数问题 题面: 思路:此题的核心思想是枚举法.就是在n个数里找出所有的k个数的组合,然后判断k个数的和是否跟目标值相同. 最容易想到的想法是用k个循环找出所有的情况,但是显然这个做法是不行的 ...

  7. 程序设计思维 week9 作业B-东东学打牌

    目录 题目 Input Ouput Sample Input Sample Ouput 思路 代码 总结 题目 所有扑克牌只按数字来算大小,忽略花色. 每张扑克牌的大小由一个值表示.A, 2, 3, ...

  8. SDU 程序设计思维与实践 Week6 掌握魔法の东东 II

    A 掌握魔法の东东 II 从瑞神家打牌回来后,东东痛定思痛,决定苦练牌技,终成赌神! 东东有 A × B 张扑克牌.每张扑克牌有一个大小(整数,记为a,范围区间是 0 到 A - 1)和一个花色(整数 ...

  9. 山东大学程序设计思维与实践 四月模拟:TT与可怜的猫

    4月模拟-TT与可怜的猫 程序设计思维实践-复杂模拟题训练2 山东大学计算机科学与技术学院程序设计思维与实践 sdu程序设计思维与实践 山东大学程序设计思维实践作业 山大程序设计思维实践 山东大学程序 ...

  10. 山东大学计算机科学与技术学院程序设计思维与实践作业 week10-树型数据结构及其应用

    山东大学计算机科学与技术学院程序设计思维与实践作业 山大程序设计思维与实践作业 sdu程序设计思维与实践 山东大学程序设计思维实践作业H10 山大程序设计思维实践作业H10 山东大学程序设计思维与实践 ...

最新文章

  1. java 边界_Java数组边界问题
  2. 从控件开发的角度看几个editor控件,Freetextbox,radtoolbar,abouteditor,cuteeditor
  3. Facebook刷新开放域问答SOTA:模型训模型!Reader当Teacher!
  4. 从逻辑回归到神经网络
  5. 内网渗透,横向移动总结(mimikatz域控)
  6. android 线程之AsyncTask
  7. spark之kryo序列化及其使用
  8. 雅虎日本总裁:微软报价忽视了雅虎海外资产
  9. centos8安装ss发生错误failed to install pthon
  10. 字符串和数字相加,结果为字符串
  11. 安防监控系统百问百答
  12. TBODY的使用方法和意义
  13. Android Verified Boot dm-verity 优化和实战2
  14. Winograd 卷积计算
  15. katex常用公式符号一览表
  16. 不知不觉,我竟炼成了一枚 Markdown 深度用户
  17. 经纬度和球体三维坐标换算
  18. ios激活锁_如何检查iOS设备的激活锁状态
  19. 另类投资:AI艺术品定价指北
  20. 【小5聊】情人节送给爱人的心形创意相册

热门文章

  1. 无线网和网吧服务器,网吧网络使用无线局域网的几个优势所在
  2. 【硬见小百科】二十种电容分类详解!
  3. 用户授权中@Secured,@PreAuthorize,@PostAuthorize,@PreFilter,@PostFilter这五个注解的使用
  4. 自定义注解:具体的设计作用一般看过滤器的实现(以@Secured为例子部分理解)
  5. 浅谈一下Program Files和Program Files(x86)
  6. Python之(scikit-learn)机器学习
  7. 腾讯云上攻防战事(一)| 云上听风,不战而屈人之兵
  8. 定时器的ETR有何功能?
  9. 在哪里能学到计算机基础知识,电脑基础知识学习
  10. 从fit文件中提取lick指数的matlab程序