【刷水-贪心】BZOJ1629-[Usaco2007 Demo]Cow Acrobats
【题目大意】
有n个头牛,给出体重和力量。每个牛的危险值等于它上面的牛的体重总和减去它的力量值,求所有方案中危险值最大值的最小值。
【思路】
贪心。一开始脑补的贪心是体重大的先放下面,体重相同的根据力量值来排。但是其实是不对的QAQ
这里有详细证明:
首先要想到,对于相邻的两头牛,交换它们的位置,仅仅会影响他们两个的risk值 然后,对于最优系列的相邻的两头牛 w1 s1 w2 s2 最顶上的那头的顶上的牛的质量和为sum。
那么第一头牛的risk就是 sum - s1……r1
第二头的为sum + w1 - s2……r2
假如交换位置之后:
sum - s2……r3
sum + w2 - s1……r4
有:max(r1,r2) < max(r3,r4)——r1..r4分别对应四个risk。
那么,有四种假设。因为明显有 r1<r4,r2>r3 所以只剩下:
1.r1 < r3 &&( r1 > r2 && r3 > r4)
2.r2 < r4 && (r2 > r1 && r4 > r3)
对于1: s2 - s1 > w1 && s1 - s2 > w2,因为w1,w2都大于0,所以不符合。 所以只剩下2。
得到:w1 + s1 < w2 + s2 综上,得出w+s最大的必定在最底下,按照w+s排序得到的就是最优序列。 顺便,要注意一下,risk是可以为负数的,所以初始化的时候不可以为0。
唯一的坑点就是,ans的初始值要很小……因为可能risk都是负的。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int MAXN=+;
const int INF=1e9;
struct node
{
int w,s;
bool operator < (const node &x) const
{
if (w+s<x.w+x.s) return ;else return ;
}
}cow[MAXN]; int main()
{
int n;
scanf("%d",&n);
for (int i=;i<=n;i++) scanf("%d%d",&cow[i].w,&cow[i].s);
sort(cow+,cow+n+);
int sum=,ans=-INF;
for (int i=;i<=n;i++)
{
int now=sum-cow[i].s;
ans=max(ans,now);
sum+=cow[i].w;
}
printf("%d",ans);
return ;
}
【刷水-贪心】BZOJ1629-[Usaco2007 Demo]Cow Acrobats的更多相关文章
- BZOJ1629: [Usaco2007 Demo]Cow Acrobats
1629: [Usaco2007 Demo]Cow Acrobats Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 601 Solved: 305[Su ...
- 【BZOJ】1629: [Usaco2007 Demo]Cow Acrobats(贪心+排序)
http://www.lydsy.com/JudgeOnline/problem.php?id=1629 这题我想了很久都没想出来啊... 其实任意两头相邻的牛交换顺序对其它牛是没有影响的.. 那么我 ...
- bzoj 1629: [Usaco2007 Demo]Cow Acrobats【贪心+排序】
仿佛学到了贪心的新姿势-- 考虑相邻两头牛,交换它们对其他牛不产生影响,所以如果交换这两头牛能使这两头牛之间的最大值变小,则交换 #include<iostream> #include&l ...
- BZOJ 1629: [Usaco2007 Demo]Cow Acrobats
Description Farmer John's N (1 <= N <= 50,000) cows (numbered 1..N) are planning to run away a ...
- [USACO2007 Demo] Cow Acrobats
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1629 [算法] 贪心 考虑两头相邻的牛 , 它们的高度值和力量值分别为ax , ay ...
- POJ 3045 Cow Acrobats (贪心)
POJ 3045 Cow Acrobats 这是个贪心的题目,和网上的很多题解略有不同,我的贪心是从最下层开始,每次找到能使该层的牛的风险最小的方案, 记录风险值,上移一层,继续贪心. 最后从遍历每一 ...
- BZOJ_1697_[Usaco2007 Feb]Cow Sorting牛排序_贪心
BZOJ_1697_[Usaco2007 Feb]Cow Sorting牛排序_贪心 Description 农夫JOHN准备把他的 N(1 <= N <= 10,000)头牛排队以便于行 ...
- poj3045 Cow Acrobats (思维,贪心)
题目: poj3045 Cow Acrobats 解析: 贪心题,类似于国王游戏 考虑两个相邻的牛\(i\),\(j\) 设他们上面的牛的重量一共为\(sum\) 把\(i\)放在上面,危险值分别为\ ...
- 【POJ - 3045】Cow Acrobats (贪心)
Cow Acrobats Descriptions 农夫的N只牛(1<=n<=50,000)决定练习特技表演. 特技表演如下:站在对方的头顶上,形成一个垂直的高度. 每头牛都有重量(1 & ...
随机推荐
- (值类型引用类型)和null的关系
1.null null表示变量没有指向任何对象. 2.值类型 包括 bool.结构体.枚举.int.double.float等等 .在.NET中值类型都继承自ValueType. 3. 引 ...
- Sublime之插件的安装(三)
今天在写js的时候,突然想到一个问题就是能不能快速的对齐的插件,当当当~~~sublime这么神器当然有,那就是:Alignment插件 如果你写的代码是这样的: var a = , b =, ccc ...
- docker-It's possible that too few managers are online. Make sure more than half of the managers are online.
问题:docker ---- It's possible that too few managers are online. Make sure more than half of the manag ...
- 配置tomcat多域名访问
C:\Windows\System32\drivers\etc下的hosts文件改成:127.0.0.1 localhost 127.0.0.1 www.greenmood.net 127.0.0.1 ...
- python之supervisor进程管理工具
supervisor是python写的一个管理进程运行的工具,可以很方便的监听.启动.停止.重启一个或多个进程:有了supervisor后,就不用字节写启动和监听的shell脚本了,非常方便. sup ...
- Nginx实现404页面的几种方法【转】
一个网站项目,肯定是避免不了404页面的,通常使用Nginx作为Web服务器时,有以下集中配置方式,一起来看看. 第一种:Nginx自己的错误页面 Nginx访问一个静态的html 页面,当这个页面没 ...
- SQLserver连接本地服务器
1.打开SQLserver “连接到服务器” 2.服务器类型:数据库引擎 3.服务器名称:浏览更多->本地服务器->数据库引擎->选择本地服务器 4.身份验证:windows验证 5 ...
- VS2015_动态链接库学习
非MFC动态链接库 创建一个名为ex1的Win32项目 创建一个DLL项目,保留预编译的头文件 默认文件 创建完成项目之后,包含几个默认的文件 stdafx.h文件用于包含标准系统包含的头文件 ...
- 用js实现登录的简单验证
实现过程示意图 代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l ...
- HTML表格的基本操作
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...