题目 题意:给定n个数,有q次查询,有两种操作
- 选择一个点并修改它的值为一个新的数
- 将所有值改为一个新的数
求每次修改后的数组总和。
思路:维护每个点的修改时间戳,以及修改所有点的整体的时间戳。 对于只修改一个点的情况,对于总和 s u m sum sum,我们只需要考虑较上次的总和,当前点的变化;对于修改所有点的情况,我们全量更新总和即可。详见代码
#include
using namespace std;
#define ll long long
const int maxn = 200010;
int n, q, op, pos, x;
struct node {
int val; // 取值
int ts; // 时间戳
}a[maxn], all;
void solve() {
scanf("%d%d", &n, &q);
ll sum = 0;// 总和
for (int i = 1; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?