2 条题解

  • 1
    @ 2024-10-12 18:50:47
    #include<iostream>
    using namespace std;
    
    int n,k,b[1000005];
    
    int bit(int x)
    {
    	return x & (-x);
    }
    
    void ad(int w,int zhi)
    {
    	while(w<=n)
    	{
    		b[w]+=zhi;
    		w+=bit(w);
    	}
    }
    
    int zhao(int w)
    {
    	int ans=0;
    	while(w>0)
    	{
    		ans+=b[w];
    		w-=bit(w);
    	}
    	return ans;
    }
    int main()
    {
    	cin>>n>>k;
    	for(int i=1;i<=k;i++)
    	{
    		int m,p;
    		char a;
    		cin>>a;
    		if(a=='A')
    		{
    			cin>>m;
    			cout<<zhao(m)<<endl;
    		}
    		if(a=='B')
    		{
    			cin>>m>>p;
    			ad(m,p);
    		}
    		if(a=='C')
    		{
    			cin>>m>>p;
    			ad(m,-p);
    		}
    	}
    	return 0;
     }
    • 0
      @ 2024-10-12 19:10:33

      太简单了 写完此题,请前往P1119 简单题[狗头]

      #include<iostream>
      using namespace std;
      int h[600001],f[600001];
      int x,y,n,m;
      int K(int num)
      {
      	return num&(-num);
      }
      void Add(int num,int Increase)
      {
      	int z=num;
      	while(z<=n)
      	{
      	
      		h[z]+=Increase;
      		z+=K(z);
      	}
      }
      int Total(int num)
      {
      	int z=num,tot=0;
      	while(z>=1)
      	{
      		tot+=h[z];
      		z-=K(z);
      	}
      	return tot;
      }
      int main()
      {
      	int z;
      	char thing;
      	cin>>n>>m;
      	for(int i=1;i<=m;i++)
      	{
      		scanf("%s%d",&thing,&y);
      		if(thing=='A') cout<<Total(y)<<endl;
      		if(thing=='B') {
      			cin>>z;
      			Add(y,z);
      		}
      		if(thing=='C') {
      			cin>>z;
      			Add(y,-1*z);
      		}
      		
      	}
      	
      	
      }
      
      
      • 1

      信息

      ID
      1118
      时间
      200ms
      内存
      512MiB
      难度
      6
      标签
      递交数
      40
      已通过
      14
      上传者