CF1738F Connectivity Addicts
这类题着重于抓住充分条件进行构造。
解决这道题,就得抓住题目中最为特殊的条件:
尝试在此充分条件下设计构造方法:不妨按照
-
的邻节点是染过色的把
以及之前询问到的未染色邻节点染上 的颜色,并结束对 的操作。 -
的邻节点未染色无事发生。
时间复杂度
点击查看代码
#include <bits/stdc++.h>
#define FL(i, a, b) for(int i = (a); i <= (b); i++)
#define FR(i, a, b) for(int i = (a); i >= (b); i--)
using namespace std;
const int N = 1e5 + 10;
int n, u, col, d[N], c[N], id[N];
vector<int> v;
bool cmp(const int &i, const int &j){return d[i] > d[j];}
void solve(){
cin >> n, col = 0;
FL(i, 1, n) cin >> d[id[i] = i], c[i] = 0;
sort(id + 1, id + n + 1, cmp);
FL(i, 1, n) if(!c[id[i]]){
vector<int>().swap(v), u = id[i];
FL(j, 1, d[id[i]]){
cout << "? " << id[i] << endl;
cin >> u; if(c[u]) break;
v.emplace_back(u);
}
c[id[i]] = c[u]? c[u] : ++col;
for(const int &x: v) c[x] = c[id[i]];
}
cout << "! ";
FL(i, 1, n) cout << c[i] << " ";
cout << endl;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int T; cin >> T;
while(T--) solve();
return 0;
}
分类:
题目 / CodeForces
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】