6 条题解

  • 0
    @ 2025-8-12 16:48:15
    • 方法 2:维护前缀和,O(m×n)O(m \times n)
    • TLE,70 分
    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
    	ios::sync_with_stdio(false);
    	cin.tie(0); cout.tie(0);
    	
    	int n, m, cmd, x, k, l, r;
    	cin >> n >> m;
    	vector<int> a(n + 1);
    	for (int i = 1; i <= n; i++) cin >> a[i];
    	
    	// f[i] = sum(a[1] + a[2] + ... + a[i])
    	vector<int> f(n + 1, 0);
    	for (int i = 1; i <= n; i++) f[i] = f[i - 1] + a[i];
    	
    	// O(m * n)
    	while (m--) {
    		cin >> cmd;
    		if (cmd == 1) {
    			cin >> x >> k;
    			for (int i = x; i <= n; i++) f[i] += k;  // O(n)
    		} else {
    			cin >> l >> r;
    			cout << f[r] - f[l - 1] << '\n';  // O(1)
    		}
    	}
    	
    	return 0;
    }
    

    信息

    ID
    81
    时间
    1000ms
    内存
    512MiB
    难度
    6
    标签
    递交数
    97
    已通过
    30
    上传者