loj10001种树
好久不写博客了,发现不好找做过和题!还得接着写啊!
------------------------------------------------------------------
题目描述
某条街被划为n条路段,这n 条路段依次编号为1~n 。每个路段最多可以种一棵树。现在居民们给出了h 组建议,每组建议包含三个整数b,e,t ,表示居民希望在路段 b 到 e之间至少要种 t 棵树。这些建议所给路段的区间可以交叉。请问:如果要满足所有居民的建议,至少要种多少棵树。
输入格式
第一行为n ,表示路段数。
第二行为 h,表示建议数。
下面 h 行描述一条建议:b,e,t,用一个空格分隔。
输出格式
输出只有一个数,为满足所有居民的建议,所需要种树的最少数量。
样例
样例输入
9
4
1 4 2
4 6 2
8 9 2
3 5 2
样例输出
5
数据范围与提示
的数据满足 n<=1000,h<=500;
的数据满足 n<=3e4,h<=5e3,b,e<=3e4,t<=e-b+1。
---------------------------------------------------------------------------------------
原来这个题是按差分约束做的,没有向贪心方向想,可是贪心也可以。
所有的建议按e排序,这样明显树应当靠后种,这样树更可能处在重叠区,可以节省树。
这样方法就明显了。首先建议按e排序,然后依次处理每一个建议,统计每个建议区间内已经种了多少树,够了就不用再处了。如果不够,那么就要从后向前找到没种树的点种树,直到建议区间内的树的数量满足要求为至。
----------------------------------------------------------------------------------------

1 #include<bits/stdc++.h>
2 using namespace std;
3 const int maxn=3e4+10;
4 const int maxm=5e3+10;
5 int n,m;
6 struct node
7 {
8 int b,e,t;
9 }sz[maxm];
10 int qj[maxn];
11 bool cmp(node a,node c)
12 {
13 return a.e<c.e;
14 }
15 int main()
16 {
17 scanf("%d%d",&n,&m);
18 for(int i=1;i<=m;++i)
19 scanf("%d%d%d",&sz[i].b,&sz[i].e,&sz[i].t);
20 sort(sz+1,sz+1+m,cmp);
21 int ans=0;
22 for(int i=1;i<=m;++i)
23 {
24 int tj=0;
25 for(int j=sz[i].e;j>=sz[i].b;--j)
26 {
27 if(qj[j])tj++;
28 if(tj>=sz[i].t)break;
29 }
30 if(tj<sz[i].t)
31 for(int j=sz[i].e;j>=sz[i].b;--j)
32 {
33 if(qj[j]==0)qj[j]=1,++ans,++tj;
34 if(tj>=sz[i].t)break;
35 }
36 }
37 cout<<ans;
38 return 0;
39 }
loj10001种树的更多相关文章
- [Data Structure] 数据结构中各种树
数据结构中有很多树的结构,其中包括二叉树.二叉搜索树.2-3树.红黑树等等.本文中对数据结构中常见的几种树的概念和用途进行了汇总,不求严格精准,但求简单易懂. 1. 二叉树 二叉树是数据结构中一种重要 ...
- 种树 (codevs 1653) 题解
[问题描述] 一条街的一边有几座房子.因为环保原因居民想要在路边种些树.路边的地区被分割成块,并被编号为1..n.每个块大小为一个单位尺寸并最多可种一棵树.每个居民想在门前种些树并指定了三个号码b,e ...
- 【Todo】字符串相关的各种算法,以及用到的各种数据结构,包括前缀树后缀树等各种树
另开一文分析字符串相关的各种算法,以及用到的各种数据结构,包括前缀树后缀树等各种树. 先来一个汇总, 算法: 本文中提到的字符串匹配算法有:KMP, BM, Horspool, Sunday, BF, ...
- [swustoj 183] 种树
种树(0183) 问题描述 Aconly有一块矩形的地,因为这块地里有很多石头,耕作很不方便,所以他打算在这块地上种一些果树.这块地用一个只含‘#’和‘*’的N*M的矩阵来表示,‘#’表示泥土,‘*’ ...
- bzoj2151 种树 双向链表+堆
2151: 种树 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1151 Solved: 613[Submit][Status][Discuss] ...
- 【bzoj2151】种树
Time Limit: 1000ms Memory Limit: 128MB Description A城市有一个巨大的圆形广场,为了绿化环境和净化空气,市政府 ...
- BZOJ_2151_种树_贪心+堆+链表
BZOJ_2151_种树_贪心+堆 Description A城市有一个巨大的圆形广场,为了绿化环境和净化空气,市政府决定沿圆形广场外圈种一圈树.园林部门得到指令后,初步规划出n个种树的位置,顺时针编 ...
- P1250 种树
P1250 种树 题目描述 一条街的一边有几座房子.因为环保原因居民想要在路边种些树.路边的地区被分割成块,并被编号成1..N.每个部分为一个单位尺寸大小并最多可种一棵树.每个居民想在门前种些树并指定 ...
- luogu P1250 种树
我来总结一下最常用的两种办法 1.贪心 2.差分约束 那么我们先来讲,贪心版<种树> 大家可能知道有一个题和这个类似,那个是钉钉子而这个是种树 我们可以借用钉钉子的思路来想,首先这个是让你 ...
随机推荐
- easyui模板页面 不良调查
<%@page import="com.xy.cc.util.CUtil" %><%@page import="com.xy.cc.bean.UserP ...
- 如果不空null并且不是空字符串才去修改这个值,但这样写只能针对字符串(String)类型,如果是Integer类型的话就会有问题了。 int i = 0; i!=''。 mybatis中会返回tr
mybatis 参数为Integer型数据并赋值0时,有这样一个问题: mybatis.xml中有if判断条件判断参数不为空时,赋值为0的Integer参数被mybatis判断为空,因此不执行< ...
- HTML中,大小不确定图片的水平垂直居中
html: css: div{ width:400px;height:300px;text-align:center;font-size:0;*font-size:200px;} div:after{ ...
- 二进制格式mysql
1.二进制MySQL安装 #下载二进制格式的mysql软件包 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.31- ...
- ZooKeeper集群“脑裂”
ZooKeeper 集群节点为什么要部署成奇数ZooKeeper 容错指的是:当宕掉几个ZooKeeper节点服务器之后,剩下的个数必须大于宕掉的个数,也就是剩下的节点服务数必须大于n/2,这样Zoo ...
- flume伪分布式安装
flume伪分布式安装: 1.导包:apache-flume-1.7.0-bin.tar.gz 2.配置环境变量:/etc/profile export FLUME_HOME=/yang/apache ...
- DHCP.md
DHCP 主配置文件 从 /usr/share/doc/dhcp 复制 dhcpd.conf.sample 到/etc/dhcp下 ...
- MySql创建存储过程,并使用事件定时调用
一.使用命令行创建存储过程的步骤 :参数详情参考 https://www.mysqlzh.com/ 1.模板 delimiter $$ # 设置分隔符为 '$$' ,mysql默认的语句分隔符为 ' ...
- js如何替换字符串中匹配到多处中某一指定节点?
抛出一个问题,如图,搜索关键字,匹配到四处,那我鼠标放在第二处,我想把它变个颜色,该怎么实现呢?回到文章的标题,js如何替换字符串中匹配到多处中某一指定节点? 字符串的替换,我们首先想到的一个属性是r ...
- 【Java】变量
变量 文章目录 变量 1.变量的概念 2.变量的三要素 3.变量的使用应该注意什么? 4.变量的声明和赋值.使用的语法格式? 5.code 1.变量的概念 变量的作用:变量用来存储数据. 变量的本质: ...