zoukankan      html  css  js  c++  java
  • bzoj 4423: [AMPPZ2013]Bytehattan

    Description

    比特哈顿镇有n*n个格点,形成了一个网格图。一开始整张图是完整的。
    有k次操作,每次会删掉图中的一条边(u,v),你需要回答在删除这条边之后u和v是否仍然连通。

    Input

    第一行包含两个正整数n,k(2<=n<=1500,1<=k<=2n(n-1)),表示网格图的大小以及操作的个数。
    接下来k行,每行包含两条信息,每条信息包含两个正整数a,b(1<=a,b<=n)以及一个字符c(c=N或者E)。
    如果c=N,表示删除(a,b)到(a,b+1)这条边;如果c=E,表示删除(a,b)到(a+1,b)这条边。
    数据进行了加密,对于每个操作,如果上一个询问回答为TAK或者这是第一个操作,那么只考虑第一条信息,否则只考虑第二条信息。
    数据保证每条边最多被删除一次。

    Output

    输出k行,对于每个询问,如果仍然连通,输出TAK,否则输出NIE。

    Sample Input

    3 4
    2 1 E 1 2 N
    2 1 N 1 1 N
    3 1 N 2 1 N
    2 2 N 1 1 N

    Sample Output

    TAK
    TAK
    NIE
    NIE

    HINT

    Source

    鸣谢Claris提供试题

    学习了一下平面图转对偶图的理论;发现这套理论有着许多优良的性质!!!!

    这篇博客有图,说得还行:http://www.cnblogs.com/dyllalala/p/3903311.html

    // MADE BY QT666
    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    #include<iostream>
    #include<cstring>
    using namespace std;
    typedef long long ll;
    const int N=10000000;
    int gi()
    {
      int x=0,flag=1;
      char ch=getchar();
      while(ch<'0'||ch>'9'){if(ch=='-') flag=-1;ch=getchar();}
      while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();
      return x*flag;
    }
    int n,K,fa[N],m,M,last=1;
    int find(int x){return fa[x]==x?x:fa[x]=find(fa[x]);}
    void work(int x,int y,char s){
        int a=x*m+y+1,b;
        if(s=='E')b=a-1;else b=a-m;
        int X=find(a),Y=find(b);
        if(X==Y){last=0;puts("NIE");}
        else {fa[X]=Y;last=1;puts("TAK");}
    }   
    int main()
    {
        n=gi(),K=gi();m=n+1,M=m*m;
        for(int i=1;i<=M;i++) fa[i]=i;
        for(int i=1;i<=m;i++) fa[i]=fa[M-i+1]=fa[i*m]=fa[i*m+1]=1;
        while(K--){
            int a,b,c,d;char s1[5],s2[5];
            a=gi(),b=gi(),scanf("%s",s1);
            c=gi(),d=gi(),scanf("%s",s2);
            if(last==1) work(a,b,s1[0]);
            else work(c,d,s2[0]);
        }
        return 0;
    } 
    
  • 相关阅读:
    CSS复合选择器
    模块之shutil模块模块详解
    模块之sys模块详解
    模块之os模块详解
    map遍历
    java完美处理表情符
    死磕设计模式—建造者模式
    Java String getChars()方法
    Java知识系统回顾整理01基础06数组05复制数组
    Java知识系统回顾整理01基础06数组04增强型for循环
  • 原文地址:https://www.cnblogs.com/qt666/p/6958810.html
Copyright © 2011-2022 走看看