给定一个长度为 n 的 01 字符串,要这个字符串的每个 1 之间的距离都恰好为 k,求至少要修改几个字符。 ...
分类:
其他好文 时间:
2021-02-19 12:52:28
阅读次数:
0
原题链接 考察:树形dp 这道题战略游戏要求看到所有的边,本题要求看到所有的点 没想出来,参考了大佬的思路 照搬大佬的思路: 设树上某点u能被看见,这个点要么自己安插士兵,要么父节点安插士兵,要么子节点安插士兵.设f[u,st]表示u的st状态的最小花费.st==0时,它u被父节点看见,st==1, ...
一开始想的dp用了结构体来存位置,想试一试,但是无法证明正确性,很显然就wa了。 这里的一个切入点就是位置数很小,一开始忽略了这里。 后面可以发现,对于每一回合,如果我们枚举三个人的位置肯定复杂度不够,但是有一个人的位置必定在a[i],所以只需要枚举两个人的位置。 dp[i][j][k] - 表示一 ...
分类:
其他好文 时间:
2021-02-18 13:14:27
阅读次数:
0
通用 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #define maxn 1100 using namespace std; //dp[i][j] 表示从第i个 ...
分类:
其他好文 时间:
2021-02-18 13:00:57
阅读次数:
0
题目 分析 这道题开始我是想用回溯,但一看数据量,肯定会超时(指数级的时间复杂度)。没有思路,想着应该是dp,怎么进行转化,转为我们熟悉的问题呢?题目的意思就是说将数组分成两堆n1,n2,使得 n1 - n2 = S 。且有n1 + n2 = sum。由这两个式子可得 n1 + n2 = 2 * n ...
分类:
其他好文 时间:
2021-02-18 13:00:43
阅读次数:
0
discription: 有一圈石子, 每堆重量为w[i], 每次操作合并相邻的石子, 得分为两堆石子的重量之和. 问将这一圈n个石子合并n-1次成一堆的最高和最低得分. solution: 将环展开成链:\(12345 \rightarrow 1234512345\), 复制后, 双倍链中有环的所 ...
分类:
其他好文 时间:
2021-02-18 12:52:53
阅读次数:
0
##\(\text{Solution}\) 我们设 \(dp_i\) 表示编号为 \(i\) 的节点到达该树叶子节点的最小花费,那么显然我们有以下的转移方程: \(dp_i=\begin{cases}0&i \text{ is leaf}\\\min\limits_{j \in child_s}\l ...
分类:
其他好文 时间:
2021-02-17 14:47:56
阅读次数:
0
原题链接 考察:状压dp 思路: 考虑到计算三角形,我们需要知道落脚点i和前一个落脚点j,所以需要三维数组.根据状态转移方程f[i][j][k] = f[i-{j}][k][t]+score很容易求出最大的权值.但是比较难想到怎么计算路径数目(对本蒟蒻而言).方法是再声明一个记录当前路径最大值的方案 ...
分类:
其他好文 时间:
2021-02-17 14:41:52
阅读次数:
0
非常好的一个题。 如果不是看到dp的tag,我可能真不会往dp去想。 首先状压去枚举肯定不行,因为最多100位。 经过仔细思考之后我得出了一个dp状态。 dp[i][j][k] - 表示a[i]为第j位且余数为k的值。 在验证过后,我发现这个状态很可做。 然后就开始推了,并不是很难推,但是这里有一个 ...
分类:
其他好文 时间:
2021-02-17 14:15:41
阅读次数:
0
给出一个数组$b$ $b_i$可以等于$a_i$,也可以等于$\sum_^ia_j$ 询问有多少个数组$a$。 对每个位置$i$,你可以选择$a_i=b_i$或$a_i=b_i-\sum_^a_k$。 如果$\sum_^a_k=0$,那么这两种选择构成的数组是一样的,对答案的贡献是1。 一种$O(n ...
分类:
其他好文 时间:
2021-02-16 12:43:55
阅读次数:
0