zoukankan      html  css  js  c++  java
  • hdu 4442 Physical Examination

    题目链接http://acm.hdu.edu.cn/showproblem.php?pid=4442

    题意:去体检,求做完所有检查所花费的最小时间模上一个数

          花费的时间规则如下

          有n项活动,每项活动有两个数字 a b

          a代表现在去排队所花费的时间  b代表每一秒该活动需要等待的时间是多b秒

          举个简单的例子

          2

          1 3  第一项活动1秒,执行完第一项活动之后执行第二项

          1 9  由于先执行的第一项活动,执行第二项活动时所需的时间就变成了10秒

    题目分类:贪心

    题目分析:因为当执行当前任务时,b是乘以现在所需要的时间,a是直接相加的,刚开始时想的是b的权重比较大,所以,按照b从大到小的排序,a不用管,后来细细想想,其实是有漏洞的,如果b比较小,而a特别大的时候,顺序就是不对的。   

    代码

    #include<bits/stdc++.h>
    
    using namespace std;
    
    #define LL __int64
    #define MOD 31536000
    
    struct P
    {
        LL a,b;
    
    }num[100009];
    
    //bj*ai<=aj*bi
    
    LL cmp(P X,P Y)
    {
        return X.a*Y.b<Y.a*X.b;
    }
    
    int main()
    {
        //freopen("in.txt","r",stdin);
        int n;
        while(scanf("%d",&n)&&n)
        {
            for(int i=1;i<=n;i++)
            {
                cin>>num[i].a>>num[i].b;
            }
            sort(num+1,num+n+1,cmp);
            /*for(int i=1;i<=n;i++)
            {
                cout<<num[i].a<<"  "<<num[i].b<<endl;
            }*/
            int ans=0;
            for(int i=1;i<=n;i++)
            {
                ans=(ans+ans*num[i].b+num[i].a)%MOD;
            }
    
            cout<<ans<<endl;
    
        }
        return 0;
    }
    anytime you feel the pain.hey,refrain.don't carry the world upon your shoulders
  • 相关阅读:
    splay区间模板-1331-序列终结者1
    splay单点模板-5203-BZOJ3224 普通平衡树
    线段树模板-1204-影子的宽度
    树状数组模板-1200-序列和
    YAML配置复杂集合类型
    webpack vue-router vue 打包上线一些列问题
    idea 注释模板
    JavaScript中reduce()方法
    ES6实用语法糖
    axios 备忘
  • 原文地址:https://www.cnblogs.com/gaoss/p/4959289.html
Copyright © 2011-2022 走看看