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 题意 在一个有边权的无向图中,我们定义 ...
随机推荐
- 第二节:比较DateTime和DateTimeOffset两种时间类型并介绍Quartz.Net中用到的几类时间形式(定点、四舍五入、倍数、递增)
一. 时间的类型 1. 背景 这里为什么要介绍时间类型呢,明明是定时调度篇,原因是在定时任务中,任务什么时间开始执行,什么时间结束执行,要用到各种各样的时间模式,虽然这不能算是一个复杂的问题,但在正式 ...
- django - 总结 - CRM - 知识点
1.扩展auth_user from django.contrib.auth.models import User,AbstractUser class UserInfo(AbstractUser): ...
- fstat函数
一.函数原型 #include<sys/stat.h> #include<unistd.h> int fstat(int fildes,struct stat *buf); 返 ...
- tr1
tr echo 12345 | tr '0-9' '9876543210' echo 87654 | tr '9876543210' '0-9' ROT13 echo "tr came, t ...
- JSR286portlet中使用Ajax的方法
JSR286portlet支持Ajax 一个平常的portlet先,jsr286类型. /Train01/WebContent/WEB-INF/portlet.xml <?xml version ...
- pythonのdjango CSRF简单使用
一.简介 django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成.而对于django中设置防跨站请求伪造功 ...
- 基于redis的cas集群配置
1.cas ticket统一存储 做cas集群首先需要将ticket拿出来,做统一存储,以便每个节点访问到的数据一致.官方提供基于memcached的方案,由于项目需要,需要做计入redis,根据官方 ...
- sql server的sysobjects表中xtype字段值的含义
xtype字段包含的值的意思如下: AF = Aggregate function (CLR) 聚合函数(CLR) C = CHECK constraint CHECK约束 D = Default ...
- ActiveMQ:使用Python访问ActiveMQ
Windows 10家庭中文版,Python 3.6.4,stomp.py 4.1.21 ActiveMQ支持Python访问,提供了基于STOMP协议(端口为61613)的库. ActiveMQ的官 ...
- 详解 CAP 定理 Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)
CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. 分布式 ...