zoukankan      html  css  js  c++  java
  • CodeChef Strongly Connected City解题报告

    题面

    用n条水平街道横贯m条垂直街道,构成一个(n - 1)×(m - 1)网格。为了增加交通流量,市长决定把每条街都改为单行道。这意味着在每条水平街道上,交通只从西向东移动或只从东向西移动。此外,在每条垂直街道上,交通只从北到南或只从南到北移动。在十字路口,可以从一条垂直的街道进入一条水平的街道,反之亦然。

    市长收到了一些街道方向图。你的任务是检查在建议的街道方向模式中,是否有可能从任何其他路口到达任何路口。

    输入

    第一行输入包含两个整数n和m(2≤n, m≤20),表示水平街道数和垂直街道数。

    第二行包含一个长度为n的字符串,由字符'<'和'>'组成,表示每条水平街道的方向。如果第i个字符等于'<',则街道由东向西,否则街道由西向东。街道是按从北到南的顺序排列的。

    第三行包含一个长度为m的字符串,由字符''和'v'组成,表示每条垂直街道的方向。如果第i个字符等于'',则街道从南到北,否则街道从北到南。街道是按从西到东的顺序排列的。

    输出

    如果给定的模式符合市长的标准,则打印包含“YES”的单行,否则打印包含“NO”的单行。

    example:
    Input
    3 3

    <>
    v^v
    Output
    NO
    Input
    4 6
    <><>
    vvv^
    Output
    YES

    题解

    看了题解之后发现这个题实在水的没边了
    对于四角的每个顶点,例如左上角的点,若横向为>,纵向为V,则没有路可以到达这个点
    然后对于四个顶点都特判一下就直接做完了???
    可能有人问如果四角可以通那怎么保证内部也是通的呢?
    事实上,四角通了,四边通了,内部自然成环自然通,具体地可以自己造一组数据手玩一下
    关键还是四个顶点的特判昂。

    代码

    #include <cstdio>
    #include <cstring>
    using namespace std;
    int n,m;
    char h[25],v[25];
    bool flag;
    int main(){
        scanf("%d%d",&n,&m);
        scanf("%s%s",h,v);
        if(h[0]=='>'&&v[0]=='v') flag=true;
        if(h[0]=='<'&&v[m-1]=='v') flag=true;
        if(h[n-1]=='>'&&v[0]=='^') flag=true;
        if(h[n-1]=='<'&&v[m-1]=='^') flag=true;
        if(flag) puts("NO");
        else puts("YES");
        return 0;
    }
    
    
  • 相关阅读:
    Codeforces Round #260 (Div. 1) A
    cdoj 1131 男神的礼物 区间dp
    bzoj2435: [Noi2011]道路修建 树上dp
    hdu 4597 Play Game 区间dp
    cdoj 31 饭卡(card) 01背包
    hdu5256 序列变换 dp LIS
    BZOJ 4027: [HEOI2015]兔子与樱花 树上dp
    Codeforces Round #202 (Div. 1) D. Turtles dp
    hdu 4114 Disney's FastPass 状压dp
    Python help() 函数
  • 原文地址:https://www.cnblogs.com/cancers/p/11283970.html
Copyright © 2011-2022 走看看