zoukankan      html  css  js  c++  java
  • P1850 换教室

    ————————————————————————————————————————————————————-

    中规中矩的一道题,很有NOIP的特点

    ——————————————————————————————————————-

    #include<bits/stdc++.h>
    using namespace std;
    int n,m,v,e,a,b,w,c[2010],d[2010],l,dis[2010][2010];
    double gl[2010],dp[2010][2010][2];
    int main()
    {
        memset(dis,63,sizeof(dis));
        cin>>n>>m>>v>>e;
        for(int i=0;i<=n;i++)for(int j=0;j<=m;j++)dp[i][j][1]=dp[i][j][0]=1000000000;
        for(int i=1;i<=n;i++)cin>>c[i];
        for(int i=1;i<=n;i++)cin>>d[i];
        for(int i=1;i<=n;i++)cin>>gl[i];
        for(int i=1;i<=e;i++){cin>>a>>b>>w;dis[a][b]=dis[b][a]=min(dis[a][b],w);}
        for(int k=1;k<=v;k++)for(int i=1;i<=v;i++)for(int j=1;j<=v;j++)
        dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);    
        for(int i=1;i<=v;i++)dis[i][i]=0;
        dp[1][0][0]=dp[1][1][1]=0;
        for(int i=2;i<=n;i++)
        {
            int u1=c[i-1],u2=d[i-1];
            int v1=c[i],v2=d[i];
            dp[i][0][0]=dis[u1][v1]+dp[i-1][0][0];
            for(int j=1;j<=min(i,m);j++)
            {
                dp[i][j][0]=min(dp[i][j][0],min(dp[i-1][j][0]+dis[u1][v1],
                                                dp[i-1][j][1]+gl[i-1]*dis[u2][v1]+(1-gl[i-1])*dis[u1][v1]));
                dp[i][j][1]=min(dp[i][j][1],min(dp[i-1][j-1][0]+gl[i]*dis[u1][v2]+(1-gl[i])*dis[u1][v1],
                                            dp[i-1][j-1][1]+dis[u1][v1]*(1-gl[i])*(1-gl[i-1])+
                                                            dis[u1][v2]*(1-gl[i-1])*gl[i]+
                                                            dis[u2][v1]*(1-gl[i])*gl[i-1]+
                                                            dis[u2][v2]*gl[i]*gl[i-1]));
            }
        }
        double ans=1000000000;
        for(int i=0;i<=m;i++)ans=min(ans,min(dp[n][i][1],dp[n][i][0]));
        printf("%.2lf",ans);
    }
  • 相关阅读:
    【LOJ】#2888. 「APIO2015」巴邻旁之桥 Palembang Bridges
    【AtCoder】ARC099题解
    【LOJ】#2265. 「CTSC2017」最长上升子序列
    【LOJ】#2264. 「CTSC2017」吉夫特
    【AtCoder】AGC028 (A-E)题解
    【AtCoder】ARC100 题解
    【AtCoder】ARC101题解
    【AtCoder】AGC026 题解
    【LOJ】 #2308. 「APIO2017」商旅
    【BZOJ】3456: 城市规划(多项式求ln)
  • 原文地址:https://www.cnblogs.com/SFWR-YOU/p/11341417.html
Copyright © 2011-2022 走看看