这题是二分法
using System;
using System.Linq;
using System.IO;
using System.Text;
using System.Collections;
using System.Collections.Generic;
/**
* Auto-generated code below aims at helping you parse
* the standard input according to the problem statement.
**/
class Player
{
static void Main(string[] args)
{
string[] inputs;
inputs = Console.ReadLine().Split(' ');
int W = int.Parse(inputs[0]); // width of the building.
int H = int.Parse(inputs[1]); // height of the building.
int N = int.Parse(Console.ReadLine()); // maximum number of turns before game over.
inputs = Console.ReadLine().Split(' ');
int X0 = int.Parse(inputs[0]);
int Y0 = int.Parse(inputs[1]);
int Xmin =0;
int Ymin =0;
int Xmax =W-1;
int Ymax =H-1;
// game loop
while (true)
{
string bombDir = Console.ReadLine(); // the direction of the bombs from batman's current location (U, UR, R, DR, D, DL, L or UL)
// Write an action using Console.WriteLine()
// To debug: Console.Error.WriteLine("Debug messages...");
switch(bombDir){
case "U":Ymax = Y0-1;Y0 = ((Ymax+Ymin)/2);break;
case "D":Ymin = Y0+1;Y0 = ((Ymax+Ymin)/2);break;
case "L":Xmax = X0-1;X0 = ((Xmax+Xmin)/2);break;
case "R":Xmin = X0+1;X0 = ((Xmax+Xmin)/2);break;
case "UL":Ymax = Y0-1;Y0 = ((Ymax+Ymin)/2);
Xmax = X0-1;X0 = ((Xmax+Xmin)/2);break;
case "UR":Ymax = Y0-1;Y0 = ((Ymax+Ymin)/2);
Xmin = X0+1;X0 = ((Xmax+Xmin)/2);break;
case "DL":Ymin = Y0+1;Y0 = ((Ymax+Ymin)/2);
Xmax = X0-1;X0 = ((Xmax+Xmin)/2);break;
case "DR":Ymin = Y0+1;Y0 = ((Ymax+Ymin)/2);
Xmin = X0+1;X0 = ((Xmax+Xmin)/2);break;
}
// the location of the next window Batman should jump to.
Console.WriteLine("{0} {1}",X0,Y0);
}
}
}
先判断目标坐标在所在坐标的哪个方向
设定max值跟min值
然后在目标坐标跟所在坐标中间砍一刀
再判断目标坐标在所在坐标的哪个方向
循环设定max和min值