基本思路就是二分 每条边分别二分求
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. BZOJ 3239: Discrete Logging [BGSG]

    裸题 求\(ind_{n,a}b\),也就是\(a^x \equiv b \pmod n\) 注意这里开根不能直接下取整 这个题少了一些特判也可以过... #include <iostream& ...

  2. BZOJ 3669: [Noi2014]魔法森林 [LCT Kruskal | SPFA]

    题目描述 为了得到书法大家的真传,小 E 同学下定决心去拜访住在魔法森林中的隐 士.魔法森林可以被看成一个包含 n 个节点 m 条边的无向图,节点标号为 1,2,3,…,n,边标号为 1,2,3,…, ...

  3. FileBeat安装配置

    在ELK中因为logstash是在jvm上跑的,资源消耗比较大,对机器的要求比较高.而Filebeat是一个轻量级的logstash-forwarder,在服务器上安装后,Filebeat可以监控日志 ...

  4. 数据分析之pandas教程------数据处理

    目录 1  数据合并 1.1  实现数据库表join功能 1.2  实现union功能 2  数据转换 2.1  轴旋转 2.2  数据转换 2.2.1  去重 2.2.2  对某一列运用函数 2.2 ...

  5. JavaScript之父谈JavaScript

    本文翻译自popularity,为了更好的阅读我把部分内容进行了增删改,如果你英语比较好,建议直接阅读原文,因为这篇文章是我通过google翻译再进行修改的. 貌似(根据一位精神导师的说法)JavaS ...

  6. JavaScript正则表达式函数总结

    /* 测试环境:Chrome 63.0.3239.132 */ JS中正则对象修饰符可选值为:"i" "g" "m",即忽略大小写 进行全局 ...

  7. POI导出多张图片到Excel

    package com.sun.office.excel; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStr ...

  8. selenium自动化测试——常见的八种元素定位方法

    selenium常用的八种元素定位方法 1.通过 id 定位:find_element_by_id() 2.通过 name 定位:find_element_by_name() 3.通过 tag 定位: ...

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

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

  10. Egret学习笔记 (Egret打飞机-8.敌机和主角飞机发射子弹)

    经过前面几章的准备,我们差不多已经具备了一个基本的框架,这一章我们就开始添砖加瓦了. 敌机定时发射一个子弹,子弹的方向是从上到下,但是发射子弹的代码应该放在哪儿呢? 从面向对象编程的思想来说,子弹是敌 ...