社区讨论
造福后人
CF2106G2 Baudelaire (hard version)参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhjsb7ay
- 此快照首次捕获于
- 2025/11/04 07:41 4 个月前
- 此快照最后确认于
- 2025/11/04 07:41 4 个月前
萌新手写的一个本题函数式交互库,调试可以用一下。
CPP
namespace Interactive{
#define maxn 370001
int n,rt,a[maxn],s[maxn],fa[maxn];
vector<int>e[maxn],t[maxn],vec;
void dfs(int x,int lst){
vec.push_back(x);
for(int i:vec) t[i].push_back(x);
s[x]=a[x]+s[fa[x]=lst];
for(int i:e[x]){
if(i==lst) continue;
dfs(i,x);
}
vec.pop_back();
}
void Init(){
for(int i=1;i<=n;i++) e[i].clear(),t[i].clear();
scanf("%d%d",&n,&rt);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1,u,v;i<n;i++) scanf("%d%d",&u,&v),e[u].push_back(v),e[v].push_back(u);
dfs(rt,0);
}
int Query1(vector<int>vec){
// Sleep(500);
int ans=0;
for(int i:vec) ans+=s[i];
return ans;
}
int Query1(int x){return Query1(vector<int>{x});}
void Query2(int k){
// Sleep(500);
a[k]=-a[k];
for(int i:t[k]) s[i]=a[i]+s[fa[i]];
}
int Getans(vector<int>vec){
int fl=1;
for(int i=1;i<=n;i++) fl&=vec[i-1]==a[i];
cerr<<(fl?"Accepted\n":"Wrong Answer\n");
if(!fl){
cerr<<"ExpectRoot: "<<rt<<'\n';
exit(0);
}
return 1;
}
}
/*******************Example******************/
void solve(){
Interactive::Init();//get your data
...//your code
int res=Query1(vector<int>(...));
Query2(int x);
vector<int>vec;
for(int i=1;i<=n;i++) vec.push_back(/***your ans***/);
Getans(vec);
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...