蒟蒻求助,2~10WA,赏2关
查看原帖
蒟蒻求助,2~10WA,赏2关
718025
angiing1222楼主2023/8/17 10:05

不知道是哪里错了,三个样例都过了,与题解对过但无果。

代码:

#include <bits/stdc++.h>
using namespace std;
int c[1000005],n,m,cnt;
vector<int>G[1000005];
int a[1000005],ls[1000005],rs[1000005];
int lowbit(int x){return x&-x;}
void add(int i,int x){for(;i<=n;i+=lowbit(i))c[i]+=x;}
int cnt1(int i){int ans=0;for(;i>0;i-=lowbit(i))ans+=c[i];return ans;}
void dfs(int x){
	ls[x]=++cnt;
	for(int i=G[x].size()-1;i>=0;--i){
		dfs(G[x][i]);
	}
	rs[x]=++cnt;
}
int main(){
	cin>>n>>m;
	cin>>a[1];
	for(int i=2;i<=n;++i){
		int x;
		cin>>a[i]>>x;
		G[x].push_back(i);
	}
	dfs(1);
	while(m--){
		char op;
		cin>>op;
		if(op=='p'){
			int i,k;
			cin>>i>>k;
			add(ls[i]+1,k);
			add(rs[i],-k);
		}
		else{
			int i;
			cin>>i;
			cout<<cnt1(ls[i])+a[i]<<"\n";
		}
	}
	return 0;
}
2023/8/17 10:05
加载中...