More Wrong
考虑数
由于是一个排列,所以
我们考虑最大值的性质。
区间
考虑分治。设
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <string>
using namespace std;
const int N = 2005;
int t, n;
int query(int l, int r)
{
printf("? %d %d\n", l, r);
fflush(stdout);
int x;
scanf("%d", &x);
return x;
}
int solve(int l, int r)
{
if (l == r) return l;
if (l == r - 1)
{
return (query(l, r) == 1 ? l : r);
}
int mid = l + r >> 1;
int place1 = solve(l, mid), solve2 = solve(mid + 1, r);
return (query(l, solve2 - 1) == query(l, solve2) ? solve2 : place1);
}
int main()
{
scanf("%d", &t);
while (t--)
{
scanf("%d", &n);
printf("! %d\n", solve(1, n));
fflush(stdout);
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!