
堆
sillyf
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
poj 2274 The Race 小根堆
题目大意:给出一些往同一个方向飞的飞船的初始位置和速度,第一问要求发生超车(超船?)的总次数(%1000000);第二问要求按超车时间依次给出前10000次超车的飞船的编号与被超车的飞船的编号,如果超车时间相同貌似是根据超过别的飞船的飞船的位置(?)第一问比较简单,因为读入按照位置依次给出,因为V的范围小,直接用暴力过:先读入的速度如果比后读入的快就能超过,详见代码对于第二问,原创 2017-02-16 10:23:25 · 791 阅读 · 1 评论 -
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 · 316 阅读 · 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 · 316 阅读 · 0 评论