zoukankan      html  css  js  c++  java
  • HDU 1272 小希的迷宫

    Portal: http://acm.hdu.edu.cn/showproblem.php?pid=1272

    是道好题

    噗噗噗,咱果断的优化大展神威,一次AC,爽到~

    底下Discuss哀鸿遍野,出题者卡的一手好常数.

    限制是1000MS直接300MS过了,然而最快的人直接0MS,%%%

     1 #include<iostream>
     2 #include<map>
     3 using namespace std;
     4 #define FOR(i,j,k) for(int i=j;i<=k;i++)
     5 #define FORD(i,j,k) for(int i=j;i>=k;i--)
     6 #define LL long long
     7 #define maxn 10010
     8 int father[maxn],val[maxn];
     9 int x,y,k;
    10 bool flag;
    11 map<int,int> ID;
    12 int setfind(int xx)
    13 {
    14     int fa=father[xx];
    15     if(fa==xx) return fa;
    16     else return father[xx]=setfind(fa);
    17 }
    18 bool setunion(int xx,int yy)
    19 {
    20     int X=setfind(xx);
    21     int Y=setfind(yy);
    22     if(X==Y) return true;
    23     else if(val[X]>val[Y]) father[Y]=X;
    24     else father[X]=Y;
    25     if(val[X]==val[Y]) val[Y]++;
    26     return false;
    27 }
    28 bool issame(int xx,int yy)
    29 {
    30     return setfind(xx)==setfind(yy);
    31 }
    32 bool setcheck()
    33 {
    34     FOR(i,1,k-1)
    35     if(!issame(i,i+1)) return true;
    36     return false;
    37 }
    38 int main()
    39 {
    40 while(true)
    41 {
    42     k=0;
    43     flag=true;
    44     for(cin>>x>>y;x>0&&y>0;cin>>x>>y)
    45     {
    46         if(!ID.count(x)) {k++; ID[x]=k; father[k]=k; val[k]=1;}
    47         if(!ID.count(y)) {k++; ID[y]=k; father[k]=k; val[k]=1;}
    48         if(setunion(ID[x],ID[y])) {for(cin>>x>>y;x>0&&y>0;cin>>x>>y);flag=false;break;}
    49     }
    50     if(x==-1) return 0; 
    51     if (setcheck()) flag=false;
    52     if(flag) cout<<"Yes"<<endl; else cout<<"No"<<endl;
    53     ID.clear();
    54 }
    55 return 0;
    56 }
    长长的代码

    这题打了30min,给我感觉最深的是模块化程序设计和代换化归思想的重要性

    当然还有:

    神TM error C2872 啊!rank不给用,_也不给用,还能不能好好用奇怪的姿势解题啦!!!

    总而言之明天再继续打题吧。困~

  • 相关阅读:
    【PHP】新浪、淘宝的地区 API调用
    wdcp/wdlinux 常用工具及命令集
    wdcp/wdlinux一键包的php5.3版本添加Zend.so 和Soap.so
    WDCP一些常用的一健安装包可选安装组件
    WDCP安装memcached
    WDCP控制面板安装卸载
    linux添加环境变量
    Linux常用命令大全
    [译]git commit
    [译]git add
  • 原文地址:https://www.cnblogs.com/mukoiaoi/p/5634525.html
Copyright © 2011-2022 走看看