超燃智斗,电池假死
2025-10-06 03:54:17
发布于:广东
自己左脑右脑博弈了 50min,结果发现正解就是暴力试
不管怎么说,纪念首次通过交互题。
题意解析:
交互题。
你有 个电池,其中有 个电池是能用的, 个电池不能用。但你不知道哪些电池能用,你甚至不知道 的值。
你需要找到两个能用的电池来组装你的手电筒。你可以进行如下的尝试操作:
- 选择两个数 。
- 将第 ,第 个电池装进你的手电筒,如果这两个电池都是能用的,则手电筒发光;否则手电筒不发光。
问:这两节电池应_______(选填“串联”或“并联”)。
由于出题人不想你太快得出结论,所以他要求你进行不超过 次尝试操作。
考虑如下方法:
首先尝试 ,,...,。如果没有一次手电筒发光的情况,则说明任意两个好的电池的距离 ,可以推导出 。
然后尝试 ,,...,。同理,如果没有一次手电筒发光的情况,则 。
接着尝试距离为 的,直到试出来为止。
假设正整数 满足 。
则 。
则按照上面的方法会试不超过 次。
即尝试次数不超过 次,可以通过。
#include <iostream>
#include <cstdio>
using namespace std;
void solve(){
int n;
cin >> n;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n - i; j++){
cout << j << ' ' << j + i << '\n';
int ans;
cin >> ans;
if(ans == 1) return;
}
}
}
int main(){
// ios::sync_with_stdio(0);
// cin.tie(0), cout.tie(0);
int t;
cin >> t;
while(t--) solve();
return 0;
}
全部评论 2
d
6天前 来自 广东
1容易发现,cjdst特别喜欢在acgo发题解,然而都没人认真看完
6天前 来自 浙江
0555
6天前 来自 广东
0
有帮助,赞一个