社区讨论

70pt 1 2 3和subtask没过,求调

P3374【模板】树状数组 1参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mkjqkrbz
此快照首次捕获于
2026/01/18 20:52
2 个月前
此快照最后确认于
2026/01/18 20:52
2 个月前
查看原帖
rt
CPP
#include <iostream>
using namespace std;

#define lowbit(x) ((x) & (-(x)))
#define MAXN 5000005

typedef long long ll;

ll c[MAXN];
ll m, n;

void add(ll, ll);
ll sum(ll);
ll qry(ll, ll);

int main()
{
    cin >> m >> n;
    for (ll i = 1, t; i <= n; i++)
    {
        cin >> t;
        add(i, t);
    }
	
    ll o, x, y;
    while (m--)
    {
        cin >> o >> x >> y;
        if (o == 1)
            add(x, y);
        else
            cout << qry(x, y) << endl;
    }
    return 0;
}

ll qry(ll x, ll y)
{
	return sum(y) - sum(x - 1);
}

void add(ll i, ll t) // 在x处加t
{
    for (; i <= n; i += lowbit(i))
        c[i] += t;
}

ll sum(ll i) // 查询1~x的和
{
    ll s = 0;
    for (; i; i -= lowbit(i))
        s += c[i];
    return s;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...