luogu P1250 种树】的更多相关文章

我来总结一下最常用的两种办法 1.贪心 2.差分约束 那么我们先来讲,贪心版<种树> 大家可能知道有一个题和这个类似,那个是钉钉子而这个是种树 我们可以借用钉钉子的思路来想,首先这个是让你求最小值,而且每个人都有自己划定的区间,并且他们还要求在这段区间内最少种T棵树. 那么我们既要满足最少种树数,而且要满足每个人的要求.好在的是,题目中说过区间和区间之间可能会有一段重叠,那么我们要抓住这个机会尽可能多的在每一段重复区间内多种树,所以就会产生一个连锁反应,就是上一个重复区间内种的树可能会满足下一…
P1250 种树 题目描述 一条街的一边有几座房子.因为环保原因居民想要在路边种些树.路边的地区被分割成块,并被编号成1..N.每个部分为一个单位尺寸大小并最多可种一棵树.每个居民想在门前种些树并指定了三个号码B,E,T.这三个数表示该居民想在B和E之间最少种T棵树.当然,B≤E,居民必须记住在指定区不能种多于区域地块数的树,所以T≤E-B+l.居民们想种树的各自区域可以交叉.你的任务是求出能满足所有要求的最少的树的数量. 写一个程序完成以下工作: 输入输出格式 输入格式: 第一行包含数据N,区…
P1250 种树 输入输出样例 输入 9 4 1 4 2 4 6 2 8 9 2 3 5 2 输出 5 PS: 我种最少的树,意味着我的树要最多的被利用,意味着,我的树要尽可能的靠中间种, 也就是我把右区间从小到大排序,如果区间树不够,就从右往左种 import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc =…
题目描述 一条街的一边有几座房子.因为环保原因居民想要在路边种些树.路边的地区被分割成块,并被编号成1-N.每个部分为一个单位尺寸大小并最多可种一棵树.每个居民想在门前种些树并指定了三个号码B,E,T.这三个数表示该居民想在B和E之间最少种T棵树.当然,B≤E,居民必须记住在指定区不能种多于区域地块数的树,所以T≤E-B+l.居民们想种树的各自区域可以交叉.你的任务是求出能满足所有要求的最少的树的数量. 写一个程序完成以下工作: 输入格式 第一行包含数据N,区域的个数(0<N≤30000): 第…
Luogu 1792 算是双倍经验. 我们考虑对于一个点,我们要么选它,要么选它周围的两个点. 所以我们考虑用一个堆来维护,每次从堆顶取出最大值之后我们把它的权值记为:它左边的权值加上它右边的权值减去它自己的权值.即$a_{pos} = a_{l(pos)} + a_{r(pos)} - a_{pos}$.然后把它丢到堆里去. 这样子如果下次取出来这个值就相当于不选原来选过的那个点,而改选它旁边的两个点,而这样选的总的点数也是一样的,这个过程也可以扩展到一个区间,所以这样子可以求出最优解. 对于…
题目描述 一条街的一边有几座房子.因为环保原因居民想要在路边种些树.路边的地区被分割成块,并被编号成1..N.每个部分为一个单位尺寸大小并最多可种一棵树.每个居民想在门前种些树并指定了三个号码B,E,T.这三个数表示该居民想在B和E之间最少种T棵树.当然,B≤E,居民必须记住在指定区不能种多于区域地块数的树,所以T≤E-B+l.居民们想种树的各自区域可以交叉.你的任务是求出能满足所有要求的最少的树的数量. 写一个程序完成以下工作: 输入输出格式 输入格式: 第一行包含数据N,区域的个数(0<N≤…
题目描述 一条街道的一边有几座房子,因为环保原因居民想要在路边种些树,路边的居民被分割成 n 块,并被编号为 1…n.每块大小为一个单位尺寸并最多可种一棵树.每个居民想在门前种些树并指定了三个数b,e,t.这三个数分别表示该居民想在b和e之间最少种t棵树,当然b≤e,t≤e-b+1,允许居民想种树的子区域可以交叉.出于资金紧缺的原因,环保部门请你求出能够满足所有居民的种树要求时所需要种的树的最少数量.  输入 第一行为 n,表示区域的个数.第二行为 h,表示房子的数目.下面 h 行描述居民的需要…
差分约束 差分约束的裸题,关键在于如何建图 我们可以把题目中给出的区间端点作为图上的点,此处应注意,由于区间中被标记的点的个数满足区间加法,这里与前缀和类似,对于区间[L..R]来说,我们加入一条从L-1指向R的边,边权为ci. 这样还不够,因为这样建下来的图是离散的,我们还需要去挖掘题目中的隐藏条件,我们可以发现,区间[L..L]的c值大于零小于一,所以我们可以加入adde(L-1,L,0);adde(L,L-1,-1); 按理来说差分约束的题需要构造一个源点以防图不连通,但由于本题的隐含条件…
一道看一眼就知道差分约束的题目 但是最短路spfa的时候注意松弛条件是 if(dis[u]+w[i]<dis[v[i]]) dis[v[i]]=dis[u]+w[i]; 不能写成 if(dis[u]+w[i]<=dis[v[i]]) dis[v[i]]=dis[u]+w[i] 否则会TLE 就是如何把\( a_{i}-a_{j} \ge t \),方法非常简单,只需要乘上-1 就可以愉快地变成\( a_{j}-a_{i} \le -t \)了 然后就是建立图. 瞪眼法可知我们可以使用类似前缀和…
这道题目还是比较简单的 首先题目的意思就让我们很轻易地想到DP 我们设f[i][j]表示前i个坑中种j棵树的最大利益,则有: f[i][j]=max(f[i-1][j],f[i-2][j-1]+a[i]) 然而对于本题的数据范围之能得50pts 要A掉的话还是要动一些脑子的 我们先从小的情况开始讨论: 当k=1时,我们只需要找一个最大的收益即可(当然全负就不要找了) 当k=2时,我们先挑选一个最大的,若接下来最大的不是这个数两侧的数,那就区接下来最大的数即可 当k=2时,当然可能会有情况是选这两…