zoukankan      html  css  js  c++  java
  • 2020牛客暑期多校训练营 第二场 I Interval 最大流 最小割 平面图对偶图转最短路

    LINK:Interval

    赛时连题目都没看。

    观察n的范围不大不小 而且建图明显 考虑跑最大流最小割.

    图有点稠密dinic不太行。 一个常见的trick就是对偶图转最短路。

    建图有点复杂 不过建完跑最短路即可。

    当做复习了一下吧. 值得注意的是需要开(long long)

    code
    //#include<bits/stdc++.h>
    #include<iostream>
    #include<cstdio>
    #include<ctime>
    #include<cctype>
    #include<queue>
    #include<deque>
    #include<stack>
    #include<iostream>
    #include<iomanip>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<ctime>
    #include<cmath>
    #include<cctype>
    #include<cstdlib>
    #include<queue>
    #include<deque>
    #include<stack>
    #include<vector>
    #include<algorithm>
    #include<utility>
    #include<bitset>
    #include<set>
    #include<map>
    #define ll long long
    #define db double
    #define INF 10000000000000000ll
    #define ldb long double
    #define pb push_back
    #define put_(x) printf("%d ",x);
    #define get(x) x=read()
    #define gt(x) scanf("%d",&x)
    #define gi(x) scanf("%lf",&x)
    #define put(x) printf("%d
    ",x)
    #define putl(x) printf("%lld
    ",x)
    #define rep(p,n,i) for(RE int i=p;i<=n;++i)
    #define go(x) for(int i=lin[x],tn=ver[i];i;tn=ver[i=nex[i]])
    #define fep(n,p,i) for(RE int i=n;i>=p;--i)
    #define vep(p,n,i) for(RE int i=p;i<n;++i)
    #define pii pair<int,int>
    #define mk make_pair
    #define RE register
    #define P 1000000007ll
    #define gf(x) scanf("%lf",&x)
    #define pf(x) ((x)*(x))
    #define uint unsigned long long
    #define ui unsigned
    #define EPS 1e-4
    #define sq sqrt
    #define mod 1000000007
    #define l(x) s[x].l
    #define r(x) s[x].r
    #define w1(p) s[p].w1
    #define w2(p) s[p].w2
    #define tag(p) s[p].tag
    #define zz p<<1
    #define yy p<<1|1
    using namespace std;
    char *fs,*ft,buf[1<<15];
    inline char gc()
    {
        return (fs==ft&&(ft=(fs=buf)+fread(buf,1,1<<15,stdin),fs==ft))?0:*fs++;
    }
    inline int read()
    {
        RE int x=0,f=1;RE char ch=gc();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=gc();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=gc();}
        return x*f;
     
    }
    const int MAXN=520;
    int n,m,cnt,len,S,T;
    int a[MAXN][MAXN];
    int b[MAXN][MAXN];
    int id[MAXN][MAXN],vis[MAXN*MAXN];
    int lin[MAXN*MAXN],ver[MAXN*MAXN<<2],nex[MAXN*MAXN<<2],e[MAXN*MAXN<<2];
    inline void add(int x,int y,int z)
    {
        ver[++len]=y;nex[len]=lin[x];lin[x]=len;e[len]=z;
        ver[++len]=x;nex[len]=lin[y];lin[y]=len;e[len]=z;
    }
    priority_queue<pair<ll,int> > q;
    ll dis[MAXN*MAXN];
    inline void dij()
    {
        q.push(mk(0,S));
        rep(1,cnt,i)dis[i]=INF;dis[S]=0;
        while(q.size())
        {
            int x=q.top().second;q.pop();
            if(vis[x])continue;
            vis[x]=1;
            go(x)
            {
                if(dis[tn]>dis[x]+e[i])
                {
                    dis[tn]=dis[x]+e[i];
                    q.push(mk(-dis[tn],tn));
                }
            }
        }
    }
    int main()
    {
        //freopen("1.in","r",stdin);
        get(n);get(m);
        rep(1,m,i)
        {
            int get(l),get(r);r=n-r+1;
            char ch=gc();
            while(ch!='L'&&ch!='R')ch=gc();
            if(ch=='L')a[l][r]=read();
            else b[l][r]=read();
        }
        rep(1,n-1,i)rep(1,n-1,j)id[i][j]=++cnt;
        rep(1,n-1,i)rep(1,n-1,j)
        {
            if(j!=n-1)//向右连边.
            add(id[i][j],id[i][j+1],a[i][j+1]==0?INF:a[i][j+1]);
            if(i!=n-1)//向下连边.
            add(id[i][j],id[i+1][j],b[i+1][j]==0?INF:b[i+1][j]);
        }
        S=++cnt;T=++cnt;
        rep(1,n-1,i)add(S,id[i][1],a[i][1]==0?INF:a[i][1]);
        rep(1,n-1,i)add(T,id[1][i],b[1][i]==0?INF:b[1][i]);
        dij();
        putl(dis[T]==INF?-1:dis[T]);
        return 0;
    }
    
  • 相关阅读:
    zbb20181207 springboot @ConfigurationProperties使用
    zbb20181206 logback,lombok 默认日志logback配置解析
    Spring Boot (8) 全局异常处理
    Spring Boot (7) JdbcTemplate访问数据库
    Spring Boot (6) Spring Data JPA
    Spring Boot (4) 静态页面和Thymeleaf模板
    Spring Boot (3) 热部署devtools
    Spring Boot (2) Restful风格接口
    Spring Boot (1) 构建第一个Spring Boot工程
    idea使用maven搭建ssm框架实现登陆商品增删改查
  • 原文地址:https://www.cnblogs.com/chdy/p/13336011.html
Copyright © 2011-2022 走看看