题意简述 题目链接 给定一n个点、m条边的森林,q次操作,操作分两种:1.给定一个点x,要求x所在的树的直径;2.给定两个点x,y,选取x所在树中的一个点u,y所在树中的一个点v,新增一条边(u,v),合并两棵树,使得合并后的新树的直径最小。 算法概述 对于初始的森林,显然可以dp一遍求出所有树的原 ...
分类:
其他好文 时间:
2020-10-05 21:55:02
阅读次数:
30
题目大意 用 \(p\) 种颜色填 \(n\times m\) 的画板,要求任意相邻两列的颜色数都不少于 \(p\) ,求方案数。 数据范围 $1\leq n\leq 100,1\leq m\leq 10^9,q\leq p\leq 100$ 思路 观摩 \(m\) 的范围,显然需要一个 \(\lo ...
分类:
其他好文 时间:
2020-09-24 21:30:59
阅读次数:
27
题目链接 题意:给你n和m,令x为前m个素数,一共使用n个的乘积,例如n=3,m=2,则x=2*2*3或x=2*3*3,求所有Φ(x)的和。 思路:用到了欧拉函数的性质,首先对于x为素数,Φ(x)=x-1,然后若n*m=x,则Φ(n)*Φ(n)=Φ(x)。所以我们可以求出前500个素数,然后对其进行 ...
分类:
其他好文 时间:
2020-09-24 20:50:23
阅读次数:
36
最大子矩阵 1,借助最大连续子序列和来取得最大子矩阵 def MaxSubArray(nums): n = len(nums) dp = [] dp.append(nums[0]) mymax = dp[0] startidx = 0 endidx = 0 for i in range(1, n): ...
分类:
其他好文 时间:
2020-09-18 17:15:02
阅读次数:
29
https://www.luogu.com.cn/problem/P4721 很多题的dp方程写出来后是这种形式 这种东西当然可以cdq分治FFT解决 但实际上做一些推导就可以只利用多项式求逆解决 这个递推式可以这么来看 fn表示 用一些长度为1...n-1的长条 来组成 一个长度为n的长条一共有多 ...
分类:
其他好文 时间:
2020-09-18 03:15:13
阅读次数:
27
1:01背包问题只有两种两种状态:放进背包或者不放进背包。 2:01背包的核心:状态转换方程:dp[i][j]=max(dp[i-1][j],dp[i-1][j-Wi](i从1到N循环,j从0到V循环)//表示前i件物品,放入容量为j的背包所能获得的最大收益 //其中dp[i-1][j]表示第i件没 ...
分类:
其他好文 时间:
2020-09-18 00:50:56
阅读次数:
25
##C++版本: 01背包 for (int i = 0; i < n; i++) { for (int j = M; j >= w[i]; j--) { dp[j] = max(dp[j], dp[j - w[i]] + v[i]); } } 完全背包 for (int i = 0; i < n; ...
分类:
其他好文 时间:
2020-09-17 23:55:33
阅读次数:
37
CSP第1轮倒计时:29天 JZOJ2020年9月12日提高B组反思 T1 放在T1却是最难的一题 明显需要高精度 但是我小学奥数没学好,不知道怎么把正有理数转化成分数 T2 明显的DP 可惜的是我文件输入输出少了个'i' 导致到手的100飞了 T3 看上去很像宽搜 于是就打了宽搜 但是$WA$了, ...
分类:
其他好文 时间:
2020-09-17 23:01:00
阅读次数:
30
ABC咕咕咕 D. Polycarp and Div 3 题意:给一个数字串,问最多能选出几个不相交的子串使得它们组成的 $10$ 进制数都是 $3$ 的倍数。 \(|s| \leq 2\times 10^5\) 题解: \(dp_{i,j}\) 表示第 \(i\) 为,数字和 \(\%3\) 为 ...
分类:
其他好文 时间:
2020-09-17 21:27:54
阅读次数:
28
描述 给定一张 n(n≤20) 个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamilton路径。 Hamilton路径的定义是从 0 到 n-1 不重不漏地经过每个点恰好一次。 输入格式 第一行一个整数n。 接下来n行每行n个整数,其中第i行第j个整数表示点i到j的 ...
分类:
其他好文 时间:
2020-09-17 21:21:28
阅读次数:
28