POJ3045 Cow Acrobats
题意
Farmer John's N (1 <= N <= 50,000) cows (numbered 1..N) are planning to run away and join the circus. Their hoofed feet prevent them from tightrope walking
and swinging from the trapeze (and their last attempt at firing a cow out of a cannon met with a dismal failure). Thus, they have decided to practice performing
acrobatic stunts.
The cows aren't terribly creative and have only come up with one acrobatic stunt: standing on top of each other to form a vertical stack of some height. The
cows are trying to figure out the order in which they should arrange themselves ithin this stack.
Each of the N cows has an associated weight (1 <= W_i <= 10,000) and strength (1 <= S_i <= 1,000,000,000). The risk of a cow collapsing is equal to the
combined weight of all cows on top of her (not including her own weight, of course) minus her strength (so that a stronger cow has a lower risk). Your task is to
determine an ordering of the cows that minimizes the greatest risk of collapse for any of the cows.
分析
考虑相邻的两头牛i和i+1,初始时他们的难受值是
\]
交换后的难受值是
\]
观察式子,发现需要比较的是
\]
设前者小于后者,则
\]
所以W和S的和大的牛排在下面更优。
时间复杂度\(O(N \log N)\)
代码
#include<iostream>
#include<algorithm>
#define rg register
#define il inline
#define co const
template<class T>il T read(){
	rg T data=0,w=1;
	rg char ch=getchar();
	while(!isdigit(ch)){
		if(ch=='-') w=-1;
		ch=getchar();
	}
	while(isdigit(ch))
		data=data*10+ch-'0',ch=getchar();
	return data*w;
}
template<class T>il T read(rg T&x){
	return x=read<T>();
}
typedef long long ll;
co int N=5e4+1;
int w[N],s[N],id[N];
bool cmp(int x,int y){
	return w[x]+s[x]<w[y]+s[y];
}
int main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	int n=read<int>();
	for(int i=1;i<=n;++i)
		read(w[i]),read(s[i]),id[i]=i;
	std::sort(id+1,id+n+1,cmp);
	int ans=0,sum=0;
	for(int i=1;i<=n;++i)
		ans=std::max(ans,sum-s[id[i]]),sum+=w[id[i]];
	printf("%d\n",ans);
	return 0;
}
												
											POJ3045 Cow Acrobats的更多相关文章
- poj3045 Cow Acrobats (思维,贪心)
		
题目: poj3045 Cow Acrobats 解析: 贪心题,类似于国王游戏 考虑两个相邻的牛\(i\),\(j\) 设他们上面的牛的重量一共为\(sum\) 把\(i\)放在上面,危险值分别为\ ...
 - POJ3045 Cow Acrobats                                                                                            2017-05-11 18:06             31人阅读              评论(0)              收藏
		
Cow Acrobats Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4998 Accepted: 1892 Desc ...
 - POJ3045 Cow Acrobats —— 思维证明
		
题目链接:http://poj.org/problem?id=3045 Cow Acrobats Time Limit: 1000MS Memory Limit: 65536K Total Sub ...
 - POJ-3045 Cow Acrobats (C++ 贪心)
		
Description Farmer John's N (1 <= N <= 50,000) cows (numbered 1..N) are planning to run away a ...
 - poj3045 Cow Acrobats(二分最大化最小值)
		
https://vjudge.net/problem/POJ-3045 读题后提取到一点:例如对最底层的牛来说,它的崩溃风险=所有牛的重量-(底层牛的w+s),则w+s越大,越在底层. 注意范围lb= ...
 - [USACO2005][POJ3045]Cow Acrobats(贪心)
		
题目:http://poj.org/problem?id=3045 题意:每个牛都有一个wi和si,试将他们排序,每头牛的风险值等于前面所有牛的wj(j<i)之和-si,求风险值最大的牛的最小风 ...
 - 【POJ - 3045】Cow Acrobats (贪心)
		
Cow Acrobats Descriptions 农夫的N只牛(1<=n<=50,000)决定练习特技表演. 特技表演如下:站在对方的头顶上,形成一个垂直的高度. 每头牛都有重量(1 & ...
 - BZOJ1629: [Usaco2007 Demo]Cow Acrobats
		
1629: [Usaco2007 Demo]Cow Acrobats Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 601 Solved: 305[Su ...
 - POJ 3045 Cow Acrobats (贪心)
		
POJ 3045 Cow Acrobats 这是个贪心的题目,和网上的很多题解略有不同,我的贪心是从最下层开始,每次找到能使该层的牛的风险最小的方案, 记录风险值,上移一层,继续贪心. 最后从遍历每一 ...
 
随机推荐
- 《Think in Java》(十二)通过异常处理错误
			
异常虽然简单,但是很有用!学完这一章还是发现 Java 异常还是有很多可学之处的,比如:异常说明,异常链等.
 - p-value值的认识
			
待续:https://www.zhihu.com/question/21429785/answer/147047565
 - 这可能是最详细的 iOS 学习入门指南(含书目/文档/学习资料)
			
1 零基础小白如何进行 iOS 系统学习 首先,学习目标要明确: 其次,有了目标,要培养兴趣,经常给自己一些正面的反馈,比如对自己的进步进行鼓励,在前期小步快走: 再次,学技术最重要的一点就是多动手. ...
 - CSS布局 — 圣杯布局与双飞翼布局
			
圣杯布局 实现原理 html代码中,middle部分首先要放在container的最前部分,然后是left,right 将三者都设置 float:left, position:relative (因为 ...
 - section和div
			
section和div 一.DIV div即division(区块),把文档分割为独立的.不同的部份.作用,以下三种情况应该用div标签: 1.用于页面布局,且不是 header.footer 之类的 ...
 - webapi在IIS发布后报Http 403.14 error
			
服务器是Windows Server 2008 R2 Enterprise IIS6.1 解决方法,修改web.config文件 1.在<system.webServer>配置 ...
 - bzoj3402
			
题解: spfa最短路 然后枚举判断奇数 代码: #include<bits/stdc++.h> using namespace std; ; ]; void jb(int x,int y ...
 - 嵌套类,PIMPL
			
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
 - 【css】25个漂亮的响应式布局的web设计【转】
			
响应的web设计的做法是提高用户的浏览质量,并在不同设备上能够完美的浏览使用,就像大前端推出的D7主题.看看下面美丽的响应的网站布局,通过本文你会在以后的设计中找到响应的web设计的灵感. 1.Mar ...
 - Appium Remote webdriver调用
			
remote webdriver的模板 默认开启4723端口接受webdriver请求 默认开启4724用于和android通讯 #coding:utf-8 #Import the common pa ...