洛谷 题解 P1842 【奶牛玩杂技】
本蒟蒻又双叒叕被爆踩辣!
Solution:
我们先看数据,50000,那么O(n)或者O(n log(n))是可以过的,非严格O(n * sqrt(n))要卡卡常,说不定也可以过。
那么什么算法可以在解决这道题的同时来达到期望复杂度嘞?
你的任务就是帮助奶牛们找出一个摞在一起的顺序,使得总压扁指数最小。
看到这句是不是感觉明白了什么?
是的,很明显就是贪心!期望复杂度O(n);
那么贪心策略是什么?
因为我们要求总压扁指数最小,那么我们先看看总压扁指数是如何求的?
它是与奶牛的体重有关?
还是与奶牛的力量有个?
对于任意的牛,她的压扁指数等于摞在她上面的所有奶牛的总重(当然不包括她自己)减去它的力量
看到这句话是不是都懂了,它与奶牛的体重以及力量都有关!
而且,因为我们要越高的奶牛的体重越小且力量越小。
又因为,s和w直接的转化比率是1:1(就是一单位的体重可以用一单位的力量来支撑
那么我们的贪心策略就是按照s + w来排序;
上面是对问题的感性理解,
接下来,我来讲一讲如何证明为什么要越高的奶牛的体重越小且力量越小(显然啊:
假设x, y为相邻的奶牛,
且 Wx + Sx < Wy + Sy;
那么 Wx - Sy < Wy-Sx;
那么显然是右边的情况更优,窝们就应该把x放在上面,y在下面。
那么既然这里已经想通了,就很简单辣!
Code:
#include<bits/stdc++.h>
using namespace std;
#define maxn 50010
#define inf 1000000000
#define Rep(x, a, b) for(int x = a; x <= b; ++ x)
#define Dep(x, a, b) for(int x = a; x >= b; -- x)
struct node{
int w, s, sum;
}e[maxn];//w,s如题,sum是w+s;
int n, ans = -inf, now;//ans要赋极小值。
bool cmp(node x, node y){
return x.sum < y.sum;
}//按w+s排序。
int main(){
scanf("%d", &n);//输入
Rep(i, 1, n){
scanf("%d%d", &e[i].w, &e[i].s);//输入
e[i].sum = e[i].w + e[i].s;//求出结构体排序的条件
now += e[i].w;//先全部加起来,方便从倒叙求解
}
sort(e + 1, e + n + 1, cmp);//按照贪心方案,从小往大排序!
Dep(i, n, 1){//记得要倒序!
now -= e[i].w;//在减去w
ans = max(now - e[i].s, ans);//求出ans最大,此时使得总压扁指数最小
}
printf("%d", ans);//输出
return 0;
}
Ps:请看懂再抄
洛谷 题解 P1842 【奶牛玩杂技】的更多相关文章
- 洛谷 P1842 奶牛玩杂技 题解
P1842 奶牛玩杂技 题目背景 Farmer John 养了N(1<=N<=50,000)头牛,她们已经按1~N依次编上了号.FJ所不知道的是,他的所有牛都梦想着从农场逃走,去参加马戏团 ...
- [洛谷P1842] 奶牛玩杂技
题目类型:贪心+证明,经典题 传送门:>Here< 题意:有\(N\)头奶牛,每个奶牛有一个重量\(W[i]\),力量\(S[i]\).定义每个奶牛的压扁程度为排在它前面的所有奶牛的总量之 ...
- p1842 奶牛玩杂技 题解
感觉其他dalao讲的不是很明白啊,我这样的蒟蒻看不懂啊. 在luogu这个dalao遍地的地方我蒟蒻看个题解也不明白,我为跟我同病相怜的蒟蒻写一篇吧 其实真是不太明白,大部分题解都是只说 体重大的在 ...
- 洛谷 题解 UVA572 【油田 Oil Deposits】
这是我在洛谷上的第一篇题解!!!!!!!! 这个其实很简单的 我是一只卡在了结束条件这里所以一直听取WA声一片,详细解释代码里见 #include<iostream> #include&l ...
- 洛谷 题解 P1600 【天天爱跑步】 (NOIP2016)
必须得说,这是一道难题(尤其对于我这样普及组205分的蒟蒻) 提交结果(NOIP2016 天天爱跑步): OJ名 编号 题目 状态 分数 总时间 内存 代码 / 答案文件 提交者 提交时间 Libre ...
- 洛谷题解P4314CPU监控--线段树
题目链接 https://www.luogu.org/problemnew/show/P4314 https://www.lydsy.com/JudgeOnline/problem.php?id=30 ...
- 洛谷 P2858 [USACO06FEB]奶牛零食Treats for the Cows 题解
P2858 [USACO06FEB]奶牛零食Treats for the Cows 题目描述 FJ has purchased N (1 <= N <= 2000) yummy treat ...
- 题解【[USACO05NOV]奶牛玩杂技】
\[ \texttt{Description} \] 有 \(n\) 头牛,每头牛都有自己的体重 \(W_i\) 和力量 \(S_i\) . 将这 \(n\) 头牛摞在一起,每头牛的压扁指数定义为:压 ...
- 洛谷 P2858 [USACO06FEB]奶牛零食Treats for the Cows
题目描述 FJ has purchased N (1 <= N <= 2000) yummy treats for the cows who get money for giving va ...
随机推荐
- window.getComputedStyle()方法的使用及其扩展
1.window.getComputedStyle()方法返回值 是一个可以获取当前元素所有最终使用的CSS属性值.返回的是一个CSS样式声明对象([object CSSStyleDeclaratio ...
- python_day3(文件处理)
1.文件处理 #Author:Elson Zeng #data = open("test").read() # f = open("test",'a',enco ...
- 8行代码批量下载GitHub上的图片
[问题来源] 来打算写一个的小游戏,但是图片都在GitHub仓库中,GitHub网页版又没有批量下载图片的功能,只有单独一张一张的下载,所以自己就写了个爬虫脚本模拟人的操作把整个页面上需要的图片爬取下 ...
- windows系统cmd命令行窗口查看端口占用情况
# 查看所有在用端口 netstat -ano # 查看指定端口 netstat -ano | findstr 8899 # 结束该进程:taskkill /f /t /im javaw.exe:或者 ...
- nyoj 3 多边形重心问题
多边形重心问题 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描述 在某个多边形上,取n个点,这n个点顺序给出,按照给出顺序将相邻的点用直线连接, (第一个和最后一个连接 ...
- nyoj 10 skiing (DFS)
skiing 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当 ...
- Mybatis 关联对象不能输出的解决办法
Mybatis 关联对象不能输出的解决办法 1.如图所示,现在进行查询的时候并没有得到来自另一张表address项 2.我们进行如下配置: (1).在mybatis-config.xml 文件中配置, ...
- 【Java】面向对象之多态
生活中,比如动物中跑的动作,小猫.小狗和大象,跑起来是不一样的.再比如飞的动作,昆虫.鸟类和飞机,飞起来也是不一样的.可见,同一类的事物通过不同的实际对象可以体现出来的不同的形态.多态,描述的就是这样 ...
- python:爬虫0
什么是网页爬虫,也叫网页蜘蛛.把互联网比作一个蜘蛛网,有好多节点,这个蜘蛛在网上爬来爬去,对对网页中的每个关键字进行建立索引,然后建立索引数据库,经过复杂的排序算法后,这些算法的结果将按照相关度的高低 ...
- 十二、powerManager
PowerManger模块主要负责电池工作状态,电量监测,充放电管理. 1.1 初始化 在PowerInit()接口中完成了powerManager模块的初始化,在初始化的末端,进行了多个AD ...