• 随机化+黑白染色+dp——cf1310D


    /*
    随机,给每个点黑白随机黑白染色,由于题目要求路径必须黑白相间
    dp[k][i]表示长度为k的路径,终点是i的最小代价
    除去点1之外,最小值对应的路径里最多有9个点,那么这条路径随机到颜色对应的概率是1/512
    那么随机5000次,这个概率就接近1了 
    */
    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long 
    #define N 100
    
    ll n,mp[N][N],c[N],K,ans,dp[15][N];
    
    void solve(){
        memset(dp,0x3f,sizeof dp);
        dp[0][1]=0;
        for(int k=1;k<=K;k++)
            for(int i=1;i<=n;i++)
                for(int j=1;j<=n;j++)
                    if(c[i]!=c[j] && dp[k-1][j]!=0x3f3f3f3f3f3f3f3f)
                        dp[k][i]=min(dp[k][i],dp[k-1][j]+mp[j][i]);
        ans=min(ans,dp[K][1]);
    }
    
    int main(){
        cin>>n>>K;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                cin>>mp[i][j];
        ans=0x3f3f3f3f3f3f3f3f;
        int t=5000;srand(time(0));
        while(t--){
            for(int i=1;i<=n;i++)c[i]=rand()%2;
            solve();
        }
        cout<<ans<<'
    ';
    } 
  • 相关阅读:
    Codeforces
    BZOJ
    BZOJ
    HDU
    Codeforces
    codeforces
    HDU-5441 Travel 离线-并查集
    codefoeces-1000E We Need More Bosses(tarjan+最长链)
    牛客网暑期ACM多校训练营(第五场)H-subseq 树状数组
    HDU-3533 Escape (BFS
  • 原文地址:https://www.cnblogs.com/zsben991126/p/12503820.html
Copyright © 2020-2023  润新知