CodeForces
文章平均质量分 81
alpc_qleonardo
这个作者很懒,什么都没留下…
展开
-
CodeForces - 1264D2 Beautiful Bracket Sequence(生成函数 + 组合计数)
大致题意给你一个由左右括号和?组成的字符串,现在?可以替换成左右括号的任意一个。定义一个字符串的深度为最大的左右括号嵌套数。现在问,所有的替换方案产生的字符串的深度总和是多少。做法如果有nnn括号,那么就会有2n2^n2n个字符串,显然直接计算不可以。考虑一个字符为 ‘(’ 的位置iii,如果他要对最后的深度产生影响,当且仅当它和它左边的 ‘(’ 数目小于等于它右边的 ‘)’ 数目。那...原创 2019-12-12 11:18:49 · 828 阅读 · 0 评论 -
CodeForces - 1073G Yet Another LCP Problem(后缀数组 + 单调栈 / 分治)
大致题意给你一个字符串SSS,然后有qqq个询问。对于第iii个询问,给出两个数字kik_iki和lil_ili序列a1,a2,...,akia_1,a_2,...,a_{k_i}a1,a2,...,aki和b1,b2,...,blib_1,b_2,...,b_{l_i}b1,b2,...,bli,让你求∑i=1i=k∑j=1j=lLCP(s[ai…n],s[bj…n]...原创 2019-12-03 20:05:11 · 560 阅读 · 0 评论 -
CodeForces - 1218D Xor Spanning Tree(仙人掌图找环 + FWT)
大致题意给你一个包含最多42个环的仙人掌图,让你找最小异或和生成树,并且输出方案数。做法由于只有42个环,所以我们可以暴力找出每一个环。由于是要找生成树,所以肯定是每个环中选择一条边去掉,然后把这些边的权值异或起来即可。考虑如果某个环有x个点,那么最多就会有x个不同的异或和数值,我们可以把这些数值用一个多项式记下来,这样总共就有42个多项式。然后对于不在环上的边,直接求出异或和,也用...原创 2019-11-29 11:21:04 · 546 阅读 · 0 评论 -
CodeForces - 1261F Xor-Set(动态开点线段树 + dfs)
大致题意给你AAA、BBB两个集合,两个集合里面的数字是由很多个区间构成的。现在让你求∑i∈A,j∈Bi⊕j\sum_{i \in A,j \in B}i\oplus ji∈A,j∈B∑i⊕j其中同样的异或结果只计算一次。解法显然我们要按位来考虑,对于每一位考虑异或之后可以取的数值,然后对低位就会产生对应的贡献。具体来说,如果第ddd位可以取1,那么第ddd位下面的所有位不论结果取什...原创 2019-11-28 15:23:58 · 403 阅读 · 1 评论 -
CodeForces - 1254D Tree Queries(树链剖分 + 树状数组 + 组合计数)
题意两种操作。第一种操作(v,d)(v,d)(v,d),首先随机选择一个点rrr,然后把所有满足路径<u,r><u,r><u,r>经过vvv的uuu点都加上权值d。第二种操作询问点xxx期望权值。做法显然要考虑每个询问对于单个点的贡献。以样例为例,对于每一个操作(v,d)(v,d)(v,d),考虑对节点2产生的贡献,可以分为两种情况。当vvv在节...原创 2019-11-20 11:51:02 · 941 阅读 · 0 评论 -
CodeForces - 235E Number Challenge(莫比乌斯反演 + 数论分块)
CodeForces - 235E Number Challenge大致题意做法如何插入一段漂亮的代码片KaTeX数学公式大致题意计算如下式子做法如果只是两个数字乘积的约数个数,那么有公式:σ(ij)=∑a∣i∑b∣j[(a,b)=1]\sigma(ij)=\sum_{a|i} \sum_{b|j}[(a,b)=1]σ(ij)=a∣i∑b∣j∑[(a,b)=1]当有三个数字...原创 2019-10-31 18:05:57 · 328 阅读 · 0 评论 -
CodeForces 1225E Rock Is Push(dp + 前缀和优化)
大致题意:一个迷宫,里面有很多箱子,你可以向右或者向下走。当你遇到一个或者多个箱子的时候,你可以把箱子往你移动的方向推动,但是不能把箱子推出到墙壁外面。你从左上角出发,问你有多少种方法到右下角。考虑如果没有箱子,那么就是一个很简单的递推问题,对于一个格子,要么从上面要么从左边来。有箱子的话,由于箱子可以被推动而且不能推到外面,所以我们要考虑是否可以从上面或者下面过来。还...原创 2019-10-26 23:53:55 · 971 阅读 · 0 评论 -
CodeForces 1251F Red-White Fence(NTT + 组合计数)
大致题意:给你一堆木条,一些是白色的,一些是红色的。然后要把这些木条拼到一起构成长度先递增后递减的样子,然后要求红色木条长度最长,问最后使得这个拼凑出来的多边形的周长为Qi的方案数是多少。首先,很显然周长相当于是2*(n+L),其中这个L表示最长的红色木条的长度,然后红色木条的只有最多5个,所以我们枚举这个红色木条相当于就知道了这个n。即只需要计算长度为n的先上升后...原创 2019-10-26 09:37:37 · 889 阅读 · 0 评论 -
CodeForces 1045B Space Isaac(推导 + Manacher)
这题居然是字符串题!居然是字符串题!字符串题!大致题意:总共有M个物品,编号从0~M-1。总共有两个背包,告诉你第一个背包有N个物品,编号分别是a1,a2,...,an。剩下的物品都在第二个背包。现在从第一个背包里面拿出任意一个物品,其编号是x,从第二个背包里面拿出一个物品,其编号是y,计算出z=(x+y)%M。我们知道总共有N*(M-N)种取法,考虑完这么多种取法后,z始...原创 2018-10-21 15:55:08 · 375 阅读 · 0 评论 -
计蒜客 2018ICPC徐州站/gym 102012G Rikka with Intersection(组合计数 + 树链剖分 + 树状数组)
大致题意:给你一个包含n个点的树和m条路径。现在让你从这m条路径中选择k条路,使得这k条路径一定有至少一个公共交点,问选出这k条路径的方案数是多少。最朴素的想法就是,每次查看一个点的贡献,也就是枚举这个公共点,然后看有多少个路径经过这个点,组合数求一下即可。但是这个错误也是很明显的,因为有可能同样一批路径,会有超过一个的公共点,这样的话就会重复计算。显然,如果有多个公共点的话,...原创 2018-12-02 22:47:15 · 881 阅读 · 0 评论 -
CodeForces 438E The Child and Binary Tree(DP + 生成函数 + 多项式模运算)
大致题意:给定一个集合{Cn},一棵二叉树上的所有节点的点权值从这个集合中选取。现在给定一个m,问对于1..m中的每一个数字i,权值和恰好为i的不同的二叉树的个数有多少个。这里形态不同但点权集合的二叉树视为两种方案。与前面做的题目类似,这种题目我们还是用dp的思维去考虑。令fi表示权值和为i的二叉树的个数。那么考虑增加一个点x,这个点的权值可以取i,Ci表示数值i在初始...原创 2018-12-26 22:53:00 · 293 阅读 · 0 评论 -
CodeForces 891E Lust(生成函数)
大致题意:给出一个数列{an},每次随机的选择一个数字ai,产生出了ai之外其余所有数字之积的贡献,然后ai减一。现在进行k次这样的操作,问最后者k次操作产生的贡献之和是多少。这个贡献看起来很复杂,但是实际上,我们可以把每一次操作的贡献,看作是操作前后所有数字的乘积之差。具体推导如下: ...原创 2018-12-27 11:09:26 · 654 阅读 · 1 评论 -
CodeForces 1114F Please, another Queries on Array?(线段树 + 状态压缩 + 数论)
大致题意:给你一长度为n的序列,和q个操作。一个是区间乘以某个数字,另一个是查询区间积的欧拉函数对1e9+7取模的结果。出了n和q,这里所有出现的数字都是小于300的。这里如果直接做,显然是不行的,因为欧拉函数虽然具有积性,但是并不能够取模,意味着不能直接保存区间积。同时,欧拉函数不具有完全积性,当gcd不为1的时候,不是直接相乘。但是这里有一个很重要的条件,即出现的每个数...原创 2019-02-13 11:15:28 · 315 阅读 · 0 评论 -
CodeForces 1045G AI robots(CDQ分治 + 树状数组 + 单调队列)
大致题意:有很多个机器人,他们要相互交流有一些限制条件。首先是,两个人要相互能够能够看到;其次,两个人的智商的差不超过K。现在给出每个机器人的视力范围和他们的智商,现在问你总共有多少对机器人能够相互交流。首先来看下总共有多少个限制条件。由于是要求双方都能够看到,所以显然是要按照视野半径去排序的。然后要求两个人的智商差要在一定的范围内的,所以也要按照智商去排序。另外还要跟自己的位...原创 2018-10-21 15:16:45 · 433 阅读 · 0 评论 -
CodeForces 1051E Vasya and Big Integers(dp + 树状数组 + 字符串哈希/后缀数组)
大致题意:给你一个很大的数字,然后你可以把这个数字拆分成为任意多个部分,要求每一个部分的数字大小要在一个区间内,问有多少种拆分方式。由于是给定数字的拆分,所以区间对于拆分的限制,仅仅是限于长度。也即如果拆分的部分的长度介于上界和下界的长度之间,那么直接查分即可。如果长度等于上界或者下界,那么需要按位比较于界限的大小。可以看到,这个过程相当于一个转移的过程,很自然而然的想到用...原创 2018-09-24 12:33:42 · 631 阅读 · 0 评论 -
CodeForces 1023F Mobile Phone Network(并查集 + 最小生成树)
大致题意:你和你的竞争对手一起竞争去铺设一个网络,这个网络有n个节点。然后你的竞争对手已经给出了他的方案。他给出了他要建立的所有连线以及每根连线的代价。然后你已经决定了你的连线方案,但是每根线的定价还没有确定。当你给出定价之后,客户会在你们两个提供的所有连线中选择n-1条线,使得网络连通并且代价最小。现在,你想要让客户把你提供的所有线路都选上,问你该如何定价使得在满足你所有的线路都被选中的同时,自己的收益最大,也即定价总和最高。当时比赛的时候没有时间看这道题,赛后自己想了想就知道了做法。但是看了别人的代码,原创 2018-08-18 17:43:50 · 737 阅读 · 0 评论 -
CodeForces 1000F One Occurrence( 莫队解法)
题意就不再次陈述了…… 其实这题首先想到的还是用莫队伍去水过,但是这一水到也是学到了东西。首先说一说莫队的朴素做法。用一个set记录当前包含区间的出现次数为一次的数字,然后每次改变区间的时候维护每个数字出现的次数t[i]还有集合set,可以用unordered_set加速。但是即便如此还是TLE,而且不是一点。 分析原因。首先,用set的好处就是最后求解答案的时候很方便,只需要输出set里面随便一个数字即可,但区间变动频繁,即便使用了unordered_set,时间也会在原创 2018-07-07 09:58:26 · 710 阅读 · 0 评论 -
CodeForces 1000F One Occurrence( 离线处理+线段树解法)
大致题意:给你一个固定的数列a,然后q个询问,每个询问给出一个区间,问你区间内是否有恰好出现一次的数字,如果有输出任意一个,否则输出0。 这题主要方法就是仿照17年HDU多校有一道题的做法,HDU 6070。其实也只是用了其中的一个思想,也即用每一个数字把区间分段。对于每一个区间[1,r]中的最右边的一个数字i,我都可以记录一个pos[i],表示数字i在区间[1,r]中上一个出现的位置。这里最右边指的是,同一个数字i,可能在区间中出现多次,最后那次是我们想要的。求出了这个pos,我们可以发原创 2018-07-07 09:25:22 · 1127 阅读 · 0 评论 -
CodeForces 986C AND Graph(构图+DFS)
大致题意:给你m个数字,这m个数字都小于2^n。对于任意的数字i、j,如果i&j==0,那么连接i与j,现在问最后连完所有的编后,总共有多少个连通块。 直接去考虑还是不太好想,还是从数据范围出发。n为22,2^n约等于400W,所以说大致需要一个O(m*2^n)的算法。我们考虑一下构图,对于每一个数字x,我们知道~x表示x的补集,二者的与值为0,显然把~x的部分1换成0再与x按位与的值也是0。那么对应回来如果x|(1<<k)与y的结果为0,那么x与y的结果也为0,其中k表示原创 2018-05-31 16:01:12 · 796 阅读 · 0 评论 -
CodeForces 981F Round Marriage(二分答案+贪心)
大致题意:给你n个新郎和新娘以及他们所在的位置,现在要两两配对,配对有个代价,就是二者的距离。现在问,这n对新人中,最大代价的最小值是多少。 这体显然是一个二分答案,二分最大代价最小值,再判断是否可行。那么问题的 关键就是如何判断问题是否可行。数据范围是2e5,所以要求我们要在O(N)的复杂度内完成这个判断。对于每一对人i和j,他们的代价是min(|a[i]-b[j]|,L-|a[i]-b[j]|),分细一点可以把情况分为两种。当a[i]>b[j]时,代价为min(a[i]-b[j]原创 2018-05-31 09:53:59 · 998 阅读 · 1 评论 -
CodeForces 1096F Inversion Expection(树状数组 + DP + 组合计数)
好久没有做一道这么对胃口的题了……大致题意:给出一个1..n的全排列,但是其中有些数字被替换成了-1。我们设给出数列中-1的个数为x,那么原来的全排列就有x!种,而且告诉你取这x!种每一种的概率相等,现在问你原排列的逆序对的期望是多少。很显然,这个数列分为两个部分,一个部分是已经给出的正整数,另一部分是-1。那么相应的,逆序对可以分为三个部分,一个是正整数部分内部逆序对...原创 2018-12-29 16:40:51 · 457 阅读 · 0 评论 -
CodeForces 1106F Lunar New Year and a Recursive Sequence(BSGS + 原根 + 矩阵类)
大致题意:告诉你F的递推式,与前K个数字有关。但是只告诉你初始前K-1个项的值和第N项的值,让你求是否存在一个满足条件的第K项。首先,由于这个递推式是: 这个式子是前K项的乘积,不方便我们用矩阵快速幂取递推,而本题n最大可以到1e9且K最大为100,根据复杂...原创 2019-02-01 21:17:14 · 776 阅读 · 0 评论 -
CodeForces 1238E Keyboard Purchase(状态压缩dp)
大致题意:给你一个由最多m种字符构成的长度为L的字符串。定义两个相邻字符的代价之差是两个字符对应位置的绝对值,现在让你找到这m种字符的一种排列方式,使得总的代价之和最小,问最小代价是多少。很神奇的一种状压姿势。我们考虑最好的情况下肯定是让任意两个字符位置之差为1,但是实际上相邻的最多只有两个,不能所有的位置之差都为1。但是我们在做的时候,可以维护当前可以取的最小距离。初...原创 2019-10-09 11:07:47 · 742 阅读 · 0 评论 -
CodeForces 1217E Sum Queries?(线段树)
打比赛的时候,最后两分钟发现是INF设小了,改了之后没来得及交上去比赛就结束了。。。大致题意:有n个数字,m个操作。操作分为两种,1是修改某个数字,2是询问某个区间内是否存在一个集合,使得集合内数字的和存在至少一位,在所有的集合内数字对应位中都没有出现过,如果有输出最小的,否则输出-1。看起来好难的样子,要求的是一个集合而不是连续区间,然后判断条件是和的每一位数字,而且...原创 2019-09-06 08:22:59 · 347 阅读 · 0 评论 -
CodeForces 1197E Culture Code(最短路/dp)
大致题意:给你n个俄罗斯套娃,告诉你每个套娃内外的半径。问你这里面有多少个集合,可以使得外层不能再套别的套娃而且里面剩余的空间最小。这题的话想到思路还是不难的,无非是套娃的嵌套关系。如果我们找到所有的嵌套关系,我们可以考虑建立一个有向带权图。对于任意的边<u,v,w>表示第u个套娃可以套第v个套娃而且套了的话中间缝隙为w。如此,我们只需要对于这个带权有向图求一下...原创 2019-07-23 13:06:44 · 527 阅读 · 0 评论 -
CodeForces 1119F Niyaz and Small Degrees(树形dp + multiset)
大致题意:一棵树,每条边都有权值。你可以把一些边给删除,现在问你,当满足所有点的度都小于等于x的时候,删除的边的权值和最小是多少。要求输出x从0到n-1的所有结果。这题是最近遇到过的最麻烦的题,太菜了,做了好久。。。一开始的想法,试图去贪心,寻找一种策略能够保证删边的时候权值和最小。然而显然并没有这种策略。然后考虑x从大到小顺序处理,每次只处理度数为当前x的点。对于当前...原创 2019-04-13 17:06:25 · 409 阅读 · 0 评论 -
CodeForces 1132G Greedy Subsequences(线段树 + LIS)
大致题意:求所有长度为K的连续子区间的最长上升子串长度。我们知道,朴素的LIS问题有O(nlogn)的解法,但是如果有很多个区间,显然也是做不了的。这里我们学习到了一种解决LIS问题的新姿势。我们考虑每一个数字a[i],令nxt[i]表示它右边第一个比它大的数字的位置。这样每一个节点要么只有一个nxt[i],要么没有nxt[i]。如果我们把每一个i与nxt[i]连一条边...原创 2019-04-11 10:20:50 · 325 阅读 · 0 评论 -
CodeForces 1140E Palindrome-less Arrays(DP + 思维)
大致题意:给你一个序列,数字有-1或者1到k构成。其中的-1需要用1到k中任意一个数字替代,现在定义一个坏序列的标准是把-1替代完毕后,没有长度大于1的奇回文串。问你在所有的替代方案中,最后能得到不是坏序列的方案数是多少。这里的一个奇回文串,看似很复杂不知道应该怎么做,但是其实很容易发现,所有的奇回文串必定包含一个长度为3的回文串。换句话说,含有长度为3的回文串的就是坏序列...原创 2019-03-26 23:35:40 · 471 阅读 · 0 评论 -
CodeForces 1139D Steps to One(期望DP + 容斥原理)
大致题意:一个数列,一开始是空的,每次往他最后一个位置随机的加上一个[1,m]范围内的数字,然后对当前数列所有的数字求gcd,如果gcd不为1,那么就继续添加,否则停止。问最后这个数列期望的长度。这是一个比较明显的期望dp。我们考虑dp[i]表示初始gcd为i的时候也即数列的第一个数字为i的时候,这个数列的期望长度。显然,有转移方程: ...原创 2019-03-23 20:49:14 · 469 阅读 · 5 评论 -
CodeForces 1140F Extending Set of Points(线段树 + 并查集 + DFS)
大致题意:每个时刻往集合S里面添加或者删除一个点,然后每个时刻输出集合E(S)的大小。所谓E(S)就是对S进行拓展,如果S中存在(x1,y1)(x2,y2)(x1,y2)那么把(x2,y1)加入集合,一直到不能新加入点为止。我们仔细分析这个点加入的条件,很容易可以发现,对于一个点(x,y),相当于把第x行和第y列给合并。最后的答案就是每个连通块内的行数与列数的乘积和。所以我...原创 2019-04-04 08:39:19 · 494 阅读 · 0 评论 -
CodeForces 932G Palindrome Partition(回文自动机 + dp)
大致题意:给你一个字符串,让你把它分为k个部分,k为偶数。设这k个部分分别表示为s1,s2,...,sk,问使得对于每一个i都满足的划分方法有多少种,也即使得这k个部分构成回文的方法有多少种。由于是回文,我们当然要想办法往回文上面去靠。根据题意有我们假设第一段长度为j,令有如果我们把排列方式换一下,令 我们可以发现,S'恰好是一个回文串。那么我们推广一下,我...原创 2019-02-27 23:52:30 · 529 阅读 · 0 评论 -
CodeForces 1111E Tree(LCA + DP +树状数组)
大致题意:给你一棵包含n个节点的无根树,然后q个询问,每个询问给出一系列点和m、r。表示问你,把根设置为r的情况下,把给定点分为至多m部分,要求每一部分至少一个给定点,且一个部分中不能出现两个给定点一个点是另一个点的祖先,问划分的方案数。还是一样,我们先简化问题,如果这时一个有根树,然后每次是固定根去询问。那么,令dp[i][j]表示只考虑给定点的前i个点,分为j个部分...原创 2019-02-09 16:40:53 · 543 阅读 · 2 评论 -
CodeForces 1110F Nearest Leaf(离线处理 + 线段树)
大致题意:给你一棵n个节点的带有边权的树,给你q个询问。每个询问给出一个点x和一个区间[l,r],问在dfs序在这个区间的点中,距离x最近的叶子节点距离x的距离是多少。首先,我们考虑,如果每个询问的点x都是根,那么我们每次寻找一个距离最近的叶子节点的距离,相当于在这个区间中找叶子节点的最小值。因此,很自然而然的,我们可以把根距离每个叶子节点的距离放到线段树里面,那么...原创 2019-02-09 15:54:56 · 461 阅读 · 0 评论 -
CodeForces 981E Bookshelves(dp+思维)
大致题意:给你q个操作和一个长度为n的序列,初始状态序列全为0。每个操作是对区间[l,r]增加v。然后,现在你可以只选择这q个操作中的任意几个进行操作,问你操作完毕之后整个序列中最大值是否可以是1~n,输出可以的数字。也就是说,对于每一个数字i,看能否找到一个操作的子集,使得操作完毕后区间最大值为i。 可以说刚读完题的时候没有任何想法,完全不知道怎么下手,但是数据范围给了我们提示,n、q分别是1e4级别,那么可以考虑O(nq)的算法。首先,对于询问,我们按照操作左端点l进行排序。其次,再原创 2018-05-28 23:22:48 · 379 阅读 · 0 评论 -
CodeForces 981D Bookshelves(dp+贪心)
大致题意:给你n本书,要求你按顺序把这些书放到m个书架上面,每个书架的权值定义为书架内所有书的权值和。现在要求求这些书架权值的按位与操作和最大。 考虑二进制的性质,最高位如果取了,肯定比不取的值大。因此,如果存在一种情况使得二进制下,某一个高位为1,那么最后结果肯定大于等于这一位为1的数字。然后,最后结果显然是可以按位分解的,具有叠加性,例如样例24=(11000)2,那么一定能够拼凑出8和16。于是我们就可以考虑从高位开始贪心累加,如果令答案这一位为1可以找到可行解,那么把这一位贡献加入原创 2018-05-28 11:25:39 · 835 阅读 · 0 评论 -
CodeForces 896D Nephren Runs a Cinema(组合计数+数论+数形结合)
非常巧妙的一道综合数学题…… 大致题意:电影院有三种方式买票,要么花五十元买票进去,要么用卡不用钱,要么给一百元然后找五十元。然后一开始卖票的人没有钱找,然后问你总共有多少种方案,可以使得卖票的人不会出现没钱可找,且最后剩余的50元钱的张数在区间[l,r]之间。 首先,我们考虑简化版的问题,先不考虑用卡消费的方式,而且最后剩余的五十元钱张数为0。在这种情况下,依稀记得哪个学长讲过,对应可以转化到坐标轴上,人初始时在原点。然后五十元的相当于向前向上走一个单位,然后一百元对应向前原创 2017-12-10 01:14:12 · 704 阅读 · 0 评论 -
CodeForces 551E GukiZ and GukiZiana(分块算法)
事实证明,有些时候分块水不一定真的是水,它的水反而可以解决一些数据结构处理不了的问题。 这道题很明显的一道数据结构,大致题意:两种操作,一是区间修改,二是查询整个区间中等于某一个数字的值出现的最大位置差,如果不存在则输出-1。 第一个操作显然用线段树可以实现,然后关于第二个操作,我想起来之前有一道题目,转换到最后是找区间中第一个小于等于某一个数字x的位置。当时的话也是利用二分的思想。对于一个区间,我判断其最小值是否小于x,如果小于,那么说明答案可以在该区间内,又由于要是第一个原创 2017-12-01 11:43:21 · 354 阅读 · 0 评论 -
Code Forces 589G Hiring(树状数组)
果然三个小时对于我们来说还是不够把中档以下的题目做完…… 此题其实也是一道不太难想到的一个中档题。大致题意:给你n个人,然后每一个人有每天工作的准备时间和他们的这几天要工作的总时长。然后他们只有m天的时间完成这个总时长,而且每天有限制的工作时间ti。对于这个工作准备时间,要计算在每天的工作时间以内。对于这点,比如说某个人准备时间为2,然后某天时间限制为5,那么有效工作时间就是3,如果时间限制小于准备时间,那么这天就没有有效工作时间。最后问每个人最早能在哪一天完成工作总时长。原创 2017-11-17 23:51:38 · 290 阅读 · 0 评论 -
CodeForces 858D Polycarp's phone book(Trie)
大致题意,给出很多个号码,然后要你对每一个号码找出一个长度最短的识别码,即长度最短的同时,只有那一个电话包含这个识别码。 这里队友机智无比,直接想到用字典树搞。由于号码最多只有10位,所以对于每一个号码,在字典树里面分别加入第0位~最后一位,第1位~最后一位,第2位~最后一位……这样解决了字典树只能一定要从头开始的缺陷。如此一来对于一个号码的任意一个小段,我们都可以对应在字典树中找到一个从根开始的路径与之对应。那么我们要做的就是统计一直到任意小段的最后一位的节点,有多少个这样的子串包含这个小原创 2017-10-02 18:56:50 · 507 阅读 · 0 评论 -
CodeForces 865D Buy Low Sell High(思维)
我的想法,贪心。首先给那些价格低的点从左往右分配一个卖出点,然后用线段树维护。然而WA……因为后来发现很显然,如果我一味的用最小匹配最大,有可能导致一些点找不到匹配的卖出点,而实际上最优解可能这个点可以匹配卖出点。这样就比较麻烦了。 直到看了看其他dalao的代码。一个化整为零的方法。对于每一个价格,我不管具体方案是什么,我只要能计算出最后的最优解即可。那么我们可以先强行在所有时刻买入,然后对应每个时刻在优先队列里面加入两个价值的相反数。对于每一个时刻,我选取一个队列中最大的负数相加。如果原创 2017-10-04 21:00:14 · 2583 阅读 · 2 评论