1 条题解

  • -1
    @ 2023-1-22 11:52:21
    备注:
    ******************************************/
    #include <queue>
    #include <math.h>
    #include <stack>
    #include <stdio.h>
    #include <iostream>
    #include <vector>
    #include <iomanip>
    #include <string.h>
    #include <algorithm>
    #include <map>
    using namespace std;
    #define LL long long
    const int N = 1e6 + 10;
    const int INF = 0x3f3f3f3f;
    int n, k;
    int a[N], b[N];
    
    int lowbit(int x)
    {
    	return x & -x;
    }
    
    void add1(int id)
    {
    	while(id <= n)
    	{
    		a[id] += 1;
    		id += lowbit(id);
    	}
    }
    
    void add2(int id)
    {
    	while(id <= n)
    	{
    		b[id] += 1;
    		id += lowbit(id);
    	}
    }
    
    int sum1(int id)
    {
    	int ans = 0;
    	while(id)
    	{
    		ans += a[id];
    		id -= lowbit(id);
    	}
    	return ans;
    }
    
    int sum2(int id)
    {
    	int ans = 0;
    	while(id)
    	{
    		ans += b[id];
    		id -= lowbit(id);
    	}
    	return ans;
    }
    signed main()
    {
    	//freopen(".in", "w", stdin);
    	//freopen(".out", "r", stdout);
    	cin>>n>>k;
    	for(int i = 1; i <= k; i++)
    	{
    		int opt, x, y;
    		cin>>opt>>x>>y;
    		if(opt == 1)
    		{
    			add1(x), add2(y);
    		}
    		else 
    			cout<<sum1(y) - sum2(x - 1)<<endl;
    			
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    446
    时间
    1000ms
    内存
    512MiB
    难度
    8
    标签
    递交数
    32
    已通过
    7
    上传者