zoukankan      html  css  js  c++  java
  • luogu P1315 观光公交 贪心

     1 #include <cstdio>
     2 #include <algorithm>
     3 using namespace std;
     4 typedef long long ll;
     5 const int MAXN = 1050;
     6 struct node
     7 {
     8     int arr,st,ed;
     9 } id[MAXN * 10];
    10 int t[MAXN];//最晚时间
    11 int ti[MAXN];//到达时间
    12 int sum[MAXN];//人数
    13 int dis[MAXN];
    14 int g[MAXN];
    15 int n,m,k;
    16 int main()
    17 {
    18     scanf("%d%d%d",&n,&m,&k); 
    19     for(int i = 1;i <= n - 1;i++)
    20         scanf("%d",&dis[i]);
    21     for(int i = 1;i <= m;i++)
    22     {
    23         scanf("%d%d%d",&id[i].arr,&id[i].st,&id[i].ed);
    24         t[id[i].st] = max(t[id[i].st],id[i].arr);//到大某点的最晚时间
    25         sum[id[i].ed]++;//到达某点的人数
    26     }
    27     for(int i = 2;i <= n;i++)
    28         sum[i] += sum[i - 1];
    29     for(int i = 1;i <= n;i++)
    30         ti[i] = max(ti[i - 1],t[i - 1]) + dis[i - 1];
    31     int ans = 0;
    32     for(int i = 1;i <= m;i++)
    33         ans += ti[id[i].ed] - id[i].arr;
    34     while(k)
    35     {
    36         g[n - 1]=n;
    37         for(int i = n - 2;i > 0;i--)
    38         {
    39             if(ti[i + 1] > t[i + 1])
    40                 g[i] = g[i + 1];
    41             else
    42                 g[i] = i + 1;
    43         }
    44         int pos = 0,ma = 0;
    45         for(int i = 1;i < n;i++)
    46         {
    47             if(dis[i] && (sum[g[i]] - sum[i]) > ma)
    48             {
    49                 ma = sum[g[i]] - sum[i];
    50                 pos = i;
    51             }
    52         }
    53         if(!ma)
    54             break;
    55         k--;
    56         dis[pos]--;
    57         ans -= ma;
    58         for(int i = 1;i <= n;i++)
    59             ti[i] = max(ti[i - 1],t[i - 1]) + dis[i - 1];
    60     }
    61     printf("%d
    ",ans);
    62 
    63     return 0;
    64 }
    心之所动 且就随缘去吧
  • 相关阅读:
    编码的使用,编码与解码
    小数据池,is和==的区别,id()
    python的内置函数
    python基本数据类型
    组合模式学习
    访问者模式
    C++ primer Plus回顾
    命令模式学习
    策略模式学习(设计模式)
    python_xlrd模块学习
  • 原文地址:https://www.cnblogs.com/iat14/p/11482904.html
Copyright © 2011-2022 走看看