zoukankan      html  css  js  c++  java
  • 八目鳗

    问题描述

    米斯蒂娅去捕捉八目鳗为开店作准备。现在,她在一个有八目鳗的池塘边。她知道池塘里的有n条八目鳗,把第i条八目鳗从池塘弄回小店需要ti∗2个单位的时间(毕竟需要往返)。
    这些八目鳗会自己吃P点!随着时间的推移,米斯琪把它们弄回来所消耗的体力与时间成正比,即在第t个时刻开始运第i条八目鳗所消耗的体力为t∗ci,其中,ci是给定的常数。一开始所有的八目鳗都没有P点,也就是说运送第一条八目鳗所消耗的体力为0。
    米斯琪想知道把所有八目鳗运回小店所消耗的体力最少是多少。

    输入格式

    第一行输入一个整数n,表示八目鳗的数量。
    接下来n行,每行包含两个整数ti,ci

    输出格式

    一个整数,表示最少消耗的体力。

    样例输入

    6

    3 1

    2 5

    2 3

    3 2

    4 1

    1 6

    样例输出

    86

    数据范围

    对于10%的数据,n≤10,t≤100,ci≤10;
    对于60%的数据,n≤1000,t≤20000,ci≤100;
    对于100%的数据,n≤100000,t≤2000000,ci≤100。

    题解

    假设我们已经找出消耗体力最少的方案,并将八目鳗按搬运顺序重新编号,即现在编号为i的八目鳗是第i个搬运的

    设当前时刻为t,接下来要运第i-1只八目鳗和第i只八目鳗,而先运第i-1只八目鳗的条件为:t*ci-1+(t+2*ti-1)*ci≤t*ci+(t+2*ti)*ci-1


    证明:

    若先运第i-1只八目鳗,需消耗体力t*ci-1,耗费了2*ti-1的时间,在t+2*ti-1时刻开始运第i只八目鳗,需消耗体力(t+2*ti-1)*ci

    同理可得先运第i只八目鳗消耗的总体力为t*ci+(t+2*ti)*ci-1

    而我们已经找出消耗体力最少的方案,即我们已经知道第i-1只八目鳗在第i只八目鳗之前运,那么就需要满足先运第i-1只八目鳗消耗的总体力比先运第i只八目鳗消耗的总体力少,即t*ci-1+(t+2*ti-1)*ci≤t*ci+(t+2*ti)*ci-1


    整理得:ti-1*ci≤ti*ci-1

    读入所有数据后按这个条件排序,再依题意按顺序计算消耗的体力即可

     1 #include <algorithm>
     2 #include <cstdio>
     3 #define ll long long
     4 int n;
     5 ll ans;
     6 struct node{
     7     ll t,c;
     8 }a[100005];
     9 bool cmp(node x,node y)
    10 {
    11     return (x.t*y.c)<=(y.t*x.c);
    12 }
    13 int main()
    14 {
    15     int i,j;
    16     ll s=0;
    17     scanf("%d",&n);
    18     for (i=1;i<=n;i++)
    19       scanf("%lld%lld",&a[i].t,&a[i].c),
    20       a[i].t*=2;
    21     std::sort(a+1,a+n+1,cmp);
    22     for (i=1;i<=n;i++)
    23     {
    24         ans+=(s*a[i].c);
    25         s+=a[i].t;
    26     }
    27     printf("%lld",ans);
    28     return 0;
    29 }
  • 相关阅读:
    关于XCode5打开工程闪退的一种解决方案
    【转】iOS应用崩溃日志揭秘
    Cocos2d-X中字符串的处理
    【转】不要把大脑当做磁盘
    【ybt金牌导航6-3-2】区间计数(分块)(二分)
    【luogu P3807】【模板】卢卡斯定理/Lucas 定理(含 Lucas 定理证明)
    【ybt金牌导航6-2-2】【luogu CF600E】树上众数 / Lomsat gelral(树上启发式合并)
    【ybt金牌导航6-1-5】最大割(线段树分治)(线性基)
    【luogu CF1100F】Ivan and Burgers
    【ybt金牌导航8-1-4】【luogu P4151】路径最大异或和 / 最大XOR和路径
  • 原文地址:https://www.cnblogs.com/rabbit1103/p/14824065.html
Copyright © 2011-2022 走看看