当前位置: 首页 > news >正文

CF2196C1题解

传送门:https://www.luogu.com.cn/problem/CF2196C1
强化版:

题意简述:给你一个图的节点数,你可以询问字典序第 \(k\) 条路径是怎么样的,求出具体的每条边。

很显然路径第一条边就是一对边。我们只需要遍历所有路径然后选第一条边就行了。然而所有路径的上界是 \(O(n^4)\) 的,我们不能暴力枚举。因为按字典序排列,前两个节点相同的路径一定是连续的,我们往后二分找到前两个节点不同的第一条路径就找到了一个新边。对于每一条边向后二分。最坏询问复杂度 \(O(4m\log n)\),最大为 \(16m\),远小于 \(32(n+m)\),可以通过。这里也可以只对于第一个点进行二分,我们通过二分找到某一个点引出的路径数量,保证当且仅当一个点第一次被引出时才会进行二分,否则直接加上由上一个节点计算出的该点引出的边数量。复杂度 \(O(4n\log n)\)

\(O(4m\log n)\) 代码:

#include <bits/stdc++.h>const int N = 226;using namespace std;int a[16];void ask(int k) {cout << "? " << k << endl;memset(a, 0, sizeof a);int cnt;cin >> cnt;for (int i = 1; i <= cnt; ++i) cin >> a[i];
}void solve() {vector<pair<int, int> > ans;int n, m = 0;cin >> n;int now = 1, V = n * n * n * n;while (now <= V) {ask(now);if (a[2]) ++m, ans.push_back(make_pair(a[1], a[2]));int v1 = a[1], v2 = a[2];int l = now, r = V;while (r >= l) {int mid = (l + r) >> 1;ask(mid);if (a[1] == v1 && a[2] == v2) l = mid + 1;else r = mid - 1;}now = r + 1;}cout << "! " << ans.size() << endl;for (auto k: ans) cout << k.first << ' ' << k.second << endl;
}int main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int T;cin >> T;while (T--) solve();return 0;
}

\(O(4n\log n)\) 代码:

#include <bits/stdc++.h>using namespace std;int a[16], pos[32];void ask(int k) {cout << "? " << k << endl;a[1] = 0;int cnt;cin >> cnt;for (int i = 1; i <= cnt; ++i) cin >> a[i];
}void solve() {vector<pair<int, int> > ans;int n;cin >> n;int now = 1, V = n * n * n * n + 1;while (now <= V) {ask(now);int v1 = a[1];pos[v1] = now;if (!v1) pos[n + 1] = now;int l = now, r = V;while (r >= l) {int mid = (l + r) >> 1;ask(mid);if (a[1] == v1) l = mid + 1;else r = mid - 1;}now = r + 1;}for (int i = 1; i <= n; ++i) {int p = pos[i] + 1;while (p != pos[i + 1]) {ask(p);ans.push_back(make_pair(i, a[2]));p += pos[a[2] + 1] - pos[a[2]];}}cout << "! " << ans.size() << endl;for (auto k: ans) cout << k.first << ' ' << k.second << endl;
}int main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int T;cin >> T;while (T--) solve();return 0;
}
http://www.jsqmd.com/news/429051/

相关文章:

  • 2026年山东升降机厂家推荐: 液压升降机移动升降机自行走升降机升降平台卸货平台液压升降平台助力产业高效发展 - 海棠依旧大
  • 2026年3月山东网络推广公司推荐榜:网络推广运营/营销、百度网络推广、新媒体运营/推广、百家号运营参考指南 - 海棠依旧大
  • 2026年3月拉萨装修公司权威推荐榜:西藏上禧装饰专注藏式新藏式装修设计, 城关区实力派装修公司综合测评 - 海棠依旧大
  • 使用pyside6编写简单的串口上位机
  • 2026年河南长垣婚纱摄影公司推荐:专业婚纱摄影、婚纱礼服、拍婚纱照机构选择指南 - 海棠依旧大
  • 2026年3月拉萨装修设计公司精选推荐:藏式新藏式与现代风格装修,本地靠谱装修公司榜单解析 - 海棠依旧大
  • 2026年北京发电机出租厂家推荐:发电机租赁、大型发电机出租、静音发电机出租、柴油发电机出租、ups应急电源出租厂家选择指南 - 海棠依旧大
  • QOJ8008 MIPT Yolki-Palki Contest 1 F. Fortune Wheel
  • P10220 [省选联考 2024] 迷宫守卫
  • “友链”
  • 2026广州花露水品牌权威推荐榜:清凉、驱蚊、止痒、、祛痱、艾草花露水、止痒痱子水选择指南,KAVAGOOD卡瓦库德守护夏日清爽舒适 - 海棠依旧大
  • 2026广州青草膏品牌精选推荐榜:青草药膏、薄荷/止痒/提神青草膏、蚊虫止痒膏、止痒清凉膏、止痒绿膏选择指南,KAVAGOOD 卡瓦库德领衔优质之选 - 海棠依旧大
  • 2026年3月北京空压机厂家精选指南:变频、螺杆、离心式、无油、二手空压机选型参考,靠谱服务商优选推荐 - 海棠依旧大
  • 2026 北京空压机厂家优质推荐榜:变频、螺杆、离心式、无油、二手空压机参考指南,专业服务商实力解析 - 海棠依旧大
  • 2026山东爱爱采购运营公司推荐榜:爱采购推广/营销/店铺/开户/代运营/发布、实地厂家,山东鑫诺商领衔本地专业运营服务商 - 海棠依旧大
  • 京东e卡可以回收变现吗?闲置变现新风口 - 京顺回收
  • 2026山东发电机、发电车公司优选榜单:大型/静音/柴油发电机、ups应急电源,恩程机械设备靠谱公司推荐与选型参考指南 - 海棠依旧大
  • 2026山东发电机出租、发电车租赁公司推荐榜:大型/静音/柴油发电机、ups应急电源,山东本地高口碑电力租赁公司详情及专业选择攻略 - 海棠依旧大
  • 2026年梁山二手设备公司最新推荐榜:井口天然气压缩机、整体撬装式天然气压缩机、cng加气站全套设备回收、LNG加气站设备低温储罐拆装回收、聚焦企业服务品质与特色业务竞争力深度剖析 - 海棠依旧大
  • 2026年山东天然气压缩机及加气站设备回收标杆厂家推荐:高流量天然气压缩机、二手天然气压缩机、CNG天然气压缩机、超低压进气天然气压缩机、往复活塞式天然气压缩机、梁山强华专业合规更省心 - 海棠依旧大
  • DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
  • 微信小程序分享图片显示自定义内容
  • 国产生产制造品牌如何借力千问AI?从“制造”到“智造”的营销突围 - 品牌2026
  • 看透这个死局,才算活着
  • 当用户习惯转向豆包AI:品牌方该如何布局生成式搜索优化? - 品牌2026
  • 品牌怎么在千问AI“打广告”?解析AI问答场景下的合规曝光路径 - 品牌2026
  • GPCR 稳定细胞系作为工程化药理模型的系统理解
  • 当采购方在豆包问“哪家国产监护仪性价比高”:医疗器械企业如何借力生成式搜索精准获客 - 品牌2026
  • 国产制造品牌获客新路径:如何利用GEO技术在豆包AI搜索中抢占先机 - 品牌2026
  • 医美机构如何在千问AI获客?精准问答营销与信任构建指南 - 品牌2026