• 1741. Communication Fiend(dp)


    刷个简单的DP缓缓心情

    1A

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<stdlib.h>
     6 #include<vector>
     7 using namespace std;
     8 #define N 10010
     9 vector<int>q[N];
    10 #define LL __int64
    11 #define INF 1e10
    12 LL dp[N][4];
    13 int o[N];
    14 struct node
    15 {
    16     int x,y,d;
    17     char s[10];
    18 }p[N];
    19 int main()
    20 {
    21     int i,j,n,m;
    22     scanf("%d%d",&n,&m);
    23     for(i = 1; i <= m ; i++)
    24     {
    25         scanf("%d%d%d%s",&p[i].x,&p[i].y,&p[i].d,p[i].s);
    26         q[p[i].y].push_back(i);
    27     }
    28     dp[i][1] = 0;
    29     dp[i][2] = INF;
    30     dp[i][3] = INF;
    31     for(i = 2; i <= n ; i++)
    32     {
    33         dp[i][1] = dp[i][2] = dp[i][3] = INF;
    34         for(j = 0 ; j < (int)q[i].size() ; j++)
    35         {
    36             int v = q[i][j],k,x = p[v].x,w = p[v].d;
    37             if(strcmp(p[v].s,"Licensed")==0)
    38             k = 1;
    39             else if(strcmp(p[v].s,"Cracked")==0)
    40             k = 2;
    41             else k = 3;
    42             if(k==1)
    43             {
    44                 dp[i][1] = min(dp[i][1],min(dp[x][1]+w,dp[x][2]+w));
    45             }
    46             else if(k==2)
    47             {
    48                 dp[i][2] = min(dp[i][2],min(dp[x][2]+w,dp[x][1]+w));
    49                 dp[i][3] = min(dp[i][3],dp[x][3]+w);
    50             }
    51             else
    52             {
    53                 dp[i][3] = min(dp[i][3],dp[x][3]+w);
    54                 dp[i][3] = min(dp[i][3],dp[x][2]+w);
    55                 dp[i][3] = min(dp[i][3],dp[x][1]+w);
    56             }
    57         }
    58     }
    59     LL ans = INF;
    60     for(i = 1; i <= 3 ; i++)
    61     ans = min(ans,dp[n][i]);
    62     if(ans==INF)
    63     puts("Offline");
    64     else
    65     {
    66         puts("Online");
    67         printf("%I64d
    ",ans);
    68     }
    69     return 0;
    70 }
    View Code

  • 相关阅读:
    传统IO总结
    关于JAVA垃圾回收的一些小tips
    一个爬喜马拉雅音频的例子
    return研究
    Java基础知识-java.util.concurrent包下常见类的使用
    <a>链接的四个伪类顺序
    前端面试题
    setTimeout的作用以及setTimeout延时0毫秒的作用
    闭包的使用
    JavaScript typeof obj === ‘object’ 这样写有什么问题
  • 原文地址:https://www.cnblogs.com/shangyu/p/3379198.html
Copyright © 2020-2023  润新知