ABC337E Bad Juice 题解
Analysis
结论:
- 最少需要询问的人数是 。
- 第 个人喝的饮料的编号在二进制下的第 位是 。
把饮料的编号记作二进制,第 个人喝第 位是 的饮料。这样回答的字符串中,如果第 个人生病了,说明有毒的饮料的编号的第 位是 。因此至少需要 个人。当 的时候,可能会出现没有人生病的情况,说明 号饮料有毒。
Code
cin >> n;
m = __lg(n - 1) + 1;
cout << m << "\n";
for (int i = 0; i < m; i++) {
int K = 0;
for (int j = 1; j <= n; j++) {
if ((j >> i) & 1) K++;
}
cout << K << " ";
for (int j = 1; j <= n; j++) {
if ((j >> i) & 1) cout << j << " ";
}
cout << "\n";
}
fflush(stdout);
cin >> s;
for (int i = 0; i < m; i++) {
if (s[i] == '1') ans |= (1 << i);
}
if (ans == 0) ans = n;
cout << ans << "\n";
fflush(stdout);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】