其他数据结构
文章平均质量分 55
QTY_
衡中信奥的渣
愿追求卓越,不断前行;只为爱&梦想,不曾停怯
展开
-
线段树优化DP [Poi2010]Monotonicity 2
问题 B: [Poi2010]Monotonicity 2时间限制: 1 Sec 内存限制: 256 MB提交: 57 解决: 40[提交][状态][讨论版]题目描述给出N个正整数a[1..N],再给出K个关系符号(>、选出一个长度为L的子序列(不要求连续),要求这个子序列的第i项和第i+1项的的大小关系为s[(i-1)mod K+1]。求出L的最大值。原创 2017-07-28 19:58:20 · 345 阅读 · 0 评论 -
超神线段树 山海经
问题 K: 山海经时间限制: 1 Sec 内存限制: 128 MB题目描述“南山之首日鹊山。其首日招摇之山,临于西海之上,多桂,多金玉。有草焉,其状如韭而青华,其名日祝余,食之不饥……又东三百里,日堂庭之山,多棪木,多白猿,多水玉,多黄金。又东三百八十里,日猨翼之山,其中多怪兽,水多怪鱼,多白玉,多蝮虫,多怪蛇,名怪木,不可以上。……”《山海经》是以山原创 2017-08-06 21:21:51 · 513 阅读 · 0 评论 -
线段树+平衡树(STL) 勤快的love 枫
问题 C: 勤快的love 枫时间限制: 1 Sec 内存限制: 128 MB题目描述小绝恋love 枫是一个出纳,经常需要做一些统计报表的工作。今天是绝恋love 枫的生日,小绝恋love 枫希望可以帮爸爸分担一些工作,作为他的生日礼物之一。经过仔细观察,小绝恋love 枫发现统计一张报表实际上是维护一个非负整数数列,并且进行一些查询操作。在最开始的时候,有一个长度为N原创 2017-08-01 21:38:51 · 374 阅读 · 0 评论 -
单调队列 JC loves Mkk
不想粘题面,传送门首先二分答案x, 设a[i]=v[i]-x;sum[i]为a[i]前缀和。只要保证sum[r]-sum[l-1]为偶数,范围L~R,切>=零即可。 考虑用单调队列,维护两个,一个代表选偶数,另一个奇数,奇偶搞定。 运用单调队列性质,那两个也就搞定了。 最后还是要考虑恶心的精度。二分还是要用long double,防止炸精,只要在check时确定了分母即可。因为最后二分出了总原创 2017-09-22 15:59:24 · 379 阅读 · 0 评论 -
单调队列 A
题面去内网找很明显正解要二分答案,如何高效率地check呢 1.搞一发线段树。 2.单调队列。 题挺水的,但是该复习一下单调队列了。#include <cstdio>#define N 100005int read(){ int sum=0,f=1;char x=getchar(); while(x<'0'||x>'9'){if(x=='-')f=-1;x=getchar原创 2017-10-20 14:11:38 · 234 阅读 · 0 评论 -
堆优化DP 征途堆积出友情的永恒
火车是Sunshine Empire的主要交通工具。Eddie和Hobo可以在当前的城市上车,并且在之后的某一座城市下车。从第(i-1)座城市乘坐到第i座城市需要花费Ai的费用。同时,在第i座城市上车需要缴纳Bi的税款。其中,税款属于额外支出,不属于乘坐这段火车的费用。珍娜女王为了促进Sunshine Empire的繁荣发展,下令:如果连续地乘坐一段火车的费用大于这次上车前所需缴纳的税款,则这次上车原创 2017-10-11 20:10:06 · 676 阅读 · 0 评论 -
乱搞 [CodeForces 348C] Subset Sums nsqrtn
这道题的思路很神奇,把集合分成了重集合和轻集合。我们把元素个数大于sqrt(n)的集合称为重集合。显然这样的集合超不过sqrt(n)个。 那么就可以分别处理集合了 首先统计出每个集合与每一个重集合交集有多大。维护重集合的sum(总和)和add(这个集合累计加了多少)值。 对于重集合 1.修改:只改一下add就好 2.查询:sum[x]+add原创 2017-10-08 06:57:20 · 294 阅读 · 0 评论 -
树链剖分 树
很明显一点,T1树里每一条边都会被选取一次。把T2树的每一条边看成一个线段覆盖。每次找到一个只被覆盖了一次的线段,找到他是被那个区间覆盖的,把那个区间删去。如果最后能删完,就有解,删不完就是无解。 搞个树剖维护区间被覆盖的最小次数。但是较难的地方是:如何判断某一条边是被那个区间覆盖的。其实我们可以再维护一个值,把覆盖这个点的区间的编号加起来,因为我们找线段时只是找被覆盖一次的线段,所以一定就是他的原创 2017-10-24 20:51:03 · 292 阅读 · 0 评论 -
凸包+可持久化栈 Lost My Music
这玩意看上去好恶心。。。实际上并没有。原来的式子是(c[top]-c[i])/(dep[i]-dep[top])—-> -(c[top]-c[i])/(dep[top]-dep[i]).这样就变成了斜率的形式了。要原来的式子最小,同理就是要现在的式子最大,并且这个斜率满足单调性。如果把斜率从小到大排序,然后放在一起,发现就成了一个下凸壳。考虑维护一个栈,dfs,每到一个点就退栈直到第一个满足的位置原创 2017-10-24 06:50:50 · 598 阅读 · 0 评论 -
线段树+平衡树 beautiful
关于每个值求它的beauty,至多N^2*log(N)的效率,查询一棵线段树搞定。 那么难点在于求beauty。既然要求一个不断插值的中位数,考虑用平衡树,N^2枚举每一个区间(严格说不是每一个)找中位数。普通treap很轻松。 那我介绍一种神奇的而且能用set的做法,先膜拜神犇whm。 对于每个区间的起点,值有一个,然后不断向后推,每次加二,——可以利用这个性原创 2017-08-09 20:45:37 · 380 阅读 · 0 评论 -
set+链表 【POJ Challenge】生日礼物
2288: 【POJ Challenge】生日礼物Time Limit: 10 Sec Memory Limit: 128 MB Submit: 841 Solved: 255 [Submit][Status][Discuss] Description ftiasch 18岁生日的时候,lqp18_31给她看了一个神奇的序列 A1, A2, …, AN. 她被允许选择不超过 M 个连续的原创 2017-09-20 18:05:22 · 287 阅读 · 0 评论 -
找规律 calc
看一个数对答案的贡献,就是找他前面有多少比它小的,后面有多少比他大的,一乘,就是他前后有多少涉及到他的顺序对,就是他对答案的贡献。 因为n 维护两个,一个是之前最小,正推,每推一个,压进当前位。另一个反推,找到比自己小的,做减法即可。 #include#include#include#include#include#define ll long lon原创 2017-08-09 20:36:16 · 309 阅读 · 0 评论 -
分块 公主的朋友
问题 B: 公主的朋友时间限制: 1 Sec 内存限制: 256 MB题目描述由于 Wulala 在上个问题中的精彩表现,公主认为 Wulala 是一个很棒的人,就把 Wulala 留在了 X 国。这时正好公主的一位传教士朋友来拜访公主,于是想找 wulala 帮忙X 国如同一条直线,其中有 n 个城市,从东向西分别编号为 1~n。而他的国家中有 m 种宗教,每个城市一定会有原创 2017-08-10 20:45:43 · 461 阅读 · 1 评论 -
暴利链表 钟
问题 B: 钟时间限制: 4 Sec 内存限制: 512 MB题目描述输入3 60 -1 11 0 -1-1 1 01 2 3 1 2 3输出5提示 我怀疑这道题出题人是来送钟的。。。然而出题人智商又被虐了。。暴力跑链表就能过。。。 有一种优化,可以算出这个钟什么时候挂掉。。就不用挨个枚举时间原创 2017-08-11 20:52:12 · 257 阅读 · 0 评论 -
线段树 [HZOI 2015]聪聪的世界
背景:聪聪的性取向有问题。题目描述:聪聪遇到了一个难题:给出一个序列a1…an,完成以下操作:1 x 询问从x向左数第一个2 x 询问从x向左数第一个>ax的数;3 x 询问从x向右数第一个4 x 询问从x向右数第一个>ax的数;5 x y 交换ax与ay;6 x y w 给ax…ay加上w;7原创 2017-08-05 11:17:01 · 249 阅读 · 0 评论 -
莫队+树状数组 AHOI 作业
3236: [Ahoi2013]作业Time Limit: 100 Sec Memory Limit: 512 MB Submit: 1716 Solved: 690 [Submit][Status][Discuss] DescriptionInputOutputSample Input3 41 2 21 2 1 31 2 1 11 3 1 32 3 2 3Sample Output2 2原创 2017-08-24 17:17:13 · 319 阅读 · 0 评论 -
单调队列 bzoj3126 [Usaco2013 Open]Photo
传送门,貌似是权限题,然而我是OwO如果我们处理每一个点,那这个点可以从前一段能转移的地方转移过来。 因为每个区间只有一个,所以上一个必须是从之前自己不属于的区间转移过来。也就是左侧所有右端点没到自己的区间左端点的最小值(再小就不保证这些区间里定有一个点了),最右就是所有右端点在自己右边的区间左端点的最小值(一个区间最多有一个)。然后单调队列推入点,找到符合左右区间要求的最大值(套路)即可。最后答原创 2017-09-23 13:39:31 · 296 阅读 · 0 评论 -
二维树状数组 回文
乍一看是区间DP+HASH,没错就是正解。 但我考试时任性的打了二维树状数组,挺快的。 对于每一个区间(N^2个)可表示为f[i][j],满足二维树状数组的性质, N^2扫每一个区间,插入。 查询:t[r][r]-t[l-1][r]-t[r][l-1]+t[l-1][l-1]就是了。#include<cstdio>#include<cstdlib>#include<iostream>#原创 2017-09-17 11:34:07 · 313 阅读 · 0 评论 -
重构树 Fiolki
问题 B: Fiolki 时间限制: 3 Sec 内存限制: 128 MB 题目描述 化学家吉丽想要配置一种神奇的药水来拯救世界。 吉丽有n种不同的液体物质,和n个药瓶(均从1到n编号)。初始时,第i个瓶内装着g[i]克的第i种物质。吉丽需要执行一定的步骤来配置药水,第i个步骤是将第a[i]个瓶子内的所有液体倒入第b[i]个瓶子,此后第a[i]个瓶子不会再被用到。瓶子的容量可以视作是无限的原创 2017-09-03 21:15:35 · 317 阅读 · 0 评论 -
卡常神器 手写堆
跟gxy大神还有yzh大神学了学手写的堆,应该比stl的优先队列快很多。 其实就是维护了一个二叉堆,写进结构体里,就没啥了。。。 据说达哥去年NOIP靠这个暴力多骗了分合并果子。。。。#include <cstdio>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>#define N原创 2017-11-03 10:38:18 · 913 阅读 · 1 评论