好久不写博客了,发现不好找做过和题!还得接着写啊!

------------------------------------------------------------------

题目描述

某条街被划为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 }

最新文章

  1. a primary example for Functional programming in javascript
  2. 怎么实时查看mysql当前连接数
  3. 第三十九章 微服务CICD(1)- gitlab搭建与使用(docker版)
  4. js事件代理
  5. 转: Div与table的区别
  6. PuTTY 中文教程
  7. Java并发编程-总纲
  8. 首页商品图片显示错位,easy-popular批量上传
  9. xml、网络编程、 反射
  10. js jquery 正则去空字符
  11. TPS和QPS的区别和理解【转】
  12. 经济学人使用Golang构建微服务历程回顾
  13. shell scripts 之 代码量统计
  14. iOS 固定定位不兼容、input获取焦点后位置不对。
  15. 结对作业——随机生成四则运算(Core 第7组)
  16. 在handlebars.js {{#if}}条件下的逻辑运算符解决方案
  17. WindowsServer2003双网卡配置
  18. 如何计算服务器能够承受多大的pv?
  19. underscore.js源码解析(三)
  20. TileMode(平铺模式) 枚举的成员:

热门文章

  1. datagrid 根据指定参数重新加载数据
  2. 容器编排系统K8s之访问控制--用户认证
  3. 记一次jedis并发使用问题JedisException: Could not return the resource to the pool
  4. [LeetCode]319. Bulb Switcher灯泡开关
  5. 动态REM
  6. Light Probes
  7. SLA
  8. web.xml中配置启动时加载的servlet,load-on-starup
  9. window10 安装Mysql 8.0.17以及忘记密码重置密码
  10. 修改postman工具的代码生成工具让它锦上添花