QOJ.ac

QOJ

Type: Editorial

Status: Open

Posted by: incent

Posted at: 2026-05-17 18:22:30

Last updated: 2026-05-26 01:33:34

Back to Problem

New Editorial for Problem #18268

这种题做法是可以套公式的:

先用操作改出来一个特殊的结构,先组合操作,检查能得到什么东西,找找规律。这个题里可以让所有a互不相同

然后再组合操作,检查都问一遍/选子集问一遍能得到什么。尝试简单的代码实现。

最终可以1k写完,我想代码应该可以更加简单说明算法流程

int n;
bool vis[maxn],pr[maxn];
int ops(int i){cout<<"? "<<i<<endl;cin>>i;return i;}
void sol(){
    cin>>n;
    for(int i=2;i<=n;++i)while(ops(i));
    for(int i=1;i<=n;++i)vis[i]=pr[i]=0;
    for(int i=2;i<=n+1;++i){
        for(int j=2;j<=n;++j)if(!vis[j]){
            int cr=ops(j);
            if(cr==0&&pr[j])vis[j]=1,ops(j);
            pr[j]=cr;
        }
    }
    ops(1),ops(1);cout<<'!'<<endl;
}

Comments

avatar
ucup-team6336
被爆标了()
avatar
Coffee_zzz
不是我出的 谢谢
avatar
came11ia
这么深刻