10 2018 档案

摘要:传送门 这道题被严重恶意评分了,实际应该是绿题。 因为其实我们只需要模拟即可。这里我们引入一种新的东西:约瑟夫环。 它能直接告诉你约瑟夫问题中最后一个存活下来的人是谁。(不过下标是从0开始的,实际使用的时候需要+1) 如果有n个人,每次报到m的时候出列,那么令f[i]表示有i个人的时候最后存活的人的 阅读全文
posted @ 2018-10-31 22:19 CaptainLi 阅读(170) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题是很好的一道IDA*练习题。 首先我们先确定搜索的框架,我们要求的是用最少的修改次数使得所有的行,列,宫之内都有偶数个1,最直观的想法显然是先预处理出有奇数个1的行,列,宫,之后枚举每一个点,如果这个点在奇数个1的行/列/宫之中就开始修改,继续搜索。修改整个数独之后判定,回溯。 这个正 阅读全文
posted @ 2018-10-31 22:04 CaptainLi 阅读(1197) 评论(0) 推荐(0) 编辑
摘要:传送门 一道非常好的搜索题! 题目要求一个城市能修建水利工程,必须在一个比他海拔高而且修建了水利工程的城市旁边,那我们可以从每个水库旁边的点开始进行BFS,判断最后一行有哪些点能到达,从而判断可行性。这个做法很简单粗暴,只要一开始把沿着水库边上所有点全都压到队列里面,直接BFS即可,时间复杂度不超过 阅读全文
posted @ 2018-10-31 21:46 CaptainLi 阅读(188) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题我去年做到爆炸,最后还是爆零了,现在我还是特别慢才写完…… 唯一不同就是现在思路比较清晰,但是我的做法比较复杂,代码很长。 我们要处理以下事情: 1.读入程序行数,得到该程序时间复杂度。 这个很简单,我的方法是写一个函数判断一下,然后返回当前时间,如果是常数级就是0. 2.读入程序,判 阅读全文
posted @ 2018-10-30 23:54 CaptainLi 阅读(576) 评论(0) 推荐(0) 编辑
摘要:传送门 很不错的一道DP题…… 这个题的关键之处在于在两者之间收集的魔液的差值上进行DP(很像多米诺骨牌那道题),我们用dp[i][j][p][0/1]表示在点(i,j),当前两者魔液差值%(k+1)为p,0/1表示小a/uim正在取魔液的方案数,就有DP方程如下: 这个DP的初始化是对于每一个a[ 阅读全文
posted @ 2018-10-30 23:38 CaptainLi 阅读(126) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题也是很暴力的搜索啊…… 因为数独一开始全是空的,只有许许多多的大小限制条件,那也没必要纠结从哪开始搜索了,直接暴力搜索之后判断一下是否合法。 这题最恶心的是读入。现学了一招判断点在哪个块内,用lim[g][i][j],表示在g宫内i和j这两个格子的大小关系,处理还是相当复杂的(代码里有 阅读全文
posted @ 2018-10-30 23:32 CaptainLi 阅读(197) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题比我想象之中要暴力一些。 自己一开始有一份写9*9数独的代码,自己试了一下直接交上去只有40分。看来这样是肯定不行的。考虑优化,想在中间贪贪心啥的,但是难以保证正确性。最后学了一招,从数字比较多的行开始搜索,这样会使搜索树变得小一些,时间就会减少一些。 然后交上去之后还是只有75分…… 阅读全文
posted @ 2018-10-30 23:27 CaptainLi 阅读(152) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题很明显是爆搜,但是爆搜肯定会T,我们来一步一步说。 首先木棍的原长不能小于所有木棍中最长的一段,否则那段就没用了。之后,木棍的原长也必须是总长的一个因子,而且必须是,小于等于他的一半的。这样已经减少一些不合法情况了,但是还远远不够。 之后我们考虑搜索时的操作,可以想到,我们应该先行使用 阅读全文
posted @ 2018-10-29 23:03 CaptainLi 阅读(217) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题或许是披着数论外衣的搜索题…… 在进行爆搜之前,我们有几个结论性的东西需要进行证明。 1.区间内最大的反质数是因子最多的最小的数。 这个很好理解,首先它必须因子最多,其次,如果他不是最小的那一个的话,那么它的前面就会有一个因子个数与之相同的数,那他就不是反素数了。 2.本题数据范围之内 阅读全文
posted @ 2018-10-29 22:31 CaptainLi 阅读(136) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题感觉很难想……毕竟数论题好像想到的话基本就没什么事了。 我们要求的数是x,显然可以先设x = p*a1,b1 = t*x,那么b1 = p * t * a1.设s = t * p。 之后我们通过最大公约数和最小公倍数的性质可以先得到,gcd(a0/a1,p) = 1,因为如果二者还有大 阅读全文
posted @ 2018-10-29 22:18 CaptainLi 阅读(208) 评论(0) 推荐(0) 编辑
摘要:以前写高精度基本都是抄别人的……这次要改变一下了…… 现在的高精度模板还是很简陋的,只支持高精加,减,乘,高精除低精,高精模低精,高精快速幂,高精比较大小,没了。 或许以后会不定期更新一下……毕竟这个还是比较ca的。 直接一股脑全贴上来吧……注意所有的元素都是倒叙存储的,想要改成压位的很简单,只要改 阅读全文
posted @ 2018-10-29 21:46 CaptainLi 阅读(184) 评论(0) 推荐(0) 编辑
摘要:传送门 贪心还是很舒服的,不过加上高精度就很难受…… 我们要求的是得到金钱最多的大臣得到的钱数尽可能少。看到这个问题可能会想起二分答案之类的……不过看看这数据范围就知道不可能。想起之前做过一道类似的题,考虑一下贪心。 直接贪心肯定是看不出来啥,那我们还是老套路,交换一下两个大臣。假设前面所有人乘积为 阅读全文
posted @ 2018-10-29 21:39 CaptainLi 阅读(185) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题还是比较简单的。我们只要先用老套路建出反图,记录终点与哪些点是联通的,之后从所有不与终点联通的点出发,在反图上枚举一下与之直接相连的边,也设为不能走。之后我们在可以走的路上跑最短路即可。 看一下代码。 阅读全文
posted @ 2018-10-29 21:23 CaptainLi 阅读(150) 评论(0) 推荐(0) 编辑
摘要:传送门 这题一开始有个非常朴素的想法,五维DP,分别记录当前走到了哪,以及这四种牌各用了多少张。不过这样的话不仅MLE还TLE…… 但是其实如果知道现在用什么牌的话,你走到哪是已知的,而且题目还保证走到最后牌刚好打完,所以第一维记录走到哪没什么用。 所以可以压成四位DP,之后就可以过了。 看一下代码 阅读全文
posted @ 2018-10-29 21:16 CaptainLi 阅读(124) 评论(0) 推荐(0) 编辑
摘要:上周的忘写了……题目没有作者…… T1.backpack 期望得分100,实际得分100. 感觉我自己真是不如以前了……以前做这种题都是秒掉的,现在怎么想了10分钟啊…… 因为物品的体积和价值都非常小,我们有一句套话,“远距离贪心,近距离暴力”,所以虽然背包的体积特别大,我们可以把他压缩成10000 阅读全文
posted @ 2018-10-28 16:54 CaptainLi 阅读(138) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题虽然很基础但是也不是很好想…… 我们一开始会想,用dp[i]表示前i分钟最大休息时间,之后你就完全不知道怎么转移了。 阻碍你转移的关键问题在于,你不知道后面会发生什么,但是如果从后面倒着DP的话就可以了。因为这样的话,你后面的过程相当于是已知的。我们只要在记录一下以这个点为开始的工作有 阅读全文
posted @ 2018-10-26 23:53 CaptainLi 阅读(219) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题要求我们在差最小的情况下反转次数最少。我们用dp[i][j]表示选取前i个股票,差值为j的最小反转。因为差最小是优先条件,所以我们完全可以找到最接近某一个值的点,取其最小反转次数。 那么dp[i][j] = min(dp[i-1][j+a[i]],dp[i-1][j-a[i]]+1), 阅读全文
posted @ 2018-10-26 23:40 CaptainLi 阅读(159) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题的暴力非常容易……直接用dp[i]表示跳到i时最少踩的石子数,那么直接枚举跳跃范围转移即可。 但是这样数组开不下。我们得考虑把路径压缩一下。 我们假设选择一次跳跃距离为p,一次为p+1.这样两者必然互质,那么其中一个数的倍数必然遍历另一个的完全剩余系,所以大于p*(p+1)的数是全部都 阅读全文
posted @ 2018-10-26 23:28 CaptainLi 阅读(207) 评论(0) 推荐(0) 编辑
摘要:传送门 题目简单描述:找到给定矩形中,最大的,只有对角线为1的正方形。既然又是从矩形找正方形,于是又想故技重施使用悬线法,预处理每个值为1的点到周围最多能拓展几个值为0的点。不过之后发现这样做还是很暴力,每次只能从左上(右上)转移,想着当时暴力判断能否转移。 但是其实没必要这么做,而且这样复杂度也比 阅读全文
posted @ 2018-10-26 23:20 CaptainLi 阅读(161) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题数据范围很小,所以一开始我采用极暴力手段,直接枚举所有正方形,二维前缀和暴力判断即可。后来发现可以二分,也可以从大到小,其实没什么优化。 之后想到以前做DP的时候的悬线法,就故技重施用O(n^2)的做法过了此题。 但是其实正解非常简单,用dp[i][j]表示以(i,j)为左下角的最大的 阅读全文
posted @ 2018-10-26 23:12 CaptainLi 阅读(422) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题很神奇啊…… 我们一开始无论是贪心取最小还是差价最大都不对,后来发现这其实是一道带有反悔性质的贪心…… 我们首先维护前k个优惠值,我们如果能取肯定是买这些的,如果已经到了上限就直接结束。之后,我们考虑后面的物品,有可能选择用优惠价买这些物品更优,所以我们提供返回操作,维护一个原价的小根 阅读全文
posted @ 2018-10-25 23:39 CaptainLi 阅读(192) 评论(0) 推荐(0) 编辑
摘要:传送门 题目大意是,车子离城镇L单位长度,还有P升油,每开一个单位长度减1升,中途有n个加油站,每次能加一定数量的油,求最少加几次油能到目的地。油箱视为无限大。 或许你会想这样贪心:每次开车开到最远能行驶距离,在最后一个加油点加油,之后继续开,但是这个样例就把你卡死了。我们考虑这个题的关键所在就是, 阅读全文
posted @ 2018-10-25 22:56 CaptainLi 阅读(163) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题一开始没想出来怎么贪心…… 后来发现,既然要让雷达能看到岛,我们没有必要一直死盯着雷达,雷达是动的,但是岛是静止的,所以一个雷达如果能探到岛的话,它必然是在某个区间之内。 所以我们可以使用勾股定理计算出所有的区间,之后就特别像活动选择了……我们按末端排序,每次选取区间末端,能跳就跳,直 阅读全文
posted @ 2018-10-25 22:29 CaptainLi 阅读(245) 评论(0) 推荐(0) 编辑
摘要:传送门 同样是一道贪心题。我们能想到,肯定是要做那些扣钱最多的,所以我们先把扣钱的多少拍一下序,之后,我们一定是要把这件事情尽量拖后做的,这样才能保证尽量不影响其他的事件。而如果这个时间已经被占用,那就尽量向前排,实在排不了的丢弃即可。 看一下代码。 阅读全文
posted @ 2018-10-25 22:16 CaptainLi 阅读(184) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题是很有趣的贪心题…… 一开始可能我们会无从下手……因为直接看是看不出来啥的,只按照重量或者承受能力也是不行的。 我们考虑一个新套路,选择两头奶牛,把他们进行交换,看怎么样贡献会比较大。 我们假设前面的奶牛总重为w,第一头奶牛重为w1,承受能力为s1,第二头同理为w2,s2,那么,第一头 阅读全文
posted @ 2018-10-25 22:06 CaptainLi 阅读(284) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题是一道二分答案题……我估计很难看出这是二分答案…… 题目要求求出序列中老师为奇数的是哪一个点。 这道题它十分神奇,我们往往都会纠结在如何存下这么多的点,如何处理老师的站位。但是这些并不是解题的关键,我们要注意一个重点,就是序列中最多只有一个位置有奇数个老师,这样的话,我们能知道,包含这 阅读全文
posted @ 2018-10-25 21:52 CaptainLi 阅读(157) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题可以用二分答案做,但是我个人认为最小生成树做更为简洁。其实最小生成树并不准确,应该是最小生成森林。 因为我们只要把所有部落连成k个块,然后让最近的块最远,所以我们肯定是连长度最小的边,那就是最小生成树咯。我们先建出一张完全图,之后跑一遍kruskal,每次如果属于不同集合的话把森林个数 阅读全文
posted @ 2018-10-25 21:35 CaptainLi 阅读(162) 评论(0) 推荐(0) 编辑
摘要:传送门 听说这是一道虐狗题(大雾 题目要求每次询问一段区间之内有多少个数出现了偶数次。我们故技重施,使用分块去解决。和求区间众数很相似,先预处理出每个数在前i个块中出现过多少次,之后预处理出块i到块j有多少个元素出现过正偶数次。做过上一道题应该觉得这个很简单了…… 查询的时候,对于整块区间先取出出现 阅读全文
posted @ 2018-10-24 07:33 CaptainLi 阅读(129) 评论(0) 推荐(0) 编辑
摘要:传送门 题目要求求出给定区间内编号最小的众数,强制在线。 虽然说这是个黑题……不过我们可以用暴力分块解决它。首先先对所有数离散化,这个不影响众数。我们先预处理出每个数在前i个块内出现了多少次,再预处理出块i到块j内最小众数是谁。前者很好预处理,后者的话,我们只要固定i,之后向后枚举,每次新加入一个数 阅读全文
posted @ 2018-10-24 07:23 CaptainLi 阅读(198) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题序列很长,但是操作数很少,然后也没想到什么好的数据结构来维护,那就分块吧。 感觉维护的过程很好想,修改的时候对于整个块都在内的直接打标记,两个零散的区间暴力重构,重新排序。查询的时候,对于整块的,直接在块内lowerbound一下z-add[i]的位置,零散的话直接暴力计算即可。 复杂 阅读全文
posted @ 2018-10-23 08:05 CaptainLi 阅读(191) 评论(0) 推荐(0) 编辑
摘要:传送门 还有这种操作? 我看到这道题的时候想到暴力枚举,不过a的范围极大令人头疼。Ssy说他要用Python然后他T了 不过后来发现,因为我们要解的方程左边是等于0的,所以我们可以直接把所有的a对于某一个数取模,这个在读入的时候就能处理,之后直接暴力枚举m用秦九韶算法硬算即可。 这都是什么神仙操作 阅读全文
posted @ 2018-10-23 07:57 CaptainLi 阅读(196) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题在处理上还是稍微有点麻烦的…… 可以想到,如果使两列火柴距离差值最小,肯定是每列火柴排名第k高的对应的在同一位置。这样的话,如果我们把第二列火柴映射为其出现在第一列火柴中的位置,我们只要求一下映射之后的逆序对数即可。 不过不能直接映射,因为有些数并不是公共的,所以我们先把两个序列都先离 阅读全文
posted @ 2018-10-23 07:48 CaptainLi 阅读(258) 评论(0) 推荐(0) 编辑
摘要:传送门 题目描述的意思就是,对于给定的所有区间,计算每个区间里面有多少个质量大于w的矿石,把个数乘以价值和即为区间贡献,设定一个w值使得区间贡献和最接近S。 可以看出,这个贡献和肯定是随着w具有单调性变化的,我们又想到二分答案……然后每次更新一下差值最小值,如果贡献和大于S就增大w,否则减小w。 计 阅读全文
posted @ 2018-10-23 07:42 CaptainLi 阅读(244) 评论(0) 推荐(0) 编辑
摘要:传送门 一道比较简单的并查集题,我们先把所有冲突事件按照影响力排序,之后从大到小处理他们。每次对于两个敌人,如果其中一个人没有敌人,那么就把他的敌人设为当前这个人,否则把他的敌人所在的集合与这个人合并即可。判断的时候如果两人在同一集合即不合法。 此题还有一种做法。我们要求的是最大值最小,所以我们还是 阅读全文
posted @ 2018-10-23 07:37 CaptainLi 阅读(126) 评论(0) 推荐(0) 编辑
摘要:传送门 或许这也算是道神仙题? 题目描述非常直白,我们把式子转化一下,其实就是求n*k - ∑(k/i) * i。 而k/i是可以使用除法分块来做的……假设t = k / i,如果t = 0,那么它的末端就是n,这个很显然,如果不等于0的话,那么末端就是k / t。 之后我们就神奇的过了这道题…… 阅读全文
posted @ 2018-10-21 00:17 CaptainLi 阅读(118) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题听说是LCT的裸题……但是我只会分块。 分块的复杂度肯定是能过的orz,抗下200000很有信心。 我们还是老套路分成sqrt(n)块,之后我们统计两个值,一个是当前点弹几次会被弹出块,第二个是当前点弹出块以后到了哪(这两个都是要倒着枚举的,O(n)) 之后,对于查询,我们直接暴力跳就 阅读全文
posted @ 2018-10-21 00:11 CaptainLi 阅读(119) 评论(0) 推荐(0) 编辑
摘要:传送门 非常神奇的树形DP…… 可能和大多数人一样吧,一开始我令dp[i][j]表示以i为根的子树选择j个黑点的最大价值,之后就不会转移了…… 后来发现这个状态设的并不对,因为我们要考虑的是对答案的总贡献,而不是每个子树内的价值,也就是我们要考虑的是每条边对答案的贡献。 这个式子很显然的,但是像我这 阅读全文
posted @ 2018-10-21 00:06 CaptainLi 阅读(149) 评论(0) 推荐(0) 编辑
摘要:传送门 一开始我以为这道题是一个比较正常的分组背包,只不过原来做的题目的限制条件是数目,这次是有体积(软件所占空间)的限制,但是两者好像没什么差异…… 于是我就仿着正常的分组背包写了一下,然后过了样例。我才不会告诉你我一开始结果全是0,因为我写错了 交上去一看只有10分…… 回来发现原来这题并没有说 阅读全文
posted @ 2018-10-19 08:08 CaptainLi 阅读(156) 评论(0) 推荐(0) 编辑
摘要:传送门 一道很有趣的贪心题(bin哥看了1s就会了%%%) 觉得本题似乎是环形均分纸牌,但是其实我们不需要再枚举断点。首先每个人最后分到的糖果数是固定的,我们设x[i]表示第i个人给了ta左边的人多少颗糖果(第一个人就给到最后一个人),a[i]表示小朋友原来有多少糖果。那么就有a[i] - x[i] 阅读全文
posted @ 2018-10-19 08:00 CaptainLi 阅读(137) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题似乎是夹克老爷的愤怒那道题的弱化版……?这次的距离是固定为2的。 我们首先考虑一下只有一条链的情况,这个谁都会,就是每隔2k(k为给定距离)个点放一个,就是这样贪心。树也可以用这种贪心法来求解,我们从叶子节点往上DP,每次用dp[i]表示这个点还能往上控制距离为多少的点,如果当前的dp 阅读全文
posted @ 2018-10-19 07:46 CaptainLi 阅读(181) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题好巧妙啊…… 首先根据题目大意可以知道如果有风铃的深度差值大于1的话那么肯定是不合法的,风铃的深度就可以被看成高的和低的(雾)。 然后,我们要进行交换,但是交换其实并不会改变一个节点所在的子树,也就是说,你不可能把某一个子树从树里面分裂出来再放回去,所以,如果一个节点的左右两棵子树内全 阅读全文
posted @ 2018-10-19 07:40 CaptainLi 阅读(201) 评论(0) 推荐(0) 编辑
摘要:传送门 一道很好的树型DP。 一开始我的状态选择是用dp[i][0]表示以i为根节点,不选择i的最小花费,dp[i][1]表示以i为根节点,选择i的最小花费。但是这样我发现无法转移,因为你不能保证选或者不选的正确性…… 问题在于状态设少了。一个点有三种状况,一个是本身站有保安,一个是被自己的子节点控 阅读全文
posted @ 2018-10-19 07:33 CaptainLi 阅读(157) 评论(0) 推荐(0) 编辑
摘要:传送门 这个题很有意思哎……一开始我还看错题了,以为只要求最大深度最小…… 所谓的上下级关系其实只是树形结构的描述,每个人都有机会当根,所以要遍历根节点。因为一个人在每个时间单位之内只能给一个人传消息,我们贪心的想一下,肯定是给子树最大的那一个节点先传消息比较好,这样的话方法就出现啦,我们只要开一个 阅读全文
posted @ 2018-10-18 07:58 CaptainLi 阅读(197) 评论(0) 推荐(0) 编辑
摘要:传送门 题目的描述非常清楚,数据范围是106。暴力的方法很好想……O(n2)暴搜…… 这个数据范围基本就是明示你要O(n)去做这个题。我们考虑一下换根的时候发生的转移,先随便取一个根计算所有点的深度和(这个没难度),之后在换根的时候,现在的根的子树中所有节点深度-1,从它父亲那边过来的树所有节点深度 阅读全文
posted @ 2018-10-18 07:52 CaptainLi 阅读(147) 评论(0) 推荐(0) 编辑
摘要:传送门 题目的意思描述非常明确,我们很容易想到最暴力的算法——模拟! 不知道O(nm)的模拟能拿到多少分,反正肯定会T飞的。 我们考虑优化一下,因为各个骑士之间是独立的,但是我们的问题是一个一个枚举骑士复杂度过高,我们可以用全局变量来记录一下每一个骑士团的情况。这样的话,我们对于每一个被攻击的城池建 阅读全文
posted @ 2018-10-18 07:45 CaptainLi 阅读(153) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题是真的巧妙,像我这样的估计永远想不出来咋做了。 这道题要求的是严格递增,我们先考虑比较简单一点的,改成严格不下降的。 这样的话,对于原序列a,如果它自身某一段是不下降序列的话,那么我们直接让b与之相等即可,那如果是下降的序列呢? 我们可以说明,这段下降序列的答案一定是序列中所有数的中位 阅读全文
posted @ 2018-10-16 23:08 CaptainLi 阅读(189) 评论(0) 推荐(1) 编辑
摘要:传送门 我觉得这个题目翻译的特别好,真的。 这个就是左偏树的模板题啦。每次找到这俩猴子所属的堆,然后如果不一样的话,就把两个堆里面最牛叉的两只猴子战斗力减成一半。我们用左偏树维护,取猴子的时候直接取顶端,然后我们把这个点的权值改成原来一半,重新合并就行啦。 这题在做的时候莫名MLE……后来发现是自己 阅读全文
posted @ 2018-10-16 22:45 CaptainLi 阅读(444) 评论(0) 推荐(0) 编辑
摘要:传送门 最近又重新学了一遍左偏树,然后做了这道题…… 题目描述很麻烦……(尤其是我根本不知道那个master到底能干嘛),其实就是要求选取一个节点,在其子树内找到花费不超过M的最多的人数*这个节点自身价值。然后选取某一个点使得价值最大。 因为这个题和普通的情况不大一样,别的都是要求什么自身价值高,这 阅读全文
posted @ 2018-10-16 22:40 CaptainLi 阅读(122) 评论(0) 推荐(0) 编辑
摘要:传送门 题目大意:给定一些牛,每头牛有一个权值和一个坐标,两头牛之间交谈需要两牛之间距离*权值较大值的音量,求所有对牛产生的音量和。 分析一下,我们要维护的值之中,距离其实有好多是重叠的,应该是可以用数据结构维护的,但是令人头疼的事情是因为每次要*权值较大的音量值,这样的话每次不知道应该选取哪个音量 阅读全文
posted @ 2018-10-16 22:30 CaptainLi 阅读(159) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题有个非常好听的名字,求二维偏序! 听起来似乎很高端,但就是让求满足对于每个i,xi < xj && yi < yj的个数。 这道题特别良心,给的顺序都是y递增,y相同x递增的,所以可以直接用树状数组维护x,当前的i答案个数就是query(x-1)。 然后如果这道题顺序是乱的呢……?也没 阅读全文
posted @ 2018-10-15 23:13 CaptainLi 阅读(120) 评论(0) 推荐(0) 编辑
摘要:传送门 树状数组求逆序对 + 离散化? 我好像永远都记不住怎么用树状数组求逆序对……以前我记得都是正着写的,这次怎么得倒着写才能过…… 然后本题a的范围极大,但是n的范围不大,500000,需要先手离散化一波,之后就可以正常按照树状数组操作了。然后在query的时候注意要-1. 我们来看一下代码。 阅读全文
posted @ 2018-10-15 23:08 CaptainLi 阅读(134) 评论(0) 推荐(0) 编辑
摘要:传送门 线段树的题……种类特别多。有的时候除了区间以外其实你不知道他和线段树有毛线关系,比如这道题。 这个题咋做……?首先看到这个题会觉得特别头疼,因为难以处理当前时间的关系,好像除了模拟没什么别的办法。不过看一下数据范围,a[i] <= 6? 这么小的话,那么这些数的最小公倍数只有60,那么,所有 阅读全文
posted @ 2018-10-15 22:47 CaptainLi 阅读(144) 评论(0) 推荐(0) 编辑
摘要:传送门 题目大意:给一段空序列,每次向序列中某一个位置插入一个数,插入的位置后面所有数相应后移。 这个题比较令人头疼的是后移操作,我们不可能大面积后移。那怎么办呢?后面的人对前面有影响,那我们能不能通过离线方法,使得它变成没有影响的状态? 可以的。我们可以把输入离线,然后倒着插入。这样的话,这个数的 阅读全文
posted @ 2018-10-15 22:35 CaptainLi 阅读(105) 评论(0) 推荐(0) 编辑
摘要:今天模拟很有趣,你只要写一份AC代码就能顺便用它来与好友进行k子棋和围棋的混合棋(只是不支持悔棋)。 T1.FIR 期望得分100,实际得分64,(如果有subtask是0分) 这就是那道有趣的题。大模拟…… 判断赢我的办法是dfs,分别向八个方向搜索,把相对应的两个方向的答案加上看是否有一个符合。 阅读全文
posted @ 2018-10-15 10:08 CaptainLi 阅读(150) 评论(0) 推荐(0) 编辑
摘要:传送门 题目大意:求函数f(i) (f(0) = 1,f(x) = bf(x-1))的后7位。给定b和i。 这个要用到欧拉降幂公式。不过这个题其实比昨天的还要麻烦一些,昨天那个因为是无限的,所以每次指数肯定要大于φ(m),所以直接用就行啦。不过这个如果指数小于φ(m)的话,那么我们就得直接去取模。 阅读全文
posted @ 2018-10-13 19:58 CaptainLi 阅读(129) 评论(0) 推荐(0) 编辑
摘要:传送门 题目大意:求解同余方程组,不保证模数两两互质。 如果模数互质的话,那么我们可以用CRT求解,要是不互质呢?我们就没办法了吗?当然不是。我们可以用exgcd将方程合并来求解。 首先我们先以两个方程为例: A ≡ r1 (mod a1) A ≡ r2 (mod a2) 我们把这两个方程写成这样的 阅读全文
posted @ 2018-10-13 19:49 CaptainLi 阅读(128) 评论(0) 推荐(0) 编辑
摘要:传送门 这题出的真不是一般的好…… 一句话描述题意就是求无限个2垒在你的指数上……求mod p的值,其中p不超过107 这玩意其实是一个递推函数(当然我们是递归求解的),我也不知道怎么拿语言描述233. 我们这题要用到欧拉降幂公式! 首先啥是欧拉降幂公式? 它的基本形式长这样: Ak ≡ Ak%φ( 阅读全文
posted @ 2018-10-12 23:58 CaptainLi 阅读(214) 评论(0) 推荐(0) 编辑
摘要:传送门 这题简直了……(虽然说python可以直接过,但是你考试的时候也只是能拿python对拍而不是交上去……) 这题直接用更相减损术会T掉(我们不可能还用高精除法,因为数这么长的话高精除法的效率很低),但是直接更相减损也会T……即使压位都不行,但是有一位dalao压位就过了,而我就T了…… 于是 阅读全文
posted @ 2018-10-12 23:45 CaptainLi 阅读(146) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题好像一开始想到了差不多的做法orz?后来都不大敢相信就是这么做的……有点瞎搞。 后来看了CF的官方题解,感觉还是挺有道理的。首先对于1和大于n/2的质数肯定是不行的,我们直接忽略。然后,对于每一个质数的倍数,我们肯定是把他们组合在一起更优。如果这些数有奇数个,那我们就把质数的2倍挑出来 阅读全文
posted @ 2018-10-12 23:38 CaptainLi 阅读(112) 评论(0) 推荐(0) 编辑
摘要:传送门 luogu简化了题意而且提供了翻译。 直接开做,这题可以选择使用CRT,我也使用了……但是其实似乎暴力也可以。 我们老套的CRT操作,这样每次对于输入的值直接乘一下就行。 注意特判的时候如果四个值都是0的话要输出0. 看一下代码(CRT的内容在代码里) 阅读全文
posted @ 2018-10-12 23:33 CaptainLi 阅读(201) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题是一道相当不错的不定方程的题! 题目大意是要我们用若干个两种给定质量的砝码称出给定质量的物品,其中满足使用砝码总数最小,如果有多组解输出砝码质量最小的一组解。 其实转化一下我们还是要求ax+by=c的一组解…… 这个当然很好求,之后既然要求砝码总数最小,我们只要让x或者y最小即可,然后 阅读全文
posted @ 2018-10-12 23:29 CaptainLi 阅读(99) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题是求解不定方程的一道好练习题。 题目描述的很诡异……还说什么k进制,其实就是要求一个数A,每次加C,问到B要加多少次,所有的数对2k取模。 也就是说我们能列出如下方程:A+xC ≡ B (mod 2k)我们把这个方程两边移项转化,那么就能得到一个不定方程的形式。 老套路,判断有没有解, 阅读全文
posted @ 2018-10-12 23:19 CaptainLi 阅读(150) 评论(0) 推荐(0) 编辑
摘要:传送门 ovo,这题我一开始竟然没看出来怎么做…… 我们不妨设a>b,那么对于每一个a,所能被看到的点的个数就是phi(a),直接求一下欧拉函数的前缀和就行。之后在对于b>a的时候是同理的,还要×2.最后我们发现(1,1)被算了两次,然后还有(0,1)和(1,0)没算,那就再+1. 欧拉函数要线性筛 阅读全文
posted @ 2018-10-12 08:21 CaptainLi 阅读(115) 评论(0) 推荐(0) 编辑
摘要:传送门 本题的大意是,给定一个数x,求出一个以1开头,x为结尾,中间的每一项大于前一项而且是前一项的倍数,求这样一个序列的最长长度和在最长长度情况下有多少种组合情况。 一开始想了想没什么想法……暴搜?可能T掉。后来发现,为了保证最长的话,肯定每次乘的数都是一个质数,否则如果是一个合数的话,我们可以把 阅读全文
posted @ 2018-10-12 08:14 CaptainLi 阅读(133) 评论(0) 推荐(0) 编辑
摘要:传送门 本题的大意是,每次给定两个int范围内的数l,r,其中r-l <= 1000000,求出[l,r]之内的所有素数距离最近的一对和距离最远的一对。 这个题直接暴力枚举肯定T,于是之后我还有一种沙雕办法,就是先筛出来1~√r之内所有的素数,这样的话就可以来筛区间内的素数了……于是我就又每一个跑了 阅读全文
posted @ 2018-10-12 08:06 CaptainLi 阅读(151) 评论(0) 推荐(0) 编辑
摘要:传送门 题目描述有点复杂,但其实就是要求给定字符串中不相交的回文串个数。 提到不相交的话……我们好像突然想到以前做最长双回文串的时候拼接的这么个思路……所以我们依然可以先用manacher处理出来每个点的最长回文半径,那么在这个点能拓展出来的回文串之内,每一个在中心点前面的点都可以作为一个回文串的开 阅读全文
posted @ 2018-10-12 07:58 CaptainLi 阅读(486) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题好像只要跑一个Manacher就能过…… 要求的女生和谐小群体就是求一个回文串,然后同时要计算这个回文串的子串。这个很简单,我们跑一遍Manacher算出每个点的最长回文半径,然后长度为偶数的忽略(题目要求),奇数的计算一下前缀和,然后对于每一个长度用快速幂计算一下同时k减去回文串个数 阅读全文
posted @ 2018-10-12 07:50 CaptainLi 阅读(152) 评论(0) 推荐(0) 编辑
摘要:传送门 看过题之后,感觉似乎最长双回文串是可以由两个回文串拼接出来的? 于是乎我就有了一种算法!每次用manacher求出当前最大回文半径的同时,处理出每个一个点向右能拓展的最远的回文串长度和向左能拓展的回文串长度,就有如下递推: mr[i-p[i]+1] = max(mr[i-p[i]+1],p[ 阅读全文
posted @ 2018-10-11 00:27 CaptainLi 阅读(291) 评论(0) 推荐(0) 编辑
摘要:传送门 这题果然是AC自动机的大好题! 题目的大意是,给定一个l*c的大网格,每个格子里有一个字符,每个格子可以向八个方向形成字符串,问给定的字符串在哪里能被匹配以及在网格中出现的方向(A代表北,然后依次顺时针转) 解题思路还好想,而且特别暴力:把给定的字符串建成一个AC自动机,之后对于大网格,把八 阅读全文
posted @ 2018-10-11 00:18 CaptainLi 阅读(190) 评论(0) 推荐(0) 编辑
摘要:传送门 Trie树的模板题。我们把每个人都存在Trie树里面,然后再每个人跑一遍即可。注意一个人走过之后要清零,否则的话会被重复计算。 阅读全文
posted @ 2018-10-11 00:10 CaptainLi 阅读(163) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题能想到是trie树+搜索,不过在trie树上dfs确实让人大开眼界…… 具体怎么做呢?首先我们可以按照模式串来建立一棵trie树,不过这样的话空间限制是一个问题。解决的方法是把trie树像建图一样用链式前向星去存储,这样的话就节省了很多空间(具体怎么实现可以看代码,还是很简单的)。之后 阅读全文
posted @ 2018-10-11 00:06 CaptainLi 阅读(186) 评论(0) 推荐(0) 编辑
摘要:传送门 KMP好题啊…… 题中要求我们求出长度不超过原字符串一般的相同的前后缀的个数。其实这个用做前面几道题的思路大致猜测一下……可以发现,我们只要从这个字符串一直往它的next递归,那么我们就可以获得一系列的公共前后缀,而且只要当next的长度<=原长度的一半的时候答案即合法。(不能继续递归,否则 阅读全文
posted @ 2018-10-10 23:57 CaptainLi 阅读(117) 评论(0) 推荐(1) 编辑
摘要:传送门 本题有翻译…… 我一开始又有一种沙雕做法……就是每次暴力匹配next的next……(具体操作很诡异,显然它凉了) 我们后来发现,如果把AB看成一个循环节的话,那就相当于问这个字符串能否被拆成k个AB串+一个AB串的前缀(前缀可以为空) 特别的,他也可以被看作能否拆成k+1个循环节。 我们把字 阅读全文
posted @ 2018-10-10 23:51 CaptainLi 阅读(386) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题的大意是让我们求出一个字符串内的最小循环节,然后输出这个循环节在字符串中出现过的次数。 如何求呢?一开始我有一种极为暴力的思想,就是每次暴力匹配,遇到一个不匹配的就把它压入当前串,从下一位继续开始匹配。 然而这样会被卡……比如说qaqqaqqaq,程序会输出1,而正确的答案是3. 那么 阅读全文
posted @ 2018-10-10 23:34 CaptainLi 阅读(186) 评论(0) 推荐(0) 编辑
摘要:传送门 一道非常不错的欧拉回路(路径)题…… 我们已经知道怎么求欧拉回路(路径)了,但是如果求字典序最小的呢? 求欧拉回路是一个深搜的过程……所以我们不如每次在向下一个点深搜的时候,每次让他先走那个字典序最小的节点,这样我们就能保证字典序最小了。不过实际上这个用邻接表实现会很麻烦。我的实现方法是,对 阅读全文
posted @ 2018-10-10 07:34 CaptainLi 阅读(322) 评论(0) 推荐(0) 编辑
摘要:传送门什么是欧拉回路呢……?欧拉回路的定义就是从vi出发到vi,经过每条边有且只有一次的路径。 就很像一笔画。 欧拉回路的性质较多……定理也很多……直接证明很长……我们还是直接说怎么判定,怎么求欧拉回路吧。 无向图:每个点的度不为奇数。 有向图:每个点的入度和出度相同。 如果不符合以上要求,那么图中 阅读全文
posted @ 2018-10-10 07:24 CaptainLi 阅读(293) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题真是2-SAT好题啊!!卡了我两个点才做完……垃圾POJ还不告诉我哪错了…… 首先我们先花一段时间把题看懂……(其实是翻译一下),之后我们发现因为每个谷仓只能向一个中转点连边,所以他就是一个布尔变量的两个取值。然后对于每个限制条件,其实就是^嘛!我们把他转换为合取范式之后建一下图。不过 阅读全文
posted @ 2018-10-09 16:28 CaptainLi 阅读(146) 评论(0) 推荐(0) 编辑
摘要:传送门 一道非常不错的建图2-SAT。 首先花了几分钟看懂题……毕竟是英文。然后我们发现其实一共只有六种限制,然后我们的目标就是求出一组布尔方程的解使得整个方程值为真。 我们进行一下转换: 1.a&&b=1,这样我们就必须保证a,b同时为真,那就从!a向a建边,!b向b建边。 2.a&&b=0,这样 阅读全文
posted @ 2018-10-09 16:08 CaptainLi 阅读(125) 评论(0) 推荐(0) 编辑
摘要:传送门 稍微复杂一点的2-SAT。 读题之后发现有以下限制: 1.每一对夫妻(包括新郎和新娘)不能坐在桌子的一侧。 2.对于一些给定的非法(自行脑补)的关系,这两个人不能坐在新娘的同一侧。 因为每个人只有两种就坐方式,所以每个人可以被看成一个布尔变量。我们把每一对夫妻拆成两个点,分别表示是否坐在新郎 阅读全文
posted @ 2018-10-09 15:48 CaptainLi 阅读(259) 评论(0) 推荐(0) 编辑
摘要:传送门 这个应该也算是一道2-SAT的入门题了……然后这题的读入倒是挺坑的。 题目描述很长,所以我很慢才提取出所需要的信息……后来发现,对于每种材料,他最后的呈现方式不是满式菜肴就是汉式菜肴,那么其实每一种材料都可以被看做是一个布尔变量,可以自定作为满/汉式为0,另一种为1. 然后发现要求满足所有评 阅读全文
posted @ 2018-10-09 15:33 CaptainLi 阅读(176) 评论(0) 推荐(0) 编辑
摘要:传送门 什么是2-SAT问题呢? 我们先说一下SAT问题。给定一个布尔方程,判断是否存在一组布尔变量的取值方案,使得整个方程式的值为真,这种问题被称为布尔方程的可满足性问题(SAT)。SAT问题被证明是NP完全的,当k > 2的时候我们无法在多项式时间之内求解,但是对于一些特殊的SAT(比如2-SA 阅读全文
posted @ 2018-10-09 15:23 CaptainLi 阅读(2682) 评论(0) 推荐(0) 编辑
摘要:传送门(poj3177) 这道题是Tarjan求桥的模板题。大意是要求在原图上加上数量最少的边,使得整张图成为一个边双联通分量。 具体的做法是,先在图中求出所有的桥,之后把边双联通分量缩成点,这样的话原图就变成了一棵树。之后,我们就在叶子之间加边即可。如何加最少的边呢?好像第一眼看上去,随便在两个叶 阅读全文
posted @ 2018-10-09 00:31 CaptainLi 阅读(1305) 评论(0) 推荐(0) 编辑
摘要:传送门 一道很有意思的题……树上差分系列。 这个题一开始就想着怎么用树剖+线段树求和了,然后一想线段树建树是O(nlogn),然后再乘以一个k的50,好像T了……? 后来发现这个题其实没有任何修改不需要线段树……完全是可以用差分求解的。 这样的话其实预处理就变成了O(nk)的,我们用pre[i][j 阅读全文
posted @ 2018-10-08 22:00 CaptainLi 阅读(238) 评论(0) 推荐(0) 编辑
摘要:传送门 这是一道好题啊……没有换根的话就是树剖板子题,但是加上换根怎么办? 每次暴力重构dfs序?那不T死你……(突然想到自己动态点分治每次重新跑一遍点分治的sd思路) 那么我们肯定是老套路,寻找修改根结点之后的不变量。我们先以最开始给定的根,来确定dfs序和其他一切一切的树剖基本工作。 把路径全部 阅读全文
posted @ 2018-10-08 21:50 CaptainLi 阅读(144) 评论(0) 推荐(0) 编辑
摘要:传送门 这题还是比较考验思维的……也是我太菜了orz。 一开始看到相隔距离为2想到爆搜……?不过估计会T。因为这个图是一棵树,我们发现能贡献联合权值的只有两种,一是祖父和孙子,二是兄弟。祖父和孙子可以直接在dfs的时候计算,这个直接把祖父传进去即可。然后对于每个节点,我们记录其儿子节点的最大值和次大 阅读全文
posted @ 2018-10-08 20:36 CaptainLi 阅读(195) 评论(0) 推荐(0) 编辑
摘要:传送门 树剖板子题……开战的话我们把深度比较深的那个点点权设为1,然后每次在一条路径上query即可。停战的话改回来。 阅读全文
posted @ 2018-10-08 20:30 CaptainLi 阅读(229) 评论(0) 推荐(0) 编辑
摘要:传送门 很有意思的LCA题。 因为这是一棵树,所以树上两条路径有交点的话,一定会满足其中一条路径的LCA在另一条路径上。这个是为什么呢?因为如果一条路径的LCA不在另一条路径上的话,那么其必然没有重合的路径,否则它就不是一棵树了(这样的话相当于路径出现交叉,但是树上只有一条路) 所以我们只需要求出给 阅读全文
posted @ 2018-10-08 20:29 CaptainLi 阅读(142) 评论(0) 推荐(0) 编辑
摘要:今天挂的有点惨…… T1.forging 这道题自己在考试的时候想出来了…… 这题是一个期望递推。我们首先考虑这么一件事,一枚硬币,你抛到正面停止,抛到反面继续抛,问期望抛的次数。是两次。我们假设期望抛x次,因为期望对于后面没有影响,所以有如下方程: x = 0.5 × 0 + 0.5 × x + 阅读全文
posted @ 2018-10-08 09:42 CaptainLi 阅读(151) 评论(0) 推荐(0) 编辑
摘要:补一下之前的总结…… T1.restaurant 这道题还是很简单的嘛,子恒dalao非常良心。我们把招牌菜和所需要的菜品绑定在一起就成了完全背包,然后直接跑一遍完全背包即可。 T2.olefin 这道题当时想了60分暴力,反正就是直接从一个点开始向两边暴搜即可。 然后有20分是可以固输的,还有40 阅读全文
posted @ 2018-10-08 08:57 CaptainLi 阅读(149) 评论(0) 推荐(0) 编辑
摘要:今天仍然是KCZ出题。今天才知道KCZ不仅是WZ地区史上最强选手而且还是ZJ队长?在ZJOI拿到Rank1的男人?%%%%% 今天KCZ出题的依然很强势…… T1.wzoi 期望得分20~100 实际得分100 可能KCZ也想怀念一下自己地区的OI? 这道题一开始的时候想了个贪心,暂时没发现啥反例, 阅读全文
posted @ 2018-10-07 19:23 CaptainLi 阅读(256) 评论(0) 推荐(0) 编辑
摘要:今天迎来了WZZX的模拟。打开pdf的时候我特别震惊,出题的竟然是神仙KCZ!没错,就是那个活跃于各大OJ,在各大OJ排名靠前(LOJ Rank1),NOI2018 Rank16进队的kczno1!!!(无限膜拜%%%) 然而KCZ神仙出的题使我挂的特别惨…… T1.rps 期望得分100,实际得分 阅读全文
posted @ 2018-10-06 21:30 CaptainLi 阅读(339) 评论(0) 推荐(0) 编辑
摘要:Joseph问题似乎是入门题,就是那个报数出圈的问题,不过它暴力模拟的复杂度是O(nm)的,如果题目的数据范围达到了30000,那就超时了。怎么用线段树维护呢? 我们可以这么考虑,每次我们其实要查询在当前这个点过了m个人是哪一个人。我们需要维护一下当前序列中一共有多少人,还需要维护每个人实际的位置在 阅读全文
posted @ 2018-10-05 23:50 CaptainLi 阅读(203) 评论(0) 推荐(0) 编辑
摘要:传送门 要做这道题我们需要两个前置技能:二维线段树和标记永久化。 我们使用一维线段树来维护一个序列,那我们想维护一个矩阵的时候,二维线段树应运而生。 二维线段树好像有两种实现方法。一是对于每一个节点(x轴上的每个点)在里面再开一棵线段树(表示一个y轴)(这好像更多人管他叫树套树做法?) 第二个是把它 阅读全文
posted @ 2018-10-05 23:43 CaptainLi 阅读(263) 评论(0) 推荐(0) 编辑
摘要:今天的题目难度比昨天小一些,但是太菜的我还是啥也不会。 今天的出题大佬是Heaplex,他的题目中倒是出现了ZZQ,不知道是否是本人? T1.a 期望得分30,实际得分30 这道题开场发现好像有什么小小的规律,而且既然数据范围都到2*10^6了,这基本就是明示你要是用O(n)的算法了。 一开始我想了 阅读全文
posted @ 2018-10-05 23:16 CaptainLi 阅读(170) 评论(0) 推荐(0) 编辑
摘要:Tarjan求LCA是一种离线的LCA求法,它需要先知道所有的询问,之后通过dfs和并查集维护以求出LCA,这是一种线性的做法,如果有n个节点m次询问,那么复杂度为O(n+m)。 具体做法怎么做呢?其实就是dfs+并查集。 我们首先用链式前向星去存这棵树,存所有的询问关系(为什么一会再说),注意询问 阅读全文
posted @ 2018-10-05 00:17 CaptainLi 阅读(603) 评论(0) 推荐(0) 编辑
摘要:传送门 好的,你又看到了一道题目和题目描述无关的题。 (这题啥数据结构也没用) 差分大法真心好啊!既然题目说了大量的查询都在最后,拿他这就是明示你前面暴力后面O(1)。 我们对于每次加使用差分维护,前面的查询更为暴力,我们直接从1扫到r,每次加上差分数组,同时计算这个值是否在给定范围之内即可。 最后 阅读全文
posted @ 2018-10-04 23:11 CaptainLi 阅读(121) 评论(0) 推荐(0) 编辑
摘要:传送门 这是一道非常优秀的差分题。听说过二阶差分维护吗? 我们在区间加的时候是可以用差分维护的,不过这次我们要往里面加一个等差数列,这个维护起来就稍微麻烦了一点。 我的想法比较复杂,就是先用第一阶差分去维护公差,在l+1和r的位置进行修改,前者加公差后者减公差。然后我们同时要记录首项和末项相反数,然 阅读全文
posted @ 2018-10-04 23:06 CaptainLi 阅读(330) 评论(0) 推荐(0) 编辑
摘要:T1.game 【问题描述】 LZK发明一个矩阵游戏,大家一起来玩玩吧,有一个N行M列的矩阵。第一行的数字是1,2,…M,第二行的数字是M+1,M+2…2*M,以此类推,第N行的数字是(N-1)*M+1,(N-1)*M+2…N*M。 例如,N=3,M=4的矩阵是这样的: 1 2 3 4 5 6 7 阅读全文
posted @ 2018-10-04 21:03 CaptainLi 阅读(722) 评论(1) 推荐(1) 编辑
摘要:今天轮到FZSZ出题了,这可是连续两年捧杯NOI的学校了…… 可想而知今天题难度有多大……不过似乎还要庆幸出题的是一位叫Anzhe Wang 的大神而不是fjzzq? T1.permutation 期望得分40,实际得分40. 这道题看起来很像是组合题……想起昨天的组合题,想试试能不能用类似的做法去 阅读全文
posted @ 2018-10-04 20:54 CaptainLi 阅读(326) 评论(0) 推荐(0) 编辑
摘要:国庆模拟真愉快,真愉快!这只是个开始,之后我们还有4天连续的国庆模拟呢!而且可能不会像今天这么好改了orz。 来吧,我们来看看这些题。 T1.matrix 这道题考试的时候只想到了60分的暴力维护……就是只开一维差分,另一维直接暴力去修改……,不过这样的复杂度是O(np)的,这个肯定会超时。 然后大 阅读全文
posted @ 2018-10-04 00:49 CaptainLi 阅读(138) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题一开始看……能想出来用splay和并查集维护,不过,怎么把两棵splay合并呢……?暴力拆开一个一个合并? 后来发现真的是这样……不过其实是启发式合并,也就是每次我们合并两棵splay的时候,总是把小的那棵合并到大的那棵上面。这样的话就能保证每个点最多之被合并logn次(别问我为啥,我 阅读全文
posted @ 2018-10-02 22:31 CaptainLi 阅读(136) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题还是相当的有意思的。 一开始我有个非常沙雕的想法。既然他要求在愿序列后面插值,这么优秀的操作,当然是要用vector实现啦!然后每次往里插值都会影响到其前后一位,直接这么更新就完事啦!下面那一项用平衡树维护每次找一下前驱后继,更新差值的最小值就好啦! 然后愉快的交上去爆零了…… 回来一 阅读全文
posted @ 2018-10-02 22:26 CaptainLi 阅读(144) 评论(0) 推荐(0) 编辑
摘要:传送门 这道题比上一道稍微复杂那么一些……不过大体上还是很容易的! 没有必要建立两棵splay,一棵就够了。我们可以记录一下当前在收养场的情况,如果cnt>0说明宠物多,否则人多,然后挨个判断即可。 如果宠物多还来宠物就直接插入,人也同理。 反之,如果宠物多了之后来人了,那就在这堆宠物中找其对应值的 阅读全文
posted @ 2018-10-02 22:18 CaptainLi 阅读(173) 评论(0) 推荐(0) 编辑
摘要:传送门 学了splay,我们来做一做splay的裸题吧! 这道题还是十分的简单的。首先第一天的波动值就是当天的营业额,然后其他的,每次就直接在splay里面查找前驱后继,把与当前值差值绝对值小的那个加到答案里面就行。哦,还有就是如果已经存在过这个值那么+0即可(我的找前驱后继好像不支持相同的数……所 阅读全文
posted @ 2018-10-02 22:14 CaptainLi 阅读(164) 评论(0) 推荐(0) 编辑
摘要:同样的,我们以一道题来引入。 传送门 这次的任务比较少,只要求进行区间反转。区间反转? 这个好像用啥都是O(n)的吧……(这次vector,set也救不了你了) 我们来使用splay解决这个问题。我们既然要反转一段区间,那我们肯定要把这个区间弄到一个地方。我们想一下上次所讲的删除操作,我们把要删除的 阅读全文
posted @ 2018-10-01 11:47 CaptainLi 阅读(1214) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示