摘要: Planting Trees "题目传送门" 解题思路 枚举每一个下边界,再枚举其对应的所有上边界,求出其对应区间内的最大最小值,当下边界一样的时候,其最大最小值可以随着上边界减小逐步更新。然后将这些最大最小值分别放入单调队列,初始时设左边界为1,右边界即为当前放入的下标, 高即为此时枚举的高。当当 阅读全文
posted @ 2019-07-26 09:26 whisperlzw 阅读(196) 评论(0) 推荐(0) 编辑
摘要: Operation "题目传送门" 解题思路 把右边的数尽量往高位放,构造线性基的时候同时记录其在原序列中的位置,在可以插入的时候如果那个位置上存在的数字的位置比新放入的要小,就把旧的往后挤。用这种发现构造前缀线性基,求最大前缀和的时候只有忽略位置比l小的即可。 代码如下 阅读全文
posted @ 2019-07-25 11:50 whisperlzw 阅读(237) 评论(0) 推荐(0) 编辑
摘要: Keen On Everything But Triangle "题目传送门" 解题思路 利用主席树求区间第k小,先求区间内最大的值,再求第二大,第三大……直到找到连续的三个数可以构成一个三角形。因为对于一组数,如果不能构成三角形,就小的就是斐波那契数列,因为数的范围在10^9内,所以不会超过50个 阅读全文
posted @ 2019-07-24 21:33 whisperlzw 阅读(526) 评论(1) 推荐(0) 编辑
摘要: P3812 【模板】线性基 "题目传送门" 构造过程 用b\[]来存线性基,将各个元素转化为二进制来看,b\[i]里存的是最高位的1在i位的数,如果b\[i]里已经存了数了,则将这个数与b\[i]异或把异或后的值按照这种方法继续往下存入,直到全部存完。 因为线性基是由原集合构造的,显然原集合里的数可 阅读全文
posted @ 2019-07-23 21:45 whisperlzw 阅读(240) 评论(0) 推荐(0) 编辑
摘要: Kth Minimum Clique "题目传送门" 解题思路 我们可以从没有点开始,把点一个一个放进去,先把放入一个点的情况都存进按照权值排序的优先队列,每次在新出队的集合里增加一个新的点,为了避免重复,一个集合中的放入次序是按编号递增的,新放进去的点必须和已经在集合中的所有点之间都有一条边。当然 阅读全文
posted @ 2019-07-23 17:24 whisperlzw 阅读(217) 评论(0) 推荐(1) 编辑
摘要: Second Large Rectangle "题目传送门" 解题思路 先求出每个点上的高,再利用单调栈分别求出每个点左右两边第一个高小于自己的位置,从而而得出最后一个大于等于自己的位置,进而求出自己的位置的高为高,这个点所在的边为底的最大矩形。这些求出的矩形中的最大值即为可求出的最大矩形。而次大值 阅读全文
posted @ 2019-07-23 11:42 whisperlzw 阅读(155) 评论(0) 推荐(0) 编辑
摘要: Vacation "题目传送门" update(O(n)) 看了那个O(n)的方法,感觉自己想的那个O(nlogn)的好傻,awsl。 0车最终通过停车线的时候,状态一定是某个车堵住后面的所有车(这个车也可以是0车)。所以我们要找的就是那个把后面所有都堵住的最前面的车x,x车没有被别的车堵住,从头到 阅读全文
posted @ 2019-07-23 11:11 whisperlzw 阅读(380) 评论(0) 推荐(0) 编辑
摘要: Partition problem "题目传送门" 解题思路 假设当前两队的对抗值为s,如果把红队中的一个人a分配到白队,s+= a对红队中所有人的对抗值,s = a对白队中所有人的对抗值。所以我们可以先假设所有人都在红队中,把人一个一个分配到白队中,枚举所有的情况求最大值。 然后继续剪枝: 1.我 阅读全文
posted @ 2019-07-22 11:35 whisperlzw 阅读(169) 评论(0) 推荐(0) 编辑
摘要: ABBA "题目传送门" 解题思路 用dp\[i]\[j]来表示前i+j个字符中,有i个A和j个B的合法情况个数。我们可以让前n个A作为AB的A,因为如果我们用后面的A作为AB的A,我们一定也可以让前面的A对应那个B,同理,我们可以让前m个B作为BA的B。 接下来讨论转移方程。当in时,此时若放入A 阅读全文
posted @ 2019-07-19 17:21 whisperlzw 阅读(163) 评论(0) 推荐(0) 编辑
摘要: Sequence "题目传送门" 解题思路 可以比较容易的推出矩阵方程,但是由于p/i向下取整的值在变,所以要根据p/i的变化将矩阵分段快速幂。p/i一共有sqrt(p)种结果,所以最多可以分为sqrt(p)段进行快速幂。 代码如下 cpp include define INF 0x3f3f3f3f 阅读全文
posted @ 2019-07-19 10:49 whisperlzw 阅读(126) 评论(0) 推荐(0) 编辑