Solution 我们发现要解决一个树上的连通块问题,解决这种问题的时候我们不妨先随便选一个根,如果要选某两个点则他们到n的路径上的点都会被选就变成了一个树形背包问题。 注意这里是多重背包,所以我们可以用单调队列优化,时间复杂度$O(N^2M)$。 考虑暴力选根的时候会把很多重复的情况算进去,所以我 ...
分类:
其他好文 时间:
2020-05-29 19:24:43
阅读次数:
65
https://www.luogu.com.cn/problem/P2563 完全背包。 预处理出来 $200$ 以内的素数。 以每个素数为物品进行背包。 时间复杂度:$O(200\times \sqrt{200}+200\times \frac{200}{\ln 200}+T)\approx O( ...
分类:
其他好文 时间:
2020-05-23 18:23:07
阅读次数:
72
这个题就是一个01背包的模板题; 代码: 1 #include<iostream> 2 using namespace std; 3 struct zkw{ 4 int w; 5 int c; 6 }; 7 zkw a[3500]; 8 int f[2200]; 9 int main() 10 { ...
分类:
其他好文 时间:
2020-05-22 15:33:10
阅读次数:
52
背包问题:有 N 件物品和一个承重为 W 的背包(也可定义为体积),每件物品的重量是 weight,价值是 value,求解将哪几件物品装入背包可使这些物品在重量总和不超过 backpack_weight 的情况下价值总和最大。 这个问题隐含了一个条件,每个物品只有一件,也就是限定每件物品只能选择 ...
分类:
编程语言 时间:
2020-05-22 00:19:47
阅读次数:
72
题目: 大致题意: 这是完全背包。 而且是加了点东西的完全背包。 f[i]表示总资产i的最大利息值。 按照完全背包的模板来n次就能找出正确答案。 在完全背包的循环执行完毕后则需要用s加上f[s],因为f[s]只是总资产s的利息。 那么代码便是: ...
分类:
其他好文 时间:
2020-05-21 00:04:01
阅读次数:
59
1. 动态规划 1. 三要素:定义状态,分解子问题(找到迭代公式),设置边界条件 2. 三种解题思路: 1. Brutal Force Search 2. Top Down(回溯+剪枝) 3. Bottom Up(memorization) 2. 解题模板 2.1 题目定义 1. $v[i]$ 第i ...
分类:
其他好文 时间:
2020-05-20 14:01:20
阅读次数:
69
题目大意: 给定一个n个点m条边的图,要求给每个点赋1,2,3中的任意一个值,使得一共有n1个1,n2个2,n3个3,且每条边两端点的差值为1。如不可能输出NO,如可能输出YES即任意方案 n<=5000,m<=1e5 题目解法: 首先这道题最重要的观察是2->{1,3}->2->{1,3}->.. ...
分类:
其他好文 时间:
2020-05-20 12:29:48
阅读次数:
50
看大神的代码一脸懵,学了很多新东西,背包理解的太浅了,二分图染色不太会。 /* * cf1354E * 题意: * 给出一个无向连通图,和n1,n2,n3分别表示需要染色1,2,3的节点数量。 * 图不保证连通,并且需要保证一条边的两个节点的色号之差的绝对值为1。 * 请你计算是否存在合理的方案,并 ...
分类:
其他好文 时间:
2020-05-19 01:19:37
阅读次数:
96
E. Graph Coloring "链接" n个点m条边的无向图,不保证联通,给每个点标号1,2,3。1号点个数n1,2号点个数n2,3号点个数n3。且每条边的两点,标号之差绝对值为1。如果有合法方案,需输出方案。 考虑每个联通子图,2只可以和1或者3连边,1只能和2连边,3只能和2连边,那么将1 ...
分类:
其他好文 时间:
2020-05-18 00:21:50
阅读次数:
84
动态规划01背包实现: 借鉴的这篇博文: https://www.cnblogs.com/Christal-R/p/Dynamic_programming.html 题目:在背包容量为8的情况下,根据下图的数据动态规划得到最优解,实现右图所示的程序代码 最重要的就是寻找递推关系式: 定义V[i,j] ...
分类:
编程语言 时间:
2020-05-17 16:03:10
阅读次数:
59