2 条题解
-
0
#include<bits/stdc++.h> using namespace std; const int N = 1e4+100; int w[N],dep[N],sg[1100]; signed main() { ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n,T,m;cin>>n>>T>>m; sg[0]=0; sg[1]=1; for(int i=2;i<=1000;i++) { unordered_map<int,bool> S; for(int j=1;j<=m;j++) { if(i-j<0) break; S[sg[i-j]]=True; } for(int j=0;;j++) if(!S[j]) {sg[i]=j;break;} } int res=0; memset(dep,0,sizeof(dep)); for(int i=2,x;i<=n;i++) { cin>>x>>w[i]; dep[i]=dep[x]+1; if(dep[i]&1) res^=sg[w[i]]; } while(T--) { int x,y;cin>>x>>y; if(dep[x]&1) res^=sg[w[x]],w[x]=y,res^=sg[w[x]]; if(res) cout<<"Yes\n"; else cout<<"No\n"; } return 0; } -
0
#include<bits/stdc++.h> using namespace std; const int N = 1e4+100; int w[N],dep[N],sg[1100]; signed main() { ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n,T,m;cin>>n>>T>>m; sg[0]=0; sg[1]=1; for(int i=2;i<=1000;i++) { unordered_map<int,bool> S; for(int j=1;j<=m;j++) { if(i-j<0) break; S[sg[i-j]]=True; } for(int j=0;;j++) if(!S[j]) {sg[i]=j;break;} } int res=0; memset(dep,0,sizeof(dep)); for(int i=2,x;i<=n;i++) { cin>>x>>w[i]; dep[i]=dep[x]+1; if(dep[i]&1) res^=sg[w[i]]; } while(T--) { int x,y;cin>>x>>y; if(dep[x]&1) res^=sg[w[x]],w[x]=y,res^=sg[w[x]]; if(res) cout<<"Yes\n"; else cout<<"No\n"; } return 0; }
- 1
信息
- ID
- 1791
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 9
- 标签
- 递交数
- 19
- 已通过
- 3
- 上传者