codevs 1345 饥饿的奶牛
1345 饥饿的奶牛
John养了若干奶牛,每天晚上奶牛都要进食。由于条件比较简陋,并不一定所有奶牛都能吃到食物。奶牛的进食方式是这样的:John有n个食桶(1<=n<=2000),分别编号为1..n。这些食桶被按照编号排成一行。John将奶牛们分成若干组,每组奶牛总是呆在一起进食的,每组奶牛会提出要求——他们需要吃第start到第end桶中的食物。可能存在若干组奶牛都要吃同一个桶中的食物,从而就产生了冲突,这时John只能满足其中一组的要求,另一些组就只能饿肚子了。
John当然不想让奶牛都饿肚子,所以他希望根据奶牛们提出的请求,满足其中一些组的要求,使得最多的食桶被奶牛食用。这个难题困扰着John,他希望得到你的帮助。
从文本文件hunger.in中读入数据。
第一行一个整数n,表示奶牛的组数。(1<=n<=1000)
第2~n+1行,每行两个整数start和end,描述了一组奶牛提出的请求。
一个整数,表示最多有多少个食桶可以被食用。
(满足第1组和第2组奶牛的要求,这样1~3号和7~8号这5个食桶可以被食用)
3
1 3
7 8
3 4
5
/*类似于线段覆盖的题目,不同的是端点不可以重合,但是仍然是要求线段最长*/
#include<cstdio>
#include<iostream>
using namespace std;
struct Group{
int start,end,len;
};
#include<algorithm>
Group group[];
int n;
int cmp(Group a,Group b)
{
return a.end<b.end;
}
void input()
{
scanf("%d",&n);
for(int i=;i<=n;++i)
{
scanf("%d%d",&group[i].start,&group[i].end);
if(group[i].start>group[i].end)
swap(group[i].start,group[i].end);
group[i].len=group[i].end-group[i].start+;
}
sort(group+,group+n+,cmp);
}
int dp[];
void DP()
{
dp[]=group[].len;
for(int i=;i<=n;++i)
for(int j=;j<=i-;++j)
if(group[i].start>group[j].end)
dp[i]=max(dp[i],dp[j]+group[i].len);
}
int main()
{
input();
DP();
cout<<dp[n]<<endl;
return ;
}
codevs 1345 饥饿的奶牛的更多相关文章
- BZOJ1669: [Usaco2006 Oct]Hungry Cows饥饿的奶牛
1669: [Usaco2006 Oct]Hungry Cows饥饿的奶牛 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 665 Solved: 419 ...
- BZOJ 1669: [Usaco2006 Oct]Hungry Cows饥饿的奶牛( LIS )
裸的LIS ----------------------------------------------------------------- #include<cstdio> #incl ...
- dp进阶——饥饿的奶牛
饥饿的奶牛oj上n只有1000,过于水,O(n^2)的算法很容易水过,洛谷上这是一道提高加的题,很难啊,所以要好好拿来练习今天写博客再次复习一下,oi最怕遗忘了. 这道题呢实质是一个区间覆盖的dp,首 ...
- 题解 P1868 【饥饿的奶牛】
题目链接:P1868 饥饿的奶牛 题面 有一条奶牛冲出了围栏,来到了一处圣地(对于奶牛来说),上面用牛语写着一段文字. 现用汉语翻译为: 有N个区间,每个区间x,y表示提供的x~y共y-x+1堆优质牧 ...
- 洛谷P1868 饥饿的奶牛
P1868 饥饿的奶牛 题目描述 有一条奶牛冲出了围栏,来到了一处圣地(对于奶牛来说),上面用牛语写着一段文字. 现用汉语翻译为: 有N个区间,每个区间x,y表示提供的x~y共y-x+1堆优质牧草.你 ...
- 【BZOJ】1669: [Usaco2006 Oct]Hungry Cows饥饿的奶牛(lis)
http://www.lydsy.com/JudgeOnline/problem.php?id=1669 水题太严重 #include <cstdio> #include <cstr ...
- P1868 饥饿的奶牛
题目描述 有一条奶牛冲出了围栏,来到了一处圣地(对于奶牛来说),上面用牛语写着一段文字. 现用汉语翻译为: 有N个区间,每个区间x,y表示提供的x~y共y-x+1堆优质牧草.你可以选择任意区间但不能有 ...
- 【Luogu】P1868饥饿的奶牛(DP)
题目链接 话说我存一些只需要按照一个关键字排序的双元素结构体的时候老是喜欢使用链式前向星…… DP.f[i]表示前i个位置奶牛最多能吃到的草.转移方程如下: f[i]=f[i-]; f[i]=max( ...
- 洛谷1345 [Usaco5.4]奶牛的电信
题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,...,a(c),且a1与a2相 ...
随机推荐
- Part2-HttpClient官方教程-Chapter2-连接管理
2.1 连接持久性 建立从一个主机到另一个主机的连接的过程相当复杂,并且涉及两个端点之间的多个分组交换,这可能相当耗时.连接握手的开销可能很大,特别是对于小型的HTTP消息. 如果可以重新使用开放连接 ...
- perl模拟登录(1)
use WWW::Mechanize; my $ua = WWW::Mechanize->new(); $ua->post('http://localhost/dvwa/DVWA-mast ...
- Win7(64bit)搭建SVN
开始: 第一步:下载SVN客户端程序TortoiseSVN并安装(不习惯英文操作界面的顺便在最底下下载一个语言包),下载地址tortoiseSVN下载(由于系统是64位的,我下载的是TortoiseS ...
- Django rest framework + Vue简单示例
构建vue项目参考这篇文章https://segmentfault.com/a/1190000008049815 一.创建Vue项目 修改源:npm config set registry https ...
- Professional Linux Kernel Architecture 笔记 —— 中断处理(Part 2)【转】
转自:http://blog.163.com/vic_kk/blog/static/494705242010719483774/ Table of Contents 1 中断 1.1 中断的类型 1. ...
- Linux信号函数
1. signal函数: #include <signal.h> void (*signal(int signo, void (*func)(int)))(int); ret-成功返回信号 ...
- Python基础=== Tkinter Grid布局管理器详解
本文转自:https://www.cnblogs.com/ruo-li-suo-yi/p/7425307.html @ 箬笠蓑衣 Grid(网格)布局管理器会将控件放置到一个二维的表 ...
- python基础===获取知乎标题时候,文件编码失败的总结
总结一下,关于获取到的信息编码失败. 刚才在执行代码的时候,发现一个问题: 然后修改代码如下: '''爬取知乎界面的标题''' import requests import re import sys ...
- [hadoop][基本原理]zookeeper基本原理
1.简介 https://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/ 2. 数据模型 Zookeeper 会维护一个具有层次关系 ...
- tomcat远程调试参数备忘
tomcat远程调试,启动时添加参数: -server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,ser ...