zoukankan      html  css  js  c++  java
  • 洛谷题解 P1842 【奶牛玩杂技】

    Oh,可怜的奶牛

    开始说正题 :


    猜测:(注:这只是一种形象的说法)
    与重量和力量都有关,再分析样例,发现是重量+力量。

    1. 若w值较大,则将其放在最下方,不让它压其他牛;
    2. 若s值较大,则将其放在最下方,承受其他牛的压力。

    证明:设有a和b两头相邻的牛 (a在下,b在上) 文中W为重量总和
    (Wa+Sa<Wb+Sb)
    (Wa-Sb<Wb-Sa)
    (W-Sb<W+Wa-Sb)
    (W-Sa<W+Wb-Sa)
    发现:(W+Wa-Sb<W+Wb-Sa)
    显然,在(Wa+Sa<Wb+Sb)的情况下,选择b在下,a在上。方案更优。
    综上所述,将 W+S 值大的牛放在下方即可。


    注意结果有可能是负数(不然60分)(本菜已被坑)


    现将本蒟蒻的代码献上

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    struct node { int w,s,data,k; } a[50005];
    bool cmp(node a,node b) { return a.data>b.data; }
    int main() {
    	int n,Max,zw=0;
    	cin>>n;
    	for(int i=1;i<=n;i++) {
    		cin>>a[i].w>>a[i].s;
    		a[i].data=a[i].w+a[i].s;
    		zw+=a[i].w;
    	}
    	sort(a+1,a+n+1,cmp);
    	zw-=a[1].w;
    	a[1].k=zw-a[1].s;
    	Max=a[1].k;
    	for(int i=2;i<=n;i++) {
    		zw-=a[i].w;
    		a[i].k=zw-a[i].s;
    		Max=max(Max,a[i].k);
    	}
    	cout<<Max;
       return 0;
    }
    

    看我打的那么认真,就给个赞呗

  • 相关阅读:
    直方图均衡
    k-means聚类方法
    核函数
    支持向量机(SVM)
    函数的定义和调用
    ES5新增方法
    继承
    构造函数和原型
    面向对象版tab 栏切换
    ES6中的对象与类
  • 原文地址:https://www.cnblogs.com/Wuzhuoming-sirenboke/p/13599468.html
Copyright © 2011-2022 走看看