摘要: 题解: 考虑dp[u][0/1]表示u的子树中有没有坏边的方案数, dp[u][0] = 1(显然必须全是好边) dp[u][1] = ∏ (dp[v][0] * 2 + dp[v][1]) - 1 (-1是全是好边的情况) 然后我们考虑这个dp[u][0]并没有必要单独设出来 令f[u] = dp 阅读全文
posted @ 2019-03-12 00:04 幽蝶 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 题解: 如果没有相同数字,那么我们把每行按数值从小到大连边,每列按数值从小到大连边,边权为1,然后拓扑序DP一下,每个点的值就是最长路的长度 现在有相同数字,怎么处理? 考虑我们同一行同一列的相同数字连双向边(不需要两两连边,只需要使其连通就行),边权为0 然后我们的图就变成了一个类似DAG但是里面 阅读全文
posted @ 2019-03-11 22:47 幽蝶 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 题解: 考虑我们休息的时间一定在连续的一段,因此我们可以忽略走连续的一段; 但直接这样做并不对,因为前面会有影响(比如前面有一段通话占的时间很长,把后面时间挤掉了) 我们dp[i][j]表示到第i个电话忽略了j个的最短结束时间,转移就行 然后我们枚举状态,从结束的i开始选k-j个删掉,算一下答案取最 阅读全文
posted @ 2019-03-11 00:00 幽蝶 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 题解: 考虑DP dp[i]表示前i项里面以a[i]结尾的本质不同的子序列的权值和 考虑如何不重不漏的转移 我们倒着枚举j,如果这是第一次出现a[j],则他包括了1~j中所有以a[j]结束的本质不同的子序列; 如果不是第一次出现a[j],那么之前已经考虑过a[j]了,这部分和前面考虑过的部分本质相同 阅读全文
posted @ 2019-03-10 18:22 幽蝶 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 题意: 给定n个数,你要选一些区间,每次区间+1,把这n个数都变成h 对任意两个区间,L1!=R1且L2!=R2 题解: 考虑每个位置只能不放,放一个区间左端点,放一个区间右端点,放一个左端点和一个右端点; 因此我们dp(i,j)表示到第i个,i和i+1之间被j个区间覆盖的方案数 讨论一下四种情况转 阅读全文
posted @ 2019-03-03 19:25 幽蝶 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 题意:给定n个数和一个k,可以改变k个值,最小化相邻两项的差的绝对值的最大值 题解: 最大值最小,可以考虑二分答案; 然后考虑保留哪些关键点不变,dp[i]表示第i个点不变, 如果abs(a[i]-a[j])<=x*(i-j),则我们可以从第j个点转移过来,中间的点分布在线段IJ上 然后看是否超过k 阅读全文
posted @ 2019-03-03 16:47 幽蝶 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 题意: 给你一个长为n的正整数数组,你要选一个连续子序列,对其每个元素加上正号或者负号,使其和为0,求方案数 题解: dp( i , j , k )表示dp到第i个,和为j,这个元素是选了正还是负 滚动数组优化 1 #include<bits/stdc++.h> 2 #define ll long 阅读全文
posted @ 2019-03-03 15:48 幽蝶 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 题解: 设当前上界为m,a为满足a^3<=m的最大的a; 考虑当前可以选的数不超过a,上界为m: 如果要选(a-k)时,上界应该调整到(a-k+1)^3-1; 显然可以选a; 当选(a-1)时,如果上界-(a-1)^3<m-a^3时,肯定是a更优,不用考虑a-1;否则a-1可能更优; 我们下面来证明 阅读全文
posted @ 2019-03-03 14:53 幽蝶 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 题意: 给定n,k和数组A,重排数组A,最小化 。 题解: 考虑这个东西是隔k个取一个,所以我们把下标按照mod k分类,分成k组 显然每组内部尽量最小化max-min,所以我们考虑给A排序,然后选连续的一段。 显然这k组中有A个size为M,B个size为M+1 所以我们dp[i][x,y]表示选 阅读全文
posted @ 2019-03-03 13:35 幽蝶 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 题解: 先用hash或者KMP预处理匹配位置; 考虑dp[i]表示以i结尾的方案数,如果 [ i-m+1 , i ]不能匹配上,那么 dp[i]=dp[i-1] 否则dp[i]=(i-m+1)+sum[i-m]+sum[i-m-1]+……+sum[0] (前面部分是新开一个串,后面表示接一个串上去) 阅读全文
posted @ 2019-03-01 01:02 幽蝶 阅读(142) 评论(0) 推荐(0) 编辑