BZOJ 3410 [Usaco2009 Dec]Selfish Grazing 自私的食草者:贪心【最多线段覆盖】
题目链接:http://begin.lydsy.com/JudgeOnline/problem.php?id=1324
题意:
给你n个区间,问你最多能选择多少个区间使得它们不相互覆盖。
题解:
RQNOJ 569 Milking Time中,每个线段有权值,所以要用dp。
而这道题问的是最多区间数,只是数量,对于每一个区间都一样。所以可以贪心。
贪心目标:
为了让总区间数最多,所以应该让某一段范围内的区间数最多。
贪心策略:
(1)对于当前已覆盖范围(0,pos),再选一个区间时,在保证能放的前提下,应让这个区间的rig最小。
(2)对于当前已覆盖范围(0,pos),最后一次选的区间的lef应尽可能大。
所以只用考虑rig不同,lef最大的区间。挑出来再贪心。
AC Code:
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <vector>
#define MAX_N 50005 using namespace std; struct Cow
{
int lef;
int rig;
Cow(int _lef,int _rig)
{
lef=_lef;
rig=_rig;
}
Cow(){}
void read_cow()
{
cin>>lef>>rig;
}
friend bool operator < (const Cow &a,const Cow &b)
{
return a.rig!=b.rig?a.rig<b.rig:a.lef>b.lef;
}
}; int n;
Cow cow[MAX_N];
vector<Cow> v; int main()
{
cin>>n;
for(int i=;i<n;i++)
{
cow[i].read_cow();
}
sort(cow,cow+n);
for(int i=;i<n;i++)
{
if(i== || cow[i].rig!=cow[i-].rig)
{
v.push_back(cow[i]);
}
}
int pos=;
int ans=;
for(int i=;i<v.size();i++)
{
Cow now=v[i];
if(now.lef>=pos)
{
pos=now.rig;
ans++;
}
}
cout<<ans<<endl;
}
BZOJ 3410 [Usaco2009 Dec]Selfish Grazing 自私的食草者:贪心【最多线段覆盖】的更多相关文章
- BZOJ 3410: [Usaco2009 Dec]Selfish Grazing 自私的食草者(贪心)
这= =,就是线段覆盖对了= =直接贪心就行了= = CODE: #include<cstdio>#include<iostream>#include<cstring&g ...
- 3410: [Usaco2009 Dec]Selfish Grazing 自私的食草者
3410: [Usaco2009 Dec]Selfish Grazing 自私的食草者 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 71 Solve ...
- 【BZOJ】3410: [Usaco2009 Dec]Selfish Grazing 自私的食草者(贪心)
http://www.lydsy.com/JudgeOnline/problem.php?id=3410 太神了.... 按末端点排序然后贪心取即可. QAQ #include <cstdio& ...
- BZOJ3410: [Usaco2009 Dec]Selfish Grazing 自私的食草者
3410: [Usaco2009 Dec]Selfish Grazing 自私的食草者 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 47 Solve ...
- 【贪心大水题】BZOJ3410-[Usaco2009 Dec]Selfish Grazing 自私的食草者
[题目大意] 给出n个区间,问最多选取多少个区间使得它们互相不重叠. [思路] 水题quq改善心情用.按照右端点大小排序,每次更新上一次的右端点,如果当前左端点大于上次右端点可取. #include& ...
- BZOJ 3412: [Usaco2009 Dec]Music Notes乐谱(离线处理)
这道题貌似怎么写都可以吧= =,我先读入询问然后从小到大处理就行了= = PS:水水题真的好!无!聊!但是好!欢!乐! CODE: #include<cstdio>#include< ...
- [bzoj 1774][Usaco2009 Dec]Toll 过路费
题目描述 跟所有人一样,农夫约翰以着宁教我负天下牛,休叫天下牛负我的伟大精神,日日夜夜苦思生 财之道.为了发财,他设置了一系列的规章制度,使得任何一只奶牛在农场中的道路行走,都 要向农夫约翰上交过路费 ...
- bzoj 1774: [Usaco2009 Dec]Toll 过路费 ——(改)floyd
Description 跟所有人一样,农夫约翰以着宁教我负天下牛,休叫天下牛负我的伟大精神,日日夜夜苦思生 财之道.为了发财,他设置了一系列的规章制度,使得任何一只奶牛在农场中的道路行走,都 要向农夫 ...
- BZOJ——3412: [Usaco2009 Dec]Music Notes乐谱
http://www.lydsy.com/JudgeOnline/problem.php?id=3412 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: ...
随机推荐
- 一波三折ST-Link
前言 原创文章,转载引用务必注明链接,水平有限,如有疏漏,欢迎指正. 本文使用Markdown写成,为获得更好的阅读体验和正常的链接.图片显示,请访问我的博客原文: http://www.cnblog ...
- Odoo11 新功能 : 栏位隐藏
Odoo11增加了一个 新的 modifier-. 先上 前端框架代码 invisible / readonly / required 这几个 是经常在用的, column_invis ...
- 【Python】向函数传递任意数量的实参
传递任意数量的实参 有时候,你预先不知道函数需要接受多少个实参,好在Python允许函数从调用语句中收集任意数量的实参 def get_letter(*letters): for i in lette ...
- jQuery--基础(查询标签)
浅谈jQuery使用背景 jQuery是使用原生js写成的一个库,使用简单,提高开发效率.在用js冗杂的代码解决的问题中,大部分都可以用jQuery来快速解决. 例如: js中查询网页中ID为&quo ...
- Spring里通过注解开启事物
方式1 <?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://w ...
- 牛牛有一个鱼缸。鱼缸里面已经有n条鱼,每条鱼的大小为fishSize[i] (1 ≤ i ≤ n,均为正整数),牛牛现在想把新捕捉的鱼放入鱼缸。鱼缸内存在着大鱼吃小鱼的定律。经过观察,牛牛发现一条鱼A的大小为另外一条鱼B大小的2倍到10倍(包括2倍大小和10倍大小),鱼A会吃掉鱼B。考虑到这个,牛牛要放入的鱼就需要保证:1、放进去的鱼是安全的,不会被其他鱼吃掉 2、这条鱼放进去也不能吃掉其他鱼
// ConsoleApplication5.cpp : 定义控制台应用程序的入口点. // #include<vector> #include<algorithm> #inc ...
- Vim 打开文件同时定位到某一行
在linux下,当后台某一行报警出错后,想用vim打开文件同时定位到某一行, Vim +某一行 filename 即可.
- erlang的undefined macro 'MODULE',头一行编译通不过的问题
前言:对于erlang的编译有很多方式,rebar,makefile文件 还是对于单个文件的erlc编译等,但不管何种方式,一个模块的第一行就编译不过去,实在让人纠结... 1)问题上述: 在技术交流 ...
- 中面试中你不可回避的C、C++的问题(一)
基础中的基础 局部变量与全局变量问题 (使用’ ::’) 2. 如何在另个文件中引用一个全局变量 (extern) 3. 全局变量可以定义被多个C文件包含,并且是static 4. ...
- 【BZOJ4212】神牛的养成计划 Trie树+可持久化Trie树
[BZOJ4212]神牛的养成计划 Description Hzwer成功培育出神牛细胞,可最终培育出的生物体却让他大失所望...... 后来,他从某同校女神 牛处知道,原来他培育的细胞发生了基因突变 ...