zoukankan      html  css  js  c++  java
  • Codeforces 1130D1 Toy Train (Simplified) (思维)【贪心】

    <题目链接>

    题目大意:

    有一个的环形火车站,其中有$[1,n] n$个站台,站台上能够放糖果,火车只能朝一个方向移动,如果火车在站台$i$,那么下一秒就会在$i+1$站(如果$i=n$,则下一站为1),现在有$m$ 个运输糖果的方案,$s  e$表示站台$s$有一个糖果,现在需要将其运往站台$e$。火车容量不限,但是每次只能从站台上取出一颗糖果,火车可以卸载任意数量的糖果。现在求出火车从每个站台出发,完成所有糖果运输任务的最短时间。

    #include <bits/stdc++.h>
    using namespace std;
    #define N int(5e3+7)
    int cnt[N],mnri[N];
    int main(){
        int n,m,a,b;
        scanf("%d %d",&n,&m);
        for(int i=1;i<=n;++i)mnri[i]=1e9;
        for(int i=0;i<m;++i){
            scanf("%d %d",&a,&b);
            cnt[a]++;    //得到这个点能够收集的糖果数
            mnri[a]=min(mnri[a],(b>a)?(b-a):(n-a+b));    //起点到终点的环型距离
        }
        for(int i=1;i<=n;++i){    //枚举起点
            int ans=0;
            for(int j=1;j<=n;++j){   //枚举终点
                if(cnt[j]){     //一个位置经过的次数为糖果数(因为一定要从这个点取出这么多糖果),但是最后一圈可以不用跑完整的一圈
                    int to=((j>=i)?(j-i):(n-i+j))+(cnt[j]-1)*n+mnri[j];
                    ans=max(ans,to);    //送完所有糖果的最少时间为送完每个糖果点的糖果的最多时间
                }
            }
            printf("%d ",ans);
        }puts("");
    }   

    2019-02-25

  • 相关阅读:
    hdu 1018
    hdu 1005
    hdu 1222
    hdu 1297
    hdu 1568
    WCF入门, 到创建一个简单的WCF应用程序
    BarTender 通过ZPL命令操作打印机打印条码, 操作RFID标签
    WCF入门的了解准备工作
    C# Bartender模板打印 条码,二维码, 文字, 及操作RFID标签等。
    Qt configure脚本说明
  • 原文地址:https://www.cnblogs.com/00isok/p/10434366.html
Copyright © 2011-2022 走看看