题目

CF1153E Serval and Snake

很有意思的一道交互题

做法

我们观察到,每次查询一行,当这一行仅包含一端是返回的答案是奇数

根据这个性质查询每一行每一列,我们大体能知道两端的位置

查询矩阵时也是这个道理(奇数),可以二分行和列从而得出答案

Code

#include<bits/stdc++.h>
typedef int LL;
LL n;
LL fir_1,fir_2,sec_1,sec_2;
inline LL Check(LL x,LL y,LL _x,LL _y){
LL val;
printf("? %d %d %d %d\n",x,y,_x,_y);
fflush(stdout);
scanf("%d",&val);
return val;
}
int main(){
std::cin>>n;
for(LL i=1;i<n;++i){
LL val(Check(i,1,i,n));
if(val&1){
if(fir_1) sec_1=i;
else fir_1=i;
}
}
if(!sec_1 && fir_1) sec_1=n; for(LL i=1;i<n;++i){
LL val(Check(1,i,n,i));
if(val&1){
if(fir_2) sec_2=i;
else fir_2=i;
}
}
if(!sec_2 && fir_2) sec_2=n; if(fir_1 && fir_2){
LL l=1,r=n;
while(l!=r){
LL mid(l+r>>1);
if(Check(fir_1,l,fir_1,mid)&1) r=mid;
else l=mid+1;
}
LL ret(l);
if(ret==fir_2){
printf("! %d %d %d %d\n",fir_1,ret,sec_1,sec_2);
}else{
printf("! %d %d %d %d\n",fir_1,ret,sec_1,fir_2);
}
}else{
if(fir_1){
LL l=1,r=n;
while(l!=r){
LL mid(l+r>>1);
if(Check(fir_1,l,fir_1,mid)&1) r=mid;
else l=mid+1;
}
LL ret(l);
printf("! %d %d %d %d\n",fir_1,ret,sec_1,ret);
}else{
LL l=1,r=n;
while(l!=r){
LL mid(l+r>>1);
if(Check(l,fir_2,mid,fir_2)&1) r=mid;
else l=mid+1;
}
LL ret(l);
printf("! %d %d %d %d\n",ret,fir_2,ret,sec_2);
}
}
return 0;
}

CF1153E Serval and Snake(交互题)的更多相关文章

  1. Codeforces Round #551 (Div. 2) E. Serval and Snake (交互题)

    人生第一次交互题ac! 其实比较水 容易发现如果查询的矩阵里面包含一个端点,得到的值是奇数:否则是偶数. 所以只要花2*n次查询每一行和每一列,找出其中查询答案为奇数的行和列,就表示这一行有一个端点. ...

  2. CF1153E Serval and Snake

    题目地址:CF1153E Serval and Snake 这是一道交互题 由于只需要确定起点和终点 你选择的矩形会将整个矩形分成的两个部分 如果起点和终点在同一个部分里,那么很显然回答应该是个偶数 ...

  3. CF1153E Serval and Snake【构造】

    题目链接:洛谷 这道题是很久以前NTF跟我说的,现在想起来把它做了... 我们发现,如果蛇的两头都在矩形里或矩形外,则询问为偶数,否则为奇数. 所以我们询问每一行和每一列,就能知道蛇的两头的横纵坐标了 ...

  4. 交互题[CF1103B Game with modulo、CF1019B The hat、CF896B Ithea Plays With Chtholly]

    交互题就是程序与电脑代码的交互. 比如没有主函数的程序,而spj则给你一段主函,就变成了一个整体函数. 还有一种就是程序和spj之间有互动,这个用到fflush(stdout);这个函数就可以实现交互 ...

  5. CF1114E Arithmetic Progression(交互题,二分,随机算法)

    既然是在CF上AC的第一道交互题,而且正是这场比赛让我升紫了,所以十分值得纪念. 题目链接:CF原网 题目大意:交互题. 有一个长度为 $n$ 的序列 $a$,保证它从小到大排序后是个等差数列.你不知 ...

  6. Codeforces 1137D - Cooperative Game - [交互题+思维题]

    题目链接:https://codeforces.com/contest/1137/problem/D 题意: 交互题. 给定如下一个有向图: 现在十个人各有一枚棋子(编号 $0 \sim 9$),在不 ...

  7. Gym - 101375H MaratonIME gets candies 交互题

    交互题介绍:https://loj.ac/problem/6 题意:输出Q X ,读入><= 来猜数,小于50步猜出就算过样例 题解:根本不需要每次输出要打cout.flush()... ...

  8. Codeforces Round #523 (Div. 2) F. Katya and Segments Sets (交互题+思维)

    https://codeforces.com/contest/1061/problem/F 题意 假设存在一颗完全k叉树(n<=1e5),允许你进行最多(n*60)次询问,然后输出这棵树的根,每 ...

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

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

随机推荐

  1. vue+node+mongoDB火车票H5(七)-- nodejs 爬12306查票接口

    菜鸟一枚,业余一直想做个火车票查票的H5,前端页面什么的已经写好了,node+mongoDB 也写了一个车站的接口,但 接下来的爬12306获取车次信息数据一直卡住,网上的爬12306的大部分是pyt ...

  2. k8s滚动升级

    为了服务升级过程中提供可持续的不中断的服务,Kubernetes 提供了rolling update机制,具体配置需要修改对应服务的yaml文件 参数解析: minReadySeconds: 100 ...

  3. navicat自动生成DDL语句

    场景:当我们在开发库修改表结构之后,需要把这些表结构的变化同步更新到生产库,这时候可以在Navicat中copy表结构变更的SQL语句. 当你点击了“设计表”进行修改表结构,在保存表结构之前点击“SQ ...

  4. Ubuntu 16.04 安装 Phpmyadmin 出现的问题及解决

    ubuntu 16.04 install phpmyadmin $ apt install phpmyadmin 安装时出现一个错误: An error occurred while installi ...

  5. Rsync文件同步机备份工具使用

    一,Rsync简介 Rsync是一款开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步的优秀工具.适用于多种操作平台. 全称是Remote synchronization 具有可使本地和远 ...

  6. Hadoop伪分布安装详解(五)

    目录: 1.修改主机名和用户名 2.配置静态IP地址 3.配置SSH无密码连接 4.安装JDK1.7 5.配置Hadoop 6.安装Mysql 7.安装Hive 8.安装Hbase 9.安装Sqoop ...

  7. GROUP_CONCAT 拼接顺序

    用 group_concat 拼接后的顺序 group_concat(id order by id) 里面id更新需要更换

  8. A TCP connection is distinguished by four values

    4个值唯一地定义一条TCP连接. HTTP The Definitive Guide A computer might have several TCP connections open at any ...

  9. centos6.5安装cmake-gui

    首先下载cmake(官网,2.8.12版本) 解压 运行 ./bootstrap --qt-gui make make install 完成后,在/usr/local/bin目录下会出现cmake-g ...

  10. GlusterFS部署

    一.GlusterFS简介 PB级容量.高可用.读写性能.基于文件系统级别共享.分布式.无metadata(元数据)的存储方式. GlusterFS(GNU ClusterFile System)是一 ...