首页 > 其他分享 >ABC 269 E - Last Rook(交互题)

ABC 269 E - Last Rook(交互题)

时间:2022-09-19 17:59:00浏览次数:98  
标签:ABC Last int 正方形 flag 放置 269 棋盘 方块

https://atcoder.jp/contests/abc269/tasks/abc269_e

有一个N*N的棋盘和N辆车。
现在,n-1辆车被放在棋盘上,你必须放置1辆车,满足以下所有条件。

没有一行包含两个或更多的车。
没有一列包含两个或更多的车。
你将选择一个未被车占据的方块,并将车放在该方块上。(可以证明,在这些条件下,至少有一个方块可以放置车。)
然而,你不能直接看到棋盘上的哪些方格被车占据。
相反,你可以通过以下方式向法官提出最多20个问题。
你选择整数A,B,C,D使得1≤A≤B≤N,1≤C≤D≤N,求正方形(i,j)形成的矩形区域内的车数使得A≤i≤B,C≤j≤D。
找到一个格子放置车。
这是一个交互式任务(你的程序通过输入和输出与法官的程序交互)。 
首先,从标准输入接收棋盘的大小N。
接下来,重复问一个问题,直到你找到放置车的方块。 问题应该以下列格式打印到标准输出:? A B C D
标准输入将以下列格式给出响应:
在这里,T是问题的答案,或者如果问题无效或者已经问了超过20个问题,则为-1。当法官返回-1时,该提交已被视为不正确。在这种情况下,立即终止程序。
当你找到一个放置车的正方形时,设(X,Y)是那个正方形(单独的一个格子),并按以下格式打印一个答案:! X Y。然后,立即终止程序。
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int,int> PII;
int main()
{
    cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    //先输入一个n,正方形的大小
	int n;
	cin>>n;
	int x,y;//查找行和列(x行y列)
	int l=1,r=n;
	while(l<=r)
    {
		int mid=(l+r)/2;
		printf("? 1 %d 1 %d\n",mid,n);
		fflush(stdout);
		int flag;
		cin>>flag;
		if(flag==-1) return 0;
		if(flag<mid)
		{
			r=mid-1;
            x=mid;//行
		}
		else l=mid+1;
	}
	l=1,r=n;
	while(l<=r)
    {
		int mid=(l+r)/2;
		printf("? 1 %d 1 %d\n",n,mid);
		fflush(stdout);
		int flag;
		cin>>flag;
		if(flag==-1) return 0;
		if(flag<mid)
		{
			r=mid-1;
            y=mid;//列
		}
		else l=mid+1;
	}
	printf("! %d %d\n",x,y);
	fflush(stdout);
	return 0;
}

标签:ABC,Last,int,正方形,flag,放置,269,棋盘,方块
From: https://www.cnblogs.com/Vivian-0918/p/16708501.html

相关文章

  • elasticsearch集群搭建
    elasticsearch集群搭建 我们会在单机上利用docker容器运行多个es实例来模拟es集群。不过生产环境推荐大家每一台服务节点仅部署一个es的实例。部署es集群可以直接使用d......
  • ABC 269 C - Submask(dfs+位运算)
    C-Submask(dfs+位运算)题目大意:给定一个十进制的数字,让我们求出它的二进制下的1可以改变时候的数字SampleInput111SampleOutput10123891011Thebi......
  • ABC 268 D(无耻)
    $-1$天……题面Takahashi有$N$个组成他的全名的单词(比如真实世界中,$N=2$,字符串是“Naohiro”和“Takahashi”)。这些单词分别是$S_1,S_2,S_3,\cdots,......
  • ABC269
    DContent给你若干个点和相邻点的定义,问你图中有几个连通块。Sol连通用并查集维护,就是这里的相邻有点怪。Code#includeusingnamespacestd;constint_=1005;int......
  • AtCoder Beginner Contest 269 (A-F)题解
    A-AnywayTakahashi这里我还是关了ll的C开了忘了关害的F多了一发罚时#include<bits/stdc++.h>usingnamespacestd;constintN=3e5+10;constintM=9982443......
  • AtCoder Beginner Contest 269
    咕咕咕咕咕。F-NumberedChecker首先矩形容斥,把一个询问拆分成4个询问。现在只需要解决:左上角为\((1,1)\),右下角为\((x,y)\)的矩形区域和这一问题。把列数为奇......
  • *ABC 236 D - Dance(dfs)
    https://atcoder.jp/contests/abc236/tasks/abc236_d题意:两个两个组队,开心值异或,求最大开心值。注意这句话:IfPersoniandPersonjpairup,whereiissmallertha......
  • ABC267 - C,D Solutions
    目录ABC267-C,DSolutionsC-Index×A(Continuousver.)ProblemStatementSolutionImplementationD-Index×A(NotContinuousver.)ProblemStatementSolutionImp......
  • ARC147F Again ABC String 解题记录
    题意:给定整数\(X,Y,Z\),称一个字符串\(S\)合法,当且仅当:\(|S|=n\)仅由字符\(\texttt{A,B,C}\)构成。对每个\(i\)满足:记\(A_i,B_i,C_i\)表示\(S\)前\(i\)......
  • ElasticSearch聚合之管道聚合(Pipeline Aggregation)
    管道聚合让上一步聚合的结果作为下一个聚合的输入,类似stream()流的操作,当不上终结操作时,每次操作的流都作为下次操作的输入管道类型有很多种不同类型,每种类型都与其他聚......