11 2018 档案
摘要:__stdcall大佬的讲解 这里贴的代码写的是点修改、区间查询的题。
阅读全文
摘要:【题解】 思维题,看了别人的博客才会写。 写出这样的矩阵: 1,3,9,... 2,6,18,... 4,12.36,... 8,24,72,... 我们要做的就是从矩阵中选出一些数字,但是不能选相邻的。 我们可以发现,在100000的范围内,这个矩阵最多只有18行,11列。 那么这个矩阵的取数字的
阅读全文
摘要:【题解】 题目中说将队列进行排序就可以获得一个非降的序列,那么各个队列中的元素有序、同时不同的队列之间也是有序的。 我们把原序列排序,每个双端队列必定对应一段连续的子序列,且这段子序列里面元素在原序列的位置应该是先递减后递增的。 那么我们用贪心的策略扫一遍,可以加入当前队列的就加入、更新信息,不行就
阅读全文
摘要:【题解】 经典的树形DP,这里补一下题解。 我们可以把边权转化为点权,设f[i][j]为i节点,保留了j个节点的最大价值。 那么转移就是f[i][j]=max(f[i][j],f[i][j-k]+f[to][k]),其中f[i][1]为i点的父亲到它的边的边权,我们转化为i的点权。 每个点要强制取它
阅读全文
摘要:【题解】 我想到了两种解法。 一种是扫描线+线段树+单调栈。 另一种方法是O(n)的,比较巧妙。 考虑每个数在哪些区间可以作为最小数。最长的区间就是它向左右走,直到有数字比它小,这个可以用单调栈维护。 那么区间数就是它左边可以走的距离*右边可以走的距离,答案减去这个数字*区间数。 再考虑每个数在哪些
阅读全文
摘要:【题解】 题意其实就是把n个物品分成4个集合,其中三个集合不可以为空(只属于A、只属于B、AB的交),一个集合空或者非空都可以(不属于A也不属于B),问有多少种方案。 考虑容斥,4个集合都不为空的方案数有4^n-4*3^n+6*2^n-4,3个集合不为空的方案数有3^n-3*2^n+3. 相加就是总
阅读全文
摘要:【题解】 其实就是求两棵树不同的边有多少条。那么我们用一个set来去重即可。
阅读全文
摘要:【题解】 每个点维护各个儿子的前后缀最大值、权值和,这样就可以统计儿子之间相乘的答案。然后每个节点再乘它的祖父的权值去更新答案即可。
阅读全文
摘要:【题解】 一道简单的模拟题。需要判一些特殊情况:第一项的正号不用输出,x的一次项不用输出指数,系数为0的项不用输出等等,稍微细心一下就好。
阅读全文