
贪心
sillyf
这个作者很懒,什么都没留下…
展开
-
BZOJ 1484: [HNOI2009]通往城堡之路
神奇的贪心题解:http://blog.youkuaiyun.com/zeyu_king/article/details/44924517原创 2017-06-29 18:49:21 · 277 阅读 · 0 评论 -
51Nod 1241
第一眼想法是 ans=min(n-最长下降子序列,n-最长上升子序列) 然后发现找到的子序列相邻两位必须是相差 1 的 然后搞一下就好了(没考虑下降的貌似还是过了)#include<cstdio>#include<algorithm>using namespace std;int n,x,ans;int dp[50005];int main(){ scanf("%d",&n);原创 2017-08-29 19:19:27 · 265 阅读 · 0 评论 -
BZOJ 2006: [NOI2010]超级钢琴
Orz zzk 最直接的想法是找出所有不同的长度在[L,R]的子段然后选最大的k个加到答案中 但是太暴力没前途啊zzk教会我: 首先构造前缀和数组pre 定义一个三元组MAX(i,L,R)表示以i为右端点且左端点在[L,R]之间的使pre[i]-pre[t-1]最大的值 (等价于[L,R]中使pre[t-1]最小的值) 其中(L<=t<=R) 显然ans就是k个最大的这样的三元组的原创 2017-08-29 21:02:35 · 306 阅读 · 0 评论 -
Codeforces 725D
把所有的队伍分成两种,一种是气球数多于自己的(当前排名比自己高的),一种是气球数不大于自己的 首先求出初始排名,然后肯定是要每次把气球给当前排名高于自己队的队伍(助人飞升),显然可以用堆维护,每次选出(t-w+1)最小的队伍 然后自己队伍的气球会减少,刷新自己的排名刷新答案并且把气球数多于自己队伍的队伍放入堆中#include<cstdio>#include<algorithm>#inclu原创 2017-08-30 18:54:29 · 339 阅读 · 0 评论 -
51nod 1053 最大M子段和 V2[贪心][链表][堆]
好神啊 所以链表和读入打挂了调了半小时???#include<cstdio>#include<queue>#include<algorithm>#define ABS(x) (x>0?x:-x)#define N 50000#define LL long longusing namespace std;int n,m,l[N+5],r[N+5];LL v[N+5];struct n原创 2017-10-08 21:29:24 · 370 阅读 · 0 评论 -
51nod 1378 夹克老爷的愤怒[贪心][树形dp?]
假如是链上的话就直接贪心搞,每隔2∗k2*k放一个守卫 现在搞到树上 f[i]表示节点i的子树已经全受控制,还可以向上控制f[i]个单位 那么假如当前节点和它的子树节点已经相差为2*k个单位则要加一个家丁 如果当前节点的子树之间可以互相覆盖也是要考虑进去的…假如不能覆盖就要用当前最小的那个了… //感觉叙述不清啊…反正我自己知道怎么做就好了,5个点头盾看题解换10个还是很值的#includ原创 2017-10-24 21:06:45 · 340 阅读 · 0 评论 -
BZOJ 4504:K个串 [主席树][贪心]
题意给出一个长度为nn的数列an{a_n},一个区间[l,r][l,r]的和定义为其中的数字之和,相同的数字不重复算求第k大的和题解首先怎么求一个区间的和.对于aia_i维护它之前最近的与它相同的数的位置pre[ai]pre[a_i]对于固定的右端点维护每一个左端点到它的和,可以用线段树则从左往右扫描对于右端点ara_r只要把pre[ar]+1pre[a_r]+1到rr原创 2018-01-15 18:01:47 · 308 阅读 · 0 评论