SUDT2177体检

系统 1838 0

http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2177

题目描述

  大家都知道,新生入学的前几周要体检,体检的那一天 HH 早起(九点半)来到了校医院,但是到了之后她发现排队等候体检的人太多了,而且人数在不断的增加。体检需要检查许多个项目,每个项目都需要排队,而且随着时间的推移,每个队列的人数都在慢慢增加。
已知每个体检项目的队列都有两个属性(ai, bi):
1、如果 HH 在 0 时刻站在了这个队列后,那么她需要 ai 秒就可以完成这个项目的体检;
2、如果 HH 没在这个队列中,那么 HH 完成这个项目的时间每秒会在 ai 的基础上增加 bi 秒。
  作为一个测肺活量的时候怒吹了 1000+ 的大神,她希望能尽快体检完毕去吃饭,所以选择正确的体检顺序是非常非常重要的。

输入

输入包含多组测试数据,对于每组测试数据:
输入的第一行为一个正整数 n(1 ≤ n ≤ 10 5 ),代表需要体检的项目数;
接下来 n 行每行为两个正整数 a,b(0 ≤ a, b < 1000), 依次代表第1-n个队列的两个属性。
注意:64-bit 整型请使用 long long 来定义,并且使用 %lld 或 cin、cout 来输入输出,请不要使用 __int64 和 %I64d。

输出

输出完成体检的最短时间,由于最后结果可能会很大,所以你只要输出结果对365×24×60×60取余后的结果即可。

示例输入

      2

3 1

2 3

5

1 2

2 3

3 4

4 5

5 6
    

示例输出

      7

1419
    

提示

样例解释:
第一组样例,最短时间:HH 先排在第二个队伍,用时 2 秒体检完成第二个项目,然后排在第一个队伍,用时 5 秒完成第一个项目,总用时 7 秒。
第二组样例,最短时间:HH 按照给定的顺序, 用时 1 秒体检完成第一个项目,用时 5 秒完成第二个项目,用时 27 秒完成第三个项目,用时 169 秒完成第四个项目,用时 1217 秒完成第五个项目,总用时 1+5+27+169+1217=1419 秒。
            
               1
            
             #include<stdio.h>


            
               2
            
             #include<cstring>


            
               3
            
             #include<algorithm>


            
               4
            
             #include<iostream>


            
               5
            
            
              using
            
            
              namespace
            
            
               std ;


            
            
               6
            
            
              const
            
            
              int
            
             maxn = 
            
              100010
            
            
              ;


            
            
               7
            
            
              struct
            
            
               node


            
            
               8
            
            
              {


            
            
               9
            
            
              int
            
            
               a,b ;


            
            
              10
            
            
              double
            
            
               c ;


            
            
              11
            
            
              bool
            
             friend 
            
              operator
            
             <
            
               (node x,node y)


            
            
              12
            
            
                  {


            
            
              13
            
            
              return
            
             x.c <
            
               y.c;


            
            
              14
            
            
                  }


            
            
              15
            
            
              }ss[maxn];


            
            
              16
            
            
              int
            
            
               main()


            
            
              17
            
            
              {


            
            
              18
            
            
              int
            
            
               n ;


            
            
              19
            
            
              while
            
            (cin>>
            
              n)


            
            
              20
            
            
                  {


            
            
              21
            
            
              for
            
             (
            
              int
            
             i = 
            
              0
            
            ; i <= n-
            
              1
            
            ; i ++
            
              )


            
            
              22
            
            
                      {


            
            
              23
            
                         scanf(
            
              "
            
            
              %d %d
            
            
              "
            
            ,&ss[i].a,&
            
              ss[i].b);


            
            
              24
            
                         ss[i].c = ss[i].a*
            
              1.0
            
            /
            
              ss[i].b;


            
            
              25
            
            
                      }


            
            
              26
            
                     sort(ss,ss+
            
              n);


            
            
              27
            
            
              long
            
            
              long
            
             sum = ss[
            
              0
            
            
              ].a;


            
            
              28
            
            
              for
            
             (
            
              int
            
             i = 
            
              1
            
            ; i <= n-
            
              1
            
            ; i ++
            
              )


            
            
              29
            
            
                      {


            
            
              30
            
                         sum = (sum+sum*ss[i].b+ss[i].a)%(
            
              365
            
            *
            
              24
            
            *
            
              60
            
            *
            
              60
            
            
              );


            
            
              31
            
                     }
            
              //
            
            
              取余这个地方一定不能在输出那儿取余,因为longlong存不了那么大的...........
            
            
              32
            
                     printf(
            
              "
            
            
              %lld\n
            
            
              "
            
            
              ,sum);


            
            
              33
            
            
                  }


            
            
              34
            
            
              return
            
            
              0
            
            
              ;


            
            
              35
            
             }
          
View Code

这个题不是特别难,但是要注意,longlong是存不了太大的数据的

 

SUDT2177体检


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论