zoukankan      html  css  js  c++  java
  • USACO2005 Cow Acrobats /// 前缀和 oj23402

    题目大意:

    N (1 ≤ N ≤ 50,000)头牛叠罗汉 找到最优排序使所有牛的风险值总和最小

    每头牛重量 (1 ≤ Wi ≤ 10,000) 力量 (1 ≤ Si ≤ 1,000,000,000)

    自上往下编号1~n,第i头牛的风险值 = i~n的体重总和 i的力量.

    Input

    * Line 1: A single line with the integer N.

    * Lines 2..N+1: Line i+1 describes cow i with two space-separated integers, Wi and Si.

    Output

    * Line 1: A single integer, giving the largest risk of all the cows in any optimal ordering that minimizes the risk.

    Sample Input

    3
    10 3
    2 5
    3 3

    Sample Output

    2

    Hint

    OUTPUT DETAILS:

    Put the cow with weight 10 on the bottom. She will carry the other two cows, so the risk of her collapsing is 2+3-3=2. The other cows have lower risk of collapsing.

    观察规律:

    假设一开始为最优排序

    W = W(1) + W(2) + ... + W(i-1) 则

    牛(i)风险 = W - S(i)

    牛(i+1)风险 = W + W(i)- S(i+1)

    若交换位置

    牛(i+1)风险 = W - S(i+1)

    牛(i)风险 = W + W(i+1)- S(i)

    因为一开始为最优排序

    所以 W + W(i)- S(i+1)< W + W(i+1)- S(i) 

    则存在 W(i)+  S(i)< S(i+1)+ W(i+1)

    #include <bits/stdc++.h>
    #define INF 0x3f3f3f3f
    using namespace std;
    int n,flag[50005];
    long long m;
    struct dlh
    {
        long long w,s,sum;
    }d[50005];
    bool cmp(struct dlh q,struct dlh p)
    {
        return q.sum>p.sum;
    }
    int main()
    {
        scanf("%d",&n);
        long long cnt=0,ans=-INF;
        for(int i=1;i<=n;i++)
        {
            scanf("%d%lld",&d[i].w,&d[i].s);
            cnt+=d[i].w;
            d[i].sum=d[i].w+d[i].s; 
        }
        sort(d+1,d+1+n,cmp);
        for(int i=1;i<=n;i++)
        {
            cnt-=d[i].w;
            ans=max(ans,cnt-d[i].s);
        }
        printf("%d
    ",ans);
    
        return 0;
    }
    View Code
  • 相关阅读:
    后缀数组/LCP
    Manachar's Algorithm
    自动AC机qwq(大雾)以及trie图fail图的一些结论
    平衡树有关题目小结
    洛谷日报索引(转)
    初始化函数的简单写法
    关于对拍
    第12组 Alpha冲刺(4/6)
    第12组 Alpha冲刺(3/6)
    第12组 Alpha冲刺(2/6)
  • 原文地址:https://www.cnblogs.com/zquzjx/p/8371755.html
Copyright © 2011-2022 走看看