zoukankan      html  css  js  c++  java
  • CF Gym 100637A Nano alarm-clocks

    题意:给你一些钟的时间,只可以往后调, 问最少调的时间总和是多少

    题解:因为肯定是调到某个出现过时间的,只要枚举时间,在维护一个前缀和快速计算出时间总和就行了。

    #include<cstdio>
    #include<cmath>
    #include<vector>
    #include<map>
    #include<set>
    #include<algorithm>
    #define first fi
    #define second se
    using namespace std;
    typedef long long ll;
    
    const int maxn = 100005;
    const int hmod = 12;
    const ll mmod = 1e6;
    const ll Fac = 1e12;
    const ll tmod = 12e12;//ll
    
    
    
    ll sum[maxn];
    ll times[maxn];
    int main()
    {
        int n;
        scanf("%d",&n);
    
        for(int i = 1; i <= n; i++){
            int th,tm,ts;
            scanf("%d%d%d",&th,&tm,&ts);
            times[i] = th*Fac+tm*mmod+ts;
        }
        sort(times+1,times+1+n);
        for(int i = 1; i <= n; i++)
            sum[i] = sum[i-1]+times[i];
        ll ans = 0x7fffffffffffffffll;
        for(int i = 1; i <= n; i++){
            ll tmp = i*times[i] - sum[i];   //前面的钟拨到time(i)
            tmp += (tmod+times[i])*(n-i)-sum[n]+sum[i];//后面的钟拨到time(i)
            ans = min(ans,tmp);
        }
    
        int ansH,ansM,ansS;
        ansH = ans/Fac; ans -= ansH*Fac;
        ansM = (ans/mmod); ans -= ansM*mmod;
        ansS = ans;
        printf("%d %d %d",ansH,ansM,ansS);
        return 0;
    }
  • 相关阅读:
    求成绩表中各门课程前三名
    GridView绑定时通过RowDataBound事件获取数据源列值
    在运行时获取ibatIS执行的sql
    Java基础:数组Array转成List的几种方法
    python之格式化输出
    python之集合【set】
    每日日报
    每日日报
    每日日报
    每日日报
  • 原文地址:https://www.cnblogs.com/jerryRey/p/4675986.html
Copyright © 2011-2022 走看看