zoukankan      html  css  js  c++  java
  • codeforces 1129A2-Toy Train

    传送门:QAQQAQ

    题意:有1-n个站点,成环形,有一辆运货车,在这个n个站点之间运输糖果,货车只能按照1->n的方向走,到第n个站的时候,又回到的1,现在告诉你有m个运输任务,从x站点运输一个糖果到y站点。已知货车的容量足够大,可以同时装无数个糖果,但是每一次经过一个站的时候,只能够选择其中一项任务进行运输,假设从一个站到另一个站的运输时间为1,请问从1-n每个站点作为起点,最短的运输时间分别是多少

    假设从第i个点出发要运输K个糖果,那么就要经过点iK次。所以预处理出运输完这些糖果最后停下的最近点,就是满足i点的最近距离,对所有最近距离取MAX,就是最终答案
    用t表示糖果数,p表示最近点
    (t[j]=0要判掉,因为根本不用考虑从i走到j,而且在代码中t[j]=0时p[j]=n,所以会把n*(t[j]-1)抵掉)

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 
     4 int n,m,r=0;
     5 vector<int> v[6050];
     6 int p[6050],t[6050];
     7 
     8 int calc(int s,int e)
     9 {
    10     int ret=e-s;
    11     if (ret<0) ret+=n;
    12     return ret;
    13 }
    14 
    15 int main()
    16 {
    17     memset(t,0,sizeof(t));
    18     scanf("%d%d",&n,&m);
    19     for(int i=1;i<=m;i++)
    20     {
    21         int x,y;
    22         scanf("%d%d",&x,&y);
    23         v[x].push_back(y);
    24         t[x]++;
    25     }
    26     for(int i=1;i<=n;i++)
    27     {
    28         int minn=n;
    29         for(int j=0;j<(int)v[i].size();j++)
    30         {
    31             minn=min(minn,calc(i,v[i][j]));
    32         }
    33         p[i]=minn;
    34     }
    35     for(int i=1;i<=n;i++)
    36     {
    37         int ans=0;
    38         for(int j=1;j<=n;j++)
    39         {
    40             if(t[j]==0) continue;
    41             ans=max(ans,calc(i,j)+n*(t[j]-1)+p[j]);
    42         }
    43         printf("%d ",ans);
    44     }
    45     return 0;
    46 }
  • 相关阅读:
    zbb20180930 设计模式-单例模式
    zbb20180930 代理模式 -静态代理-jdk动态代理-cglib动态代理
    zbb20180929 thread java并发编程之Condition
    zbb20180929 thread 自旋锁、阻塞锁、可重入锁、悲观锁、乐观锁、读写锁、对象锁和类锁
    zbb20180929 thread notify()与notifyAll()的区别
    26、Jquery 基础
    25、Javascript 事件
    24、Javascript BOM
    23、Javascript DOM
    22、正则表达式
  • 原文地址:https://www.cnblogs.com/Forever-666/p/10531429.html
Copyright © 2011-2022 走看看