问题标题: 酷町堂:2619 赶牛

0
0
已解决
陈曦
陈曦
资深天翼
资深天翼
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,sum,T=1,D;
struct cow{
    int t,d;
}a[105000];
bool cmp(cow x,cow y){
    if(x.t!=y.t)
        return x.t<y.t;
    return x.d>y.d;
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i].t>>a[i].d;
    }
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++){
        D+=T*a[i].d;
        T+=2*a[i].t;
    }
    cout<<D;
    return 0;
}
/*
牛a[i]在回去之前会以每分钟d[i]的速度**花园。 
*/

哪错了啊


0
已采纳
杜智宸
杜智宸
中级光能
中级光能

不是只比较**力,是农夫赶另外一头牛的时候当前这头造成的**

cmp改成return 2*x.t*y.d<2*y.t*x.d

分成两个循环算,前缀和求总**

for(int i=1;i<=n;i++)
        sum[i]=sum[i-1]+a[i].d;

for(int i=1;i<=n;i++)
        D+=2*a[i].t*(sum[n]-sum[i]);

int全部改成long long,不然87分

我要回答