漏洞修复

  • Description

南邮OJ(Online Judge)存在着许多漏洞,越来越多的用户因此而感到不满,Openxxx决定修复这些漏洞。OJ一共存在着N处漏洞,并且只能一个接一个的修复。每一处漏洞都需要一定的天数去修复,在修复好之前,每天都会产生一定数量的不满意度。Openxxx希望,通过合理安排漏洞修复的顺序,使得在修复的过程中产生尽可能少的不满意度。

  • Input

多组测试数据,每组数据第1行输入一个正整数N(1≤N≤100000),漏洞的个数;第2行到第N+1行每行输入两个正整数D和V(1≤D,V≤10000),依次表示每个漏洞修复需要的天数以及在修复好之前每天产生的不满意度。输入直至文件结尾。

  • Output

每组数据仅输出一行:最少的不满意度。

  • Sample Input

1
1 10
2
20 1
1 20

  • Sample Output

10
41

  • Hint

样例说明:

第一组样例:只有一个漏洞,不满意度为10*1=10。

第二组样例:
1. 如果先修复第一个再修复第二个,不满意度为:1*20+20*(20+1)=440;

2.如果先修复第二个再修复第一个,不满意度为:20*1+1*(1+20)=41;

显然选择第2种修复策略。

#include<iostream>
#include<algorithm>
using namespace std;
struct A
{
    int  a,b;
    double ave;
};
int cmp(A x,A y)
{
    return x.ave>=y.ave;
}
A s[100005];
int main()
{
    //freopen("Hole.txt","r",stdin);
    int n,i;
    __int64 ans,day;
    while(scanf("%d",&n)!=EOF)
    {
        ans=day=0;
        for(i=0;i<n;i++)
        {
            scanf("%d%d",&s[i].a,&s[i].b);
            s[i].ave=(double)s[i].b/s[i].a;
        }
        sort(s,s+n,cmp);
        for(i=0;i<n;i++)
        {
            day+=s[i].a;
            ans+=s[i].b*day;
        }
        printf("%I64d\n",ans);
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值