摘要: 题意和分析在之前的链接中有:https://www.cnblogs.com/pkgunboat/p/10160741.html 之前补题用三维偏序的cdq的分治A了这道题,但是感觉就算比赛再次遇到类似的题可能写不出cdq的代码。。。这次算是自己独立A的了。。。 如果这题不卡常的话,什么树套什么树都可 阅读全文
posted @ 2019-01-04 16:47 维和战艇机 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 题意:给n!个n的排列,按字典序从小到大连成一条序列,例如3的情况为:[1,2,3, 1,3,2, 2,1,3 ,2,3,1 ,3,1,2 ,3,2,1],问其中长度为n,且和为sum=n*(n+1)/2的序列有多少个? 思路(官方题解):我们考虑一下next_perumation函数产生字典序递增 阅读全文
posted @ 2018-12-31 11:34 维和战艇机 阅读(773) 评论(0) 推荐(1) 编辑
摘要: 题意:n个人站成一排,初始时刻每个人手中都有一个图案,可能是石头,剪刀,布3个中的1种,之后会随机选取相邻的两个人玩石头剪刀布的游戏,输的人会离开(如果两个人图案相同,则随机选择一个人离开)。执行(n-1)次操作剩下的最后一个人是冠军,问有多少个人可能成为最后的冠军?并且还有m次修改,每次修改会改变 阅读全文
posted @ 2018-12-26 15:04 维和战艇机 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个n*m的矩阵,需要在不改变每一行和每一列的大小关系的情况下压缩一个矩阵,压缩后的矩阵所有数的总和尽量的小。 思路:我们有这样的初步设想:对于在一行或一列的数x,y,若x<y,则建立一条x的位置到y的位置的边。之后进行拓扑排序的DP即可。然而会被卡边数卡掉,所以需要其它的解法。 新思路: 阅读全文
posted @ 2018-12-25 22:40 维和战艇机 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 题意:给你两个数组a和b,a,b都是一个n的全排列;有两种操作:一种是询问区间在数组a的区间[l1,r1]和数组b的区间[l2,r2]出现了多少相同的数字,另一种是交换数组b中x位置和y位置的数字。 思路:我们可以建立数组b对数组a的映射mp,mp[x]表示数组b中x位置的数在数组a中出现的位置,这 阅读全文
posted @ 2018-12-22 13:07 维和战艇机 阅读(400) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个数组,可以从中选区若干种元素,但每种元素选区的个数前一种必须是后一种的2倍,选区的任意2种元素不能相同,问可以选取最多的元素个数是多少? 思路1(乱搞):记录一下每种元素的个数,然后暴力枚举最少的元素个数,计算符合题意的最优情况。 代码: 思路2:DP 设dp[i]为最少元素个数为i时 阅读全文
posted @ 2018-11-17 17:58 维和战艇机 阅读(414) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个n个元素的数组,从中选取x个元素,并且要保证任意的m个位置中必须至少有一个元素被选中,问选中元素的和最大可以是多少? F1 n,m,x到200 F2 n,m,x到5000。 思路1:设dp[i][j]为选择i位置的元素,并且包括i位置已经选择了j个元素,所有选中元素的最大和。 那么为了 阅读全文
posted @ 2018-11-17 17:45 维和战艇机 阅读(432) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一颗以1为根节点的树,初始所有节点的权值为0,然后有m个操作,每个操作将点x的所有距离不超过d的节点权值+1,问经过m次操作后每个节点权值是多少? 思路:如果是一个序列,就可以直接用树状数组做,但这是一颗树,所以我们可以想办法把它转化成序列。我们可以先求出每个节点的dfs序,以及深度和子树 阅读全文
posted @ 2018-11-13 23:26 维和战艇机 阅读(380) 评论(0) 推荐(0) 编辑
摘要: 用递推的方式写的写挂了,而如果用组合数又不会高精度除法,偶然看到了别人的只用高精度乘低精度求组合数的方法,记录一下 阅读全文
posted @ 2018-10-22 19:50 维和战艇机 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 双端队列BFS解决的就是路径权值可能为0的图最短路问题,权值为0插入队头,否则插入队尾。 对于这个题,可以看作上下移动的路径的权值为0,左右移动权值为1,而且不能超过规定的步数。 直接广搜求覆盖的点的数目即可。 (场上我一般BFS被hack了) 代码: 阅读全文
posted @ 2018-10-15 00:04 维和战艇机 阅读(495) 评论(0) 推荐(0) 编辑