Codechef August Challenge 2018 : Interactive Matrix
首先整个矩阵可以被分为很多小矩阵,小矩阵内所有行的单调性是一样的,所有列的单调性是一样的。
考虑如何在这样一个小矩阵中找出答案。我的策略是每次取四个角中最大值和最小值的点,这样可以每次删掉一行或一列,代价就是行数+列数。
稍微思考一下小矩形可能的分布,一是行分两块,列分两块,这样总共4个小矩形。二是所有行(或列)都是一致的,而列(或行)可以任意分。前者最多两个小矩形需要处理,且行列之和为2n,后者则是一个矩形,最大代价也是2n。
最开始花2n的代价查出每行每列的单调性。
#include<cstdio>
#include<cassert>
#include<algorithm>
using namespace std; int n,k,v,map[][],H=,L=,a;
bool h[],l[];
inline int ask(int x,int y){
if (map[x][y]) return map[x][y];
assert(k--);
printf("1 %d %d\n",x,y);
fflush(stdout);
scanf("%d",&map[x][y]);
return map[x][y];
}
inline bool work(int l,int r,int _l,int _r,int hs,int ls){
int H[]={l,r},L[]={_l,_r};
if (ask(H[ls],L[hs])<v||ask(H[ls^],L[hs^])>v) return ;
for(;H[]<=H[]&&L[]<=L[];){
a=ask(H[ls^],L[hs]);
if (a==v){
printf("2 %d %d\n",H[ls^],L[hs]);
fflush(stdout);
return ;
}else if (a>v) L[hs]+=hs?-:;else H[ls^]+=ls?:-;
}
return ;
}
int main(){
scanf("%d%d%d",&n,&k,&v);
for (int i=;i<=n;i++){
ask(i,i);
ask(i,i==n?:i+);
if (i==n) h[i]=map[i][]<map[i][i];else h[i]=map[i][i]<map[i][i+];
}
l[]=map[][]<map[n][];
for (int i=;i<=n;i++) l[i]=map[i-][i]<map[i][i]; for (int i=,_i;i<=n;i=_i){
for (_i=i+;_i<=n;_i++)
if (h[_i]!=h[i]) break;
for (int j=,_j;j<=n;j=_j){
for (_j=j+;_j<=n;_j++)
if (l[_j]!=l[j]) break;
if (work(i,_i-,j,_j-,h[i],l[j])) return ;
}
}
puts("2 -1 -1");
fflush(stdout);
}
Codechef August Challenge 2018 : Interactive Matrix的更多相关文章
- Codechef August Challenge 2018 : Chef at the River
传送门 (要是没有tjm(Sakits)的帮忙,我还真不知道啥时候能做出来 结论是第一次带走尽可能少的动物,使未带走的动物不冲突,带走的这个数量就是最优解. 首先这个数量肯定是下界,更少的话连第一次都 ...
- Codechef August Challenge 2018 : Safe Partition
传送门 (虽然是A了但是不知道复杂度是不是正确的 考虑以某个位置为结尾的合法划分 先考虑min,带来的影响是限制了最小长度,预处理出这个最小长度后,这可以在处理到这个数时,把不能算的部分去掉(不满足m ...
- Codechef August Challenge 2018 : Lonely Cycles
传送门 几波树形dp就行了. #include<cstdio> #include<cstring> #include<algorithm> #define MN 5 ...
- Codechef August Challenge 2018 : Coordinate Compression
传送门 外边二分,里面拿线段树维护贪心就行了. #include<cstdio> #include<vector> #include<cstring> #inclu ...
- Codechef August Challenge 2018 : Modular GCD
传送门 一开始还手动拓欧找规律,发现好像玩不了. 然后想了想,A-B这个数比较小,枚举它的因子判断合不合法就行了. 需要特判A=B的情况. #include<cstdio> #includ ...
- Codechef October Challenge 2018 游记
Codechef October Challenge 2018 游记 CHSERVE - Chef and Serves 题目大意: 乒乓球比赛中,双方每累计得两分就会交换一次发球权. 不过,大厨和小 ...
- Codechef September Challenge 2018 游记
Codechef September Challenge 2018 游记 Magician versus Chef 题目大意: 有一排\(n(n\le10^5)\)个格子,一开始硬币在第\(x\)个格 ...
- codechef February Challenge 2018 简要题解
比赛链接:https://www.codechef.com/FEB18,题面和提交记录是公开的,这里就不再贴了 Chef And His Characters 模拟题 Chef And The Pat ...
- Codechef STMINCUT S-T Mincut (CodeChef May Challenge 2018) kruskal
原文链接http://www.cnblogs.com/zhouzhendong/p/9010945.html 题目传送门 - Codechef STMINCUT 题意 在一个有边权的无向图中,我们定义 ...
随机推荐
- 分布式监控系统开发【day37】:表结构设计(二)
一.表结构关系图 二.表结构需求讨论 1.主机表(Host) 1.解决了什么问题? 1.如果我不想让它监控了,就有一个开关的东西给它禁掉2.主机存活状态检测间隔 2.代码 class Host(mod ...
- MapReduce-序列化(Writable)
Hadoop 序列化特点 Java 的序列化是一个重量级序列化框架(Serializable),一个对象被序列化后,会附带很多额外的信息(各种校验信息,Header,继承体系等),不便于在网络中高效传 ...
- Educational Codeforces Round 33 (Rated for Div. 2) E. Counting Arrays
题目链接 题意:给你两个数x,yx,yx,y,让你构造一些长为yyy的数列,让这个数列的累乘为xxx,输出方案数. 思路:考虑对xxx进行质因数分解,设某个质因子PiP_iPi的的幂为kkk,则这个 ...
- Problem B: Battle Royale(简单几何)
题目链接: B - Battle Royale Gym - 102021B 题目大意:给你两个坐标,表示起点和终点,然后给你两个圆,第一个圆包含两个圆,然后问你起点到终点的最短距离(不经过第二个圆 ...
- Python 入门基础14 --time、os、random、json、pickle 常用模块1
今日内容: 一.常用模块 2019.04.10 更新 1.time:时间 2.calendar:日历 3.datetime:可以运算的时间 4.sys:系统 5.os:操作系统 6.os.path:系 ...
- Django 内置分页器
先导入Django内置的分页器 在商品列表页或者购物车列表页导入 在渲染list.html导入 然后在views后台渲染方法写入 打开list页面结果
- TortoiseGit与GIt生成ssh秘钥添加到github账号的简单方法!简单使用
今天升级了自己电脑上的git与TortoiseGit,全部换成了最新版,后来不知道怎么的git的秘钥还能使用,可以直接拉取或者提交ssh地址克隆的代码,可是小乌龟客户端就悲剧了 公司的项目有key.p ...
- 肺结节CT影像特征提取(四)——肺结节CT影像特征提取MATLAB代码实现
之前的文章讲述了肺结节CT影像数据特征提取算法及基于MATLAB GUI设计的肺结节CT影像特征提取系统.本文将讲述几个主要部分的代码实现,分别是预处理.灰度特征提取.纹理特征提取.形态特征提取数据. ...
- jenkins中slave节点连接的两种常用方式
我们在使用jenkins的时候,一般来说肯定是有slave节点的,本来网上也有好多关于jenkins节点配置的教程,我也就不写了.简单说明一下:任务一般是在slave上面运行的.当然不是讲master ...
- FastDFS使用
1.在linux系统中安装FastDFS服务image-server.7z 2.导入FastDFS jar包 fastdfs_client_v1.20.jar 3.创建配置文件fastdfs_clie ...