bzoj 2151 贪心】的更多相关文章

几乎完全类似于1150的思路,直接参考那个就行了. http://www.cnblogs.com/BLADEVIL/p/3527193.html /************************************************************** Problem: User: BLADEVIL Language: Pascal Result: Accepted Time: ms Memory: kb ***********************************…
https://codeforces.com/contest/958/problem/E2 首先求出N个时刻的N-1个间隔长度,问题就相当于在这些间隔中选K个数,相邻两个不能同时选,要求和最小 方法1: 一个K^2的做法,有一定技巧 https://www.cnblogs.com/void-f/p/8867585.html 方法2: 是可撤销贪心的模板? 就是贪心的选权值最小的,但是在选完某一个位置i后把它前一个没有被删的位置pre[i]和后一个没有被删的位置nxt[i]删掉,将i的权值变为(-…
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2151 分析:原型是bzoj 1150(CTSC 2007) 首先DP无法下手,想到贪心.想到贪心的第一感觉就是从大的开始取,但明显有反例,最烦的就是一个大的旁边旁边两个也很大,导致如果取了那两个最后结果更大.解决的办法就是每次取最大的同时,把它同旁边两个点合并成一个点,权值取:左+右-中间,然后后面继续去最大的点这么做下去…… 大概的认识就是给了一个反悔的机会,如果取了一个合并点也就相当于不…
2151: 种树 Description A城市有一个巨大的圆形广场,为了绿化环境和净化空气,市政府决定沿圆形广场外圈种一圈树.园林部门得到指令后,初步规划出n个种树的位置,顺时针编号1到n.并且每个位置都有一个美观度Ai,如果在这里种树就可以得到这Ai的美观度.但由于A城市土壤肥力欠佳,两棵树决不能种在相邻的位置(i号位置和i+1号位置叫相邻位置.值得注意的是1号和n号也算相邻位置!).最终市政府给园林部门提供了m棵树苗并要求全部种上,请你帮忙设计种树方案使得美观度总和最大.如果无法将m棵树苗…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2151 似乎是半年+前讲过的.(然而看到的时候却不会了) 考虑贪心,限制就是不能选两边的.如果选了最大的又要反悔,一定不可能是要只选旁边的一个,而是把两个都选了: 所以选了这个以后,把两边的打上标记表示不能选,往堆里加入一个值为 两边的值-自己的值 的元素表示反悔选择即可. 维护两边是谁,自己用了链表.也许这就是自己很慢的原因? #include<iostream> #include<…
和数据备份差不多 设二元组(i,a[i]),开一个大根堆把二元组塞进去,以len排序,每次取出一个二元组 因为单纯的贪心是不行的,所以设计一个"反悔"操作. 记录二元组的前驱pr后继ne,把拿出来的二元组的len加进答案,然后把当前二元组和它的前驱后继当成一个,也就是len[x]=a[pr[x]]+a[ne[x]]-a[x],相应修改前驱后继,然后"删掉"前驱后继的二元组,这样的意思是如果再次选了修改过的二元组x,就意味着退还掉x,选择它的前驱后继,易证这样个数和a…
如果两点的曼哈顿距离在一定范围内时我们直接暴力搜索就可以得到答案,那么开始贪心的跳,判断两点横纵坐标的差值,差值大的方向条2,小的条1,不断做,直到曼哈顿距离较小时可以暴力求解. 备注:开始想的是确定一点周围跳到这个点的答案,然后再枚举周围的点,判断这个点和另一个点的曼哈顿距离,如果能被3整除就说明之前可以一直跳过来,不知道怎么不对. /************************************************************** Problem: 1193 Use…
就贪心就行了,首先可以看成n个格子,放物品,那么 一个物品假设放3个,放在1,k,n处,那么价值和放在1,n 是一样的,所以一个物品只放两个就行了,价值大的应该尽量放 在两边,那么排序之后模拟就行了 /************************************************************** Problem: User: BLADEVIL Language: Pascal Result: Accepted Time: ms Memory: kb ********…
我们可以贪心的分析,每个点的入度如果是0,那么这个点不可能 被用来更新答案,那么我们每次找入度为0的点,将他去掉,如果他连的 点没有被更新过答案,那么更新答案,去掉该点,环的时候最后处理就行了 /**************************************************************     Problem:     User: BLADEVIL     Language: Pascal     Result: Accepted     Time: ms   …
贪心+priority_queue. #include<iostream> #include<cstdio> #include<cstring> #include<queue> #define maxn 200050 using namespace std; ,m; bool vis[maxn]; struct node { long long w,pos; friend bool operator < (node x,node y) { return…