[CF1100D]Dasha and Chess

Dasha and Chess

题解

开始看这道题时你会发现这道题数据给得非常奇怪,但可以先不管。

由于车走的都是最优策略,所以国王只有在行列上同时出现2个小兵时才能获胜。

于是乎我们需要构造出一种情形使得国王在一段长度为n的路途中同时面对n以上的小兵。

于是,我们又回到了数据上。一个很神奇的式子:666\times \frac{3}{4}= 499.5

而499正是从中点走到图的一个顶点的距离。

所以将图平均分成4部分后,当国王在中点时肯定会有三部分的和大于499,于是我们就可以先走到中点,再从中点沿最多的一快块走到端点,即可保证一定可以获得胜利。

源码

注意有人的格子不能走呀。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<map>
using namespace std;
typedef long long LL;
struct ming{
	int x,y;
	ming(){}
	ming(int X,int Y){x=X;y=Y;}
}king,car[700];
int sum[5];
bool vis[1005][
posted @ 2020-07-20 09:41  StaroForgin  阅读(5)  评论(0)    收藏  举报  来源