zoukankan      html  css  js  c++  java
  • NOI2010 海拔

    http://www.lydsy.com/JudgeOnline/problem.php?id=2007

    平面图网络流。

    好吧,其实我只会暴力的网络流,并不会平面图网络流。

    Orz~

    http://www.cnblogs.com/proverbs/archive/2012/08/28/2660307.html

    http://blog.csdn.net/orpinex/article/details/7171640

    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    #include<fstream>
    #include<algorithm>
    #include<cstring>
    #include<string>
    #include<cmath>
    #include<queue>
    #include<stack>
    #include<map>
    #include<utility>
    #include<set>
    #include<bitset>
    #include<vector>
    #include<functional>
    #include<deque>
    #include<cctype>
    #include<climits>
    #include<complex>
    //#include<bits/stdc++.h>适用于CF,UOJ,但不适用于poj
     
    using namespace std;
    
    typedef long long LL;
    typedef double DB;
    typedef pair<int,int> PII;
    typedef complex<DB> CP;
    
    #define mmst(a,v) memset(a,v,sizeof(a))
    #define mmcy(a,b) memcpy(a,b,sizeof(a))
    #define fill(a,l,r,v) fill(a+l,a+r+1,v)
    #define re(i,a,b)  for(i=a;i<=b;i++)
    #define red(i,a,b) for(i=a;i>=b;i--)
    #define ire(i,x) for(typedef(x.begin()) i=x.begin();i!=x.end();i++)
    #define fi first
    #define se second
    #define m_p(a,b) make_pair(a,b)
    #define SF scanf
    #define PF printf
    #define two(k) (1<<(k))
    
    template<class T>inline T sqr(T x){return x*x;}
    template<class T>inline void upmin(T &t,T tmp){if(t>tmp)t=tmp;}
    template<class T>inline void upmax(T &t,T tmp){if(t<tmp)t=tmp;}
    
    const DB EPS=1e-9;
    inline int sgn(DB x){if(abs(x)<EPS)return 0;return(x>0)?1:-1;}
    const DB Pi=acos(-1.0);
    
    inline int gint()
      {
            int res=0;bool neg=0;char z;
            for(z=getchar();z!=EOF && z!='-' && !isdigit(z);z=getchar());
            if(z==EOF)return 0;
            if(z=='-'){neg=1;z=getchar();}
            for(;z!=EOF && isdigit(z);res=res*10+z-'0',z=getchar());
            return (neg)?-res:res; 
        }
    inline LL gll()
      {
          LL res=0;bool neg=0;char z;
            for(z=getchar();z!=EOF && z!='-' && !isdigit(z);z=getchar());
            if(z==EOF)return 0;
            if(z=='-'){neg=1;z=getchar();}
            for(;z!=EOF && isdigit(z);res=res*10+z-'0',z=getchar());
            return (neg)?-res:res; 
        }
    
    const int maxN=500;
    const int INF=1<<30;
    
    int N;
    int mp[maxN+10][maxN+10][4];
    int dis[maxN+10][maxN+10];
    int ans;
    
    struct V{int x,y;int v;inline V(int _x=0,int _y=0,int _v=0){x=_x;y=_y;v=_v;}};
    struct cmp{inline bool operator ()(V a,V b){return a.v>b.v;}};
    priority_queue<V,vector<V>,cmp>Q;
    
    inline void Push(int x,int y,int v)
      {
          if(dis[x][y]>v){dis[x][y]=v;Q.push(V(x,y,v));}
          if(x==N)upmin(ans,v+mp[N+1][y][0]);
          if(y==1)upmin(ans,v+mp[x][1][1]);
      }
    
    int main()
      {
          freopen("altitude.in","r",stdin);
          freopen("altitude.out","w",stdout);
          int i,j;
          N=gint();
          re(i,1,N+1)re(j,1,N)mp[i][j][0]=gint();
          re(i,1,N)re(j,1,N+1)mp[i][j][1]=gint();
          re(i,1,N+1)re(j,1,N)mp[i][j][2]=gint();
          re(i,1,N)re(j,1,N+1)mp[i][j][3]=gint();
          re(i,1,N)re(j,1,N)dis[i][j]=INF;
          ans=INF;
          re(i,1,N)Push(1,i,mp[1][i][0]);
          re(i,1,N)Push(i,N,mp[i][N+1][1]);
          while(!Q.empty())
            {
                int x=Q.top().x,y=Q.top().y,v=Q.top().v;
                Q.pop();
                if(v>dis[x][y])continue;
                if(x>1)Push(x-1,y,v+mp[x][y][2]);
                if(x<N)Push(x+1,y,v+mp[x+1][y][0]); 
                if(y>1)Push(x,y-1,v+mp[x][y][1]);
                if(y<N)Push(x,y+1,v+mp[x][y+1][3]);
            }
          cout<<ans<<endl;
          return 0;
      }
          
    View Code
  • 相关阅读:
    FJNU 1151 Fat Brother And Geometry(胖哥与几何)
    FJNU 1157 Fat Brother’s ruozhi magic(胖哥的弱智术)
    FJNU 1159 Fat Brother’s new way(胖哥的新姿势)
    HDU 3549 Flow Problem(最大流)
    HDU 1005 Number Sequence(数列)
    Tickets(基础DP)
    免费馅饼(基础DP)
    Super Jumping! Jumping! Jumping!(基础DP)
    Ignatius and the Princess IV(基础DP)
    Keywords Search(AC自动机)
  • 原文地址:https://www.cnblogs.com/maijing/p/4704958.html
Copyright © 2011-2022 走看看