P3655 Low DREAMER C/C++ 题解 ——by AnDrew Louis

本文介绍了一种利用逻辑思维解决编程问题的方法,通过C++代码展示了如何高效地处理区间更新和元素影响求和。博主分享了如何用纯逻辑暴力算法处理数组操作,适合初学者理解复杂问题的简化技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll inf = 0x3f3f3f3f, N = 2e5 + 7;
ll a[N], n, q, s, t, x, l, r, k, last, sum;
int main()
{
	cin >> n >> q >> s >> t >> x;
	for (int i = 1; i <= n; i++)
	{
		cin >> x;
		a[i] = x - last;
		last = x;
		if (a[i] > 0) sum += -s * a[i];
		else sum += -t * a[i];
	}
	while (q--)
	{
		cin >> l >> r >> k;
		if (a[l] > 0) sum += s * a[l];
		else sum += t * a[l];
		a[l] += k;
		if (a[l] > 0) sum += -s * a[l];
		else sum += -t * a[l];
		if (r != n)
		{
			if (a[r+1] > 0) sum += s * a[r+1];
			else sum += t * a[r+1];
			a[r + 1] -= k;
			if (a[r+1] > 0) sum += -s * a[r+1];
			else sum += -t * a[r+1];
		}
		cout << sum << '\n';
	}
    return 0;
}

这题其实不难,只有 普及/提高- 的难度。我的做法就是纯逻辑/暴力。

希望大家可以提出更好的方法帮助一下孩子吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值