摘要: 【题解】 我想到了两种解法。 一种是扫描线+线段树+单调栈。 另一种方法是O(n)的,比较巧妙。 考虑每个数在哪些区间可以作为最小数。最长的区间就是它向左右走,直到有数字比它小,这个可以用单调栈维护。 那么区间数就是它左边可以走的距离*右边可以走的距离,答案减去这个数字*区间数。 再考虑每个数在哪些 阅读全文
posted @ 2018-11-02 17:12 Driver_Lao 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 【题解】 题意其实就是把n个物品分成4个集合,其中三个集合不可以为空(只属于A、只属于B、AB的交),一个集合空或者非空都可以(不属于A也不属于B),问有多少种方案。 考虑容斥,4个集合都不为空的方案数有4^n-4*3^n+6*2^n-4,3个集合不为空的方案数有3^n-3*2^n+3. 相加就是总 阅读全文
posted @ 2018-11-02 17:06 Driver_Lao 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 【题解】 其实就是求两棵树不同的边有多少条。那么我们用一个set来去重即可。 阅读全文
posted @ 2018-11-02 16:28 Driver_Lao 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 【题解】 每个点维护各个儿子的前后缀最大值、权值和,这样就可以统计儿子之间相乘的答案。然后每个节点再乘它的祖父的权值去更新答案即可。 阅读全文
posted @ 2018-11-02 07:01 Driver_Lao 阅读(190) 评论(0) 推荐(0) 编辑