poj3262(比例贪心)(需要简化时间复杂度)

贪心感觉是个不难的算法,这题一开始超时了,简化下就好

#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
struct cow
{
    int T;
    int D;
};
int comp(struct cow a,struct cow b)
{
    return (a.T*1.0/a.D)<(b.T*1.0/b.D);
}
int main()
{   struct cow a[100001];
    int i,n,j;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        scanf("%d%d",&a[i].T,&a[i].D);
    sort(a+1,a+1+n,comp);
    long long sum0=0,sum1=0;
    /*超时代码
    for(i=1;i<=n;i++)
    {   sum0=0;
        for(j=i+1;j<=n;j++)
        {
            sum0+=a[j].D*2;
        }
        sum1=sum1+sum0*a[i].T;

    }
    printf("%lld\n", sum1);*/
    long long sumd=0,sumt=0;
    for(i=1;i<=n;i++)
    {
        sumd += a[i].D * sumt;
        sumt += a[i].T * 2;

    }
    printf("%lld\n", sumd);
    return 0;
}

发布了30 篇原创文章 · 获赞 5 · 访问量 6944

猜你喜欢

转载自blog.csdn.net/weixin_44735312/article/details/90951018