"传送门" 题意: 给定一颗$n$个结点的树,每个结点有个权值$v_i$,定义一颗树的价值为以他为根节点的某棵树所有结点的异或值。 现在对于所有的$k$在$[0,m)$范围内,回答有多少个子树的价值为$k$。 $n\leq 1000,m\leq 2^{10}$。 思路: 我们设$F_i$为将$i$作 ...
分类:
其他好文 时间:
2020-04-29 23:55:28
阅读次数:
124
"Description" 思路 这题的思想有点类似求树的重心。 首先思考一下如果只要求一个点的差值。那么显然,将这个点看作根节点,然后只要dfs一下,将与它连接的所有子树中各个最大差值求个和就是答案。 在dfs的过程中把每个结点的求的值记录下来,那么对于每个结点,下面的最大差值都已经求好了,就剩下 ...
分类:
其他好文 时间:
2020-04-29 23:25:21
阅读次数:
52
"Description" 思路 当总长为n,block长度为k时,把k看成一个整体,那么求k的个数相当于求总长为n k+1时,block长度为1的个数。 假设dp[n]代表的是总长为n中block长度为1的个数。我们要求的就是这个dp 1到n的值。 求block长度为1的个数,就是把总的情况数,减 ...
分类:
其他好文 时间:
2020-04-29 23:09:27
阅读次数:
62
算法分析设计实践——最长公共子序列 1.问题 对于序列a和序列b,求其最长公共子序列 2.解析 通过动态规划的方式 dp[i][j] 前i个字符的x和前j个字符的y的最长公共子序列 当a[i] = b[j] 的时候 dp[i][j] = max(dp[i][j] , dp[i - 1][j - 1] ...
分类:
编程语言 时间:
2020-04-29 01:21:34
阅读次数:
71
问题: 给定序列$X,Y$,求最长公共子序列。 解析: 设$dp[i][j]$表示前$i$个$x$和前$j$个$y$的最长公共子序列。 $dp[i][j]=max(dp[i][j],dp[i-1][j],dp[i][j-1])$ 当前最长由前一个转移过来 $if(x[i]==y[j]) dp[i][ ...
分类:
编程语言 时间:
2020-04-28 23:12:50
阅读次数:
59
https://www.cnblogs.com/grandyang/p/4298664.html 动态规划,dp[i][j]为true表示s1[i-1]可以与s3[i+j-1]匹配或s2[j-1]可以与s3[i+j-1]匹配 class Solution { public: bool isInter ...
分类:
其他好文 时间:
2020-04-28 15:32:04
阅读次数:
53
感觉dp状态还是挺不容易想到的 /* dp[i][j]表示后i个数用j根火柴棒是否可行 mp[i][j]表示第i个字符变成j需要多少根火柴棒求答案时从高位到低位贪心 */ #include<bits/stdc++.h> using namespace std; #define N 4005 int ...
分类:
其他好文 时间:
2020-04-28 15:14:29
阅读次数:
56
AC代码①: Ps:DP的时间消耗会更大,因为相对第一种代码还是做了很多无用计算 ...
分类:
其他好文 时间:
2020-04-28 13:19:23
阅读次数:
57
奶牛渡河——线性dp 题目描述 Farmer John以及他的 1`,FJ把木筏划到对岸就得花更多的时间。 当FJ一个人坐在木筏上,他把木筏划到对岸需要 i 1 i`时,FJ得多花$M_i(1 也就是说,船上有 头奶牛时,FJ得花分钟渡河;船上有 头奶牛时,时间就变成分钟。后面 的依此类推。 那么, ...
分类:
其他好文 时间:
2020-04-28 09:52:34
阅读次数:
57
例1: def jianshuiguo(n,ans): dp=[[0 for i in range(n+1)]for j in range(n+1)] dp[1][0]=ans[1][0] # print(dp) sum=0 for i in range(2,n+1): for j in range ...
分类:
其他好文 时间:
2020-04-28 09:21:07
阅读次数:
34