基本思路就是二分 每条边分别二分求
c++11 用fflush(sdtout) 不行 囧啊

#include<bits/stdc++.h>
using namespace std; int ans[2][4];
int inp;
int check(int x1,int y1,int x2,int y2) {
printf("? %d %d %d %d\n",x1,y1,x2,y2);
fflush(stdout);
scanf("%d",&inp);
return inp;
}
int has(int x1,int y1,int x2,int y2) {
if(x1 <= ans[0][0] && y1 <= ans[0][1] && x2 >= ans[0][2] && y2 >= ans[0][3]) return 1;
return 0;
}
void solve(int x1,int y1,int x2,int y2,int flag){
int l=x1, r=x2;
while(l<=r){
int mid = (l+r)>>1;
int num = check(mid,y1,x2,y2);
if(flag && has(mid,y1,x2,y2) ) num--;
if(num==1 || num==2)
ans[flag][0] = mid, l = mid+1;
else
r = mid-1;
}
x1 = ans[flag][0];
// printf("x1:%d\n",x1); l=x1,r=x2;
while(l<=r){
int mid = (l+r)>>1;
int num = check(x1,y1,mid,y2);
if( flag && has(x1,y1,mid,y2) ) num--;
if(num==1 || num==2)
ans[flag][2]=mid, r = mid-1;
else
l = mid+1;
}
x2 = ans[flag][2];
// printf("x2;%d\n",x2); l=y1,r=y2;
while(l<=r){
int mid = (l+r)>>1;
int num = check(x1,mid,x2,y2);
if(flag && has(x1,mid,x2,y2) ) num--;
if(num==1 || num==2)
ans[flag][1]=mid, l = mid+1;
else
r=mid-1;
}
y1 = ans[flag][1];
// printf("y1:%d\n",y1); l=y1,r=y2;
while(l<=r){
int mid = (l+r)>>1;
int num = check(x1,y1,x2,mid);
if(flag && has(x1,y1,x2,mid) ) num--;
if(num==1 || num==2)
ans[flag][3]=mid, r=mid-1;
else
l=mid+1;
}
y2 = ans[flag][3];
// printf("y2:%d\n",y2);
} int main(){
int n;
while(~scanf("%d",&n)) {
solve(1,1,n,n,0);
solve(1,1,n,n,1); printf("!");
for(int i = 0; i < 2; ++i) {
for(int j = 0; j < 4; ++j) {
printf(" %d",ans[i][j]);
}
}printf("\n"); fflush(stdout);
}
return 0;
}

CF371 D Searching Rectangles的更多相关文章

  1. codeforces 713B B. Searching Rectangles(二分)

    题目链接: B. Searching Rectangles time limit per test 1 second memory limit per test 256 megabytes input ...

  2. Codeforces Round #371 (Div. 2) D. Searching Rectangles 交互题 二分

    D. Searching Rectangles 题目连接: http://codeforces.com/contest/714/problem/D Description Filya just lea ...

  3. Codeforces.714D.Searching Rectangles(交互 二分)

    题目链接 \(Description\) 在一个\(n*n\)的二维平面中有两个不相交的整点矩形,每次可以询问两个矩形有几个完全在你给出的一个矩形中.200次询问内确定两个矩形坐标. \(Soluti ...

  4. poj-1314 Finding Rectangles

    题目地址: http://poj.org/problem?id=1314 题意: 给出一串的点,有些点可以构成正方形,请按照字符排序输出. 因为这道题的用处很大, 最近接触的cv 中的Rectangl ...

  5. [ACM_暴力][ACM_几何] ZOJ 1426 Counting Rectangles (水平竖直线段组成的矩形个数,暴力)

    Description We are given a figure consisting of only horizontal and vertical line segments. Our goal ...

  6. Codeforces Round #236 (Div. 2) C. Searching for Graph(水构造)

    题目大意 我们说一个无向图是 p-interesting 当且仅当这个无向图满足如下条件: 1. 该图恰有 2 * n + p 条边 2. 该图没有自环和重边 3. 该图的任意一个包含 k 个节点的子 ...

  7. STL --- UVA 123 Searching Quickly

    UVA - 123 Searching Quickly Problem's Link:   http://acm.hust.edu.cn/vjudge/problem/viewProblem.acti ...

  8. Searching External Data in SharePoint 2010 Using Business Connectivity Services

    from:http://blogs.msdn.com/b/ericwhite/archive/2010/04/28/searching-external-data-in-sharepoint-2010 ...

  9. 构造图 Codeforces Round #236 (Div. 2) C. Searching for Graph

    题目地址 /* 题意:要你构造一个有2n+p条边的图,使得,每一个含k个结点子图中,最多有2*k+p条边 水得可以啊,每个点向另外的点连通,只要不和自己连,不重边就可以,正好2*n+p就结束:) */ ...

随机推荐

  1. POJ [P3660] Cow Contest

    传递闭包经典应用 奶牛的名次能确定当且仅当在它前面的牛数+在他后面的牛数==n-1 在他前面和后面的牛数可以转化成求完传递闭包后的出度和入度 #include <iostream> #in ...

  2. BZOJ 2822: [AHOI2012]树屋阶梯 [Catalan数 高精度]

    2822: [AHOI2012]树屋阶梯 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 779  Solved: 453[Submit][Status] ...

  3. POJ 2653 Pick-up sticks [线段相交 迷之暴力]

    Pick-up sticks Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 12861   Accepted: 4847 D ...

  4. 使用Python的requests库进行接口测试——session对象的妙用

    from:http://blog.csdn.net/liuchunming033/article/details/48131051 在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有 ...

  5. ionic2+Angular web端 实现微信分享以及如何跳转回分享出去的页面

    微信分享,首先参考微信JS-SDK开发文档. step1:在启动文件index.html中引入微信js文件: <script src="http://res.wx.qq.com/ope ...

  6. 好用的Google漏洞爬虫:Google Mass Explorer

    这是一款基于谷歌搜索引擎的自动化爬虫. 爬虫介绍 爬虫大体机制就是: 先进行一次谷歌搜索,将结果解析为特定格式,然后再提供给exp使用. 大家可以尝试使用–help来列出所有参数. 这个项目笔者会持续 ...

  7. [Python Study Notes]字符串处理技巧(持续更新)

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

  8. 架构师入门:搭建双注册中心的高可用Eureka架构(基于项目实战)

    本文的案例是基于 架构师入门:搭建基本的Eureka架构(从项目里抽取) 改写的. 在上文里,我们演示Eureka客户端调用服务的整个流程,在这部分里我们将在架构上有所改进.大家可以想象下,在上文里案 ...

  9. vuejs、eggjs全栈式开发设备管理系统

    vuejs.eggjs全栈式开发简单设备管理系统 业余时间用eggjs.vuejs开发了一个设备管理系统,通过mqtt协议上传设备数据至web端实时展现,包含设备参数分析.发送设备报警等模块.收获还是 ...

  10. yaf框架加载全局公共函数

    在Boostrap里面建一个方法(按规则命名的函数都会被自动执行) public function _initCommonFunctions(){ Yaf_Loader::import(Yaf_App ...