CF 2135 D2 求调
  • 板块学术版
  • 楼主Misserina
  • 当前回复1
  • 已保存回复1
  • 发布时间2025/8/29 01:39
  • 上次更新2025/8/29 14:38:28
查看原帖
CF 2135 D2 求调
1105993
Misserina楼主2025/8/29 01:39

这个时候最多询问长度约为 2600026000,如何优化到规定范围内

#include <bits/stdc++.h>
using namespace std;
int t,n1,n2,arr[100005],l[100005],r[100005],to[100005];
int main() {
	for (int i=1;i<=1000;i++) {
		arr[i]=12100/i;
		if (12100%i!=0) arr[i]++;
		to[arr[i]]=i;
		if (l[arr[i]]==0) l[arr[i]]=i;
		r[arr[i]]=i;
		//printf("%d ",arr[i]);
	}
	/*
	for (int i=1;i<=120;i++) {
		printf("%d %d %d\n",arr[i],l[arr[i]],r[arr[i]]);
	}
	for (int i=99;i>=1;i--) {
		printf("%d %d %d\n",i,l[i],r[i]);
	}
	*/
	scanf("%d",&t);
	while (t--) {
		printf("? 12100");
		for (int i=1;i<=12100;i++) printf(" 100");
		printf("\n");
		fflush(stdout);
		scanf("%d",&n1);
		if (n1==0) {
			printf("? 12100");
			for (int i=1;i<=12100;i++) printf(" 1");
			printf("\n");
			fflush(stdout);
			scanf("%d",&n2);
			printf("! %d\n",to[n2]);
			fflush(stdout);
		}
		else {
			int k=100*l[n1],z=(l[n1-1]-l[n1])*100-1;
			printf("? %d %d",2*z+1,k);
			for (int i=1;i<=z;i++) printf(" %d %d",k,i);
			printf("\n");
			fflush(stdout);
			scanf("%d",&n2);
			printf("! %d\n",k-n2+2*z+1);
			fflush(stdout);
		}
	}
}
2025/8/29 01:39
加载中...