首页 > 其他 > 详细

C. Asia区域宫

时间:2019-04-01 18:10:24      阅读:121      评论:0      收藏:0      [点我收藏+]

题目链接:https://www.hpuoj.com/contest/16/problem/C/

题目中有一句很重要的话:规定障碍物在迷宫中不能同行且不能同列,

这就表明只要障碍物不是在斜对角线中,那么就一定会有路到,并且最短为2*n-2;

 

只要不是这种斜对角线就行,我们数组从0开始编号,从左到右每条对角线上的数目多1.

我们只要考虑这种情况就可以了。

 

A   X    
  X      
X        
         
        B

 

 

 

 

 

 

 

 

 

 

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int maxn=100000+10;

int a[maxn];
int main()
{
    int t,n,m,x,y;
    cin >> t;
    while (t--) {
        memset(a,0,sizeof(a));
        cin >> n >> m;
        int flag = 0;
        while (m--) {
            cin >> x >> y;
            x--,y--;
            a[n+x+y]++;
            if (x+y < n) {
                if (a[n+x+y] == x+y+1) flag = 1;
            }
            else {
                if (a[n+x+y] == n*2-1-x-y) flag = 1;
            }
        }
        if (flag == 0) printf("Yes %d\n",n*2-2);
        else printf("No\n");
    }
    return 0;
}

 

C. Asia区域宫

原文:https://www.cnblogs.com/SJCHEN/p/10637768.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!