2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem K. KMC Attacks 交互题 暴力
Problem K. KMC Attacks
题目连接:
http://codeforces.com/gym/100714
Description
Warrant VI is a remote planet located in the Koprulu Sector. Warrant VI features a strange huge field,
which was discovered by the Kel-Morian Combine (KMC). The KMC is involved into a conflict with the
Scientific Community, which wishes to study the field, but the KMC intends to hold on to the significant
mineral wealth located there.
The field is represented by a rectangle of size N × M cells. All coordinates are positive integers. The left
upper corner is located at (1, 1) and the right bottom corner is at (N, M). The Scientific Community
have sent a T-280 unit to the field. You are one of the KMC members, your task is to find the unit
and destroy it. You have an orbital base equipped with a scanner at your disposal. You can examine
any single cell and if scan reveals the unit, a detachment is sent to destroy it. After every scan the unit
changes its location (i, j) by moving into one of four (three if the unit is in a border cell or two if it is in
a corner cell) adjacent cells. The unit has a tracking device. For every unit’s move you receive a signal:
‘U’ (for up, i decreases by one), ‘D’ (for down, i increases by one), ‘L’ (for left, j decreases by one), or ‘R’
(for right, j increases by one).
Time is running out so you are allowed to make not greater than 50000 scans to reveal the T-280 location.
Although the initial position of the unit is unknown, each its move provides you with information. You
are forbidden to scan cells, which definitely cannot hold the unit according to the gathered information.
Input
This is an interactive problem. Your program should first read a line with two integers N and M from
the standard input (where N is the height and M is the width of the field, 1 ≤ N, M ≤ 200). Then, for
every scan your program should print a corresponding request to the standard output (see below) and
read a reply from the standard input. Each reply is placed in a separate line and is either ’U’, ’D’, ’L’, ’R’
(meaning that you have missed and the unit has moved in the given direction) or ’DETECTED’ (meaning
that your last scan has revealed the unit’s position).
Output
For each scan print its coordinates i, j in a separate line (where i is the row number and j is the column
number). You have to flush the standard output after printing each request.
Sample Input
1 2
L
DETECTED
Sample Output
1 1
1 1
Hint
题意
交互题,在nm的矩阵,然后你需要找到一个东西。
每次你可以输入一个i,j位置,然后这个东西如果被抓到了,会返回delete,否则就会输出这个东西往哪儿走了。
题解:
暴力枚举这个东西的起点,然后判断现在的路径在哪儿,然后这样一直判断就好了。
注意,中途出界的点也得删去。
代码
#include <bits/stdc++.h>
#define rep(a,b,c) for(int (a)=(b);(a)<=(c);++(a))
#define drep(a,b,c) for(int (a)=(b);(a)>=(c);--(a))
#define pb push_back
#define mp make_pair
#define sf scanf
#define pf printf
#define two(x) (1<<(x))
#define clr(x,y) memset((x),(y),sizeof((x)))
#define dbg(x) cout << #x << "=" << x << endl;
const int mod = 1e9 + 7;
int mul(int x,int y){return 1LL*x*y%mod;}
int qpow(int x , int y){int res=1;while(y){if(y&1) res=mul(res,x) ; y>>=1 ; x=mul(x,x);} return res;}
inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;}
using namespace std;
list < pair < int , int > > s;
char buffer[2048];
list < int > test;
int dx , dy , upx , downx , ly , ry , N , M;
bool judge( pair < int , int > p ){
int x = p.first , y = p.second;
if( x - upx <= 0 ) return false;
if( x + downx > N ) return false;
if( y + ry > M ) return false;
if( y - ly <= 0 ) return false;
return true;
}
int main(int argc,char *argv[]){
scanf("%d%d",&N,&M);
for(int i = 1 ; i <= N ; ++ i) for(int j = 1 ; j <= M ; ++ j) s.push_back( mp(i , j) );
int ok = 0;
for(int i = 1 ; i <= 50000 ; ++ i){
while( !judge( s.front() ) ) s.pop_front();
printf("%d %d\n" , s.front().first + dx , s.front().second + dy );
s.pop_front();
fflush( stdout );
sf("%s",buffer);
int len = strlen(buffer);
if( len > 1 ){
ok = 1;
break;
}else{
char c = buffer[0];
if( c == 'U' ){
-- dx;
upx = max( upx , - dx );
}else if( c == 'D' ){
++ dx;
downx = max( downx , dx );
}else if( c == 'L' ){
-- dy;
ly = max( ly , -dy );
}else{
++ dy;
ry = max( ry , dy );
}
}
}
assert( ok == 1 );
return 0;
}
2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem K. KMC Attacks 交互题 暴力的更多相关文章
- 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem I. Interest Targeting 模拟题
Problem I. Interest Targeting 题目连接: http://codeforces.com/gym/100714 Description A unique display ad ...
- 2013-2014 ACM-ICPC, NEERC, Southern Subregional Contest Problem D. Grumpy Cat 交互题
Problem D. Grumpy Cat 题目连接: http://www.codeforces.com/gym/100253 Description This problem is a littl ...
- 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem D. Distance 迪杰斯特拉
Problem D. Distance 题目连接: http://codeforces.com/gym/100714 Description In a large city a cellular ne ...
- 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem C. Contest 水题
Problem C. Contest 题目连接: http://codeforces.com/gym/100714 Description The second round of the annual ...
- 2016-2017 ACM-ICPC, NEERC, Moscow Subregional Contest Problem L. Lazy Coordinator
题目来源:http://codeforces.com/group/aUVPeyEnI2/contest/229511 时间限制:1s 空间限制:512MB 题目大意: 给定一个n 随后跟着2n行输入 ...
- 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem J. Joke 水题
Problem J. Joke 题目连接: http://codeforces.com/gym/100714 Description The problem is to cut the largest ...
- 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem H. Hometask 水题
Problem H. Hometask 题目连接: http://codeforces.com/gym/100714 Description Kolya is still trying to pass ...
- 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem F. Finance 模拟题
Problem F. Finance 题目连接: http://codeforces.com/gym/100714 Description The Big Boss Company (BBC) pri ...
- 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem A. Alien Visit 计算几何
Problem A. Alien Visit 题目连接: http://codeforces.com/gym/100714 Description Witness: "First, I sa ...
随机推荐
- JAVA io 包小结
IO 无非读写 I --> Reader O--> Writer 为了方便字符 或者 文本文件的 操作创造出了 字符流 尤其是 缓冲字符输入输出流(BufferedReader,Buff ...
- 《Two Dozen Short Lessons in Haskell》(二十四)代数类型
这是<Two Dozen Short Lessons in Haskell>这本书的最后一章,第23章没有习题. 这一章里介绍了Haskell如果自定义一种类型,并且用一个双人博弈游戏为例 ...
- html5 canvas 奇怪的形状垂直渐变
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- JSBinding+Bridge.NET:Inspector拖变量支持
之前的文档说了,JSB的设计是不允许gameObject上挂逻辑脚本的.原因很简单,在Js工程中根本就不存在C#形式的逻辑脚本,如果在Cs工程中挂上了,到了Js工程这边,直接Missing. 实际在使 ...
- (AC自动机)C - 病毒侵袭持续中
题目链接:https://cn.vjudge.net/contest/280743#problem/C 题目大意:中文题 具体思路:首先取ascii码0-130是肯定不行的了,会超时.然后就开始简化, ...
- PHP中冒号、endif、endwhile、endfor使用介绍
我们经常在wordpress一类博客程序的模板里面看到很多奇怪的PHP语法,比如: 复制代码代码如下: <?php if(empty($GET_['a'])): ?> <font c ...
- Android 应用安全风险与防范
代码混淆 Android开发除了部分功能采用C/C++编码外,其余主要都是采用Java进行编码开发功能.Java应用非常容易被反编译,Android自然也不例外.只要利用apktool等类似的反编译工 ...
- 补充NTP知识的初中高
前言 网上流传阿里穆工对NTP知识梳理的初级和中级版本.我从时钟服务器厂商在实践中的经验对穆工的文档进行再次整理和补充,希望对使用此设备的客户和对此有兴趣的同学给出一些指引. 个人认为对知识的了解应该 ...
- ConvertUtils.register的作用
BeanUtils的populate方法或者getProperty,setProperty方法其实都会调用convert进行转换 但Converter只支持一些基本的类型,甚至连Java.util.D ...
- Java编程的逻辑 (17) - 继承实现的基本原理
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...