![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 93
DP
IcecreamArtist
咸鱼
展开
-
八月刷题记录
BZOJ3522. [Poi2014]Hotel给一棵树,问两两之间距离相等的点对有多少对。点数为5000。树形dp+统计满足条件的三元组(用差分来统计,即建立两个数组,表示一元组数目、二元组数目)枚举根节点,对每个子树跑一边dfs统计距离为x的点数。时间复杂度O(n2)O(n^2)O(n2)//// Created by artist on 2021/8/5.//#include<bits/stdc++.h>using namespace std;typedef l原创 2021-08-05 15:49:44 · 169 阅读 · 0 评论 -
一文看懂博弈【全网最详细,包含所有证明】
摸鱼摸太久了没有那种什么都不想的肝劲了,导致变得很垃圾被人瞧不起了巴什博弈 bash game规则:有一堆n个石子。每次a和b可以取1~m个石子。不能取的输。结论:nmod (m+1)=0n\mod (m+1) =0nmod(m+1)=0则先手必败。否则,先手必胜。证明:先手拿了x个(x∈[1,m]x\in [1,m]x∈[1,m]),那么后手必然可以使得该轮两者共拿了(m+1)(m+1)(m+1)个。最后必然是后手拿走最后一个石子。否则,先手可以拿nmod (m+1)n \mod (m+1原创 2021-05-11 11:31:06 · 354 阅读 · 0 评论 -
动态规划贩卖机
树形dp树上背包洛谷2014 选课// 树上背包// 关系构成一个DAG图,又每个点只有一个父亲,构成一个森林// 每棵子树,要想选孩子,根节点是必须要选的。#include<bits/stdc++.h>using namespace std;int n,m;const int maxn = 305;vector<vector<int> >G;int dp[maxn][maxn]; // 到第i号为根的子树中,已经遍历了i号点的前j棵子树,选了k原创 2020-12-26 15:19:58 · 110 阅读 · 0 评论 -
【动态规划:入门】背包DP
传送门题意:有n种物品,每种拿一个都消耗TiT_iTi。有的只能拿一个,有的最多拿aia_iai个,有的可以拿无数个(每种物品可拿PiP_iPi次)。每种物品的价值是cic_ici,背包容量是TTT,求能获得的最大价值。思路:这题就是01背包+多重背包+完全背包。#include<bits/stdc++.h>using namespace std;const int maxn=10000;int dp[1003];//前:第几种物品 后:所装多少 int t[maxn+原创 2020-06-06 19:49:59 · 123 阅读 · 0 评论 -
[ACM]【容斥原理/背包DP】牛客练习赛64 宝石装箱
宝石装箱传送门题意:n个物品装入n个盒子,每个盒子都要装一个物品。第i个物品不能装进第aia_iai个盒子。求合法的装法数。思路:第一眼看到这题,心想这不就是传说中的错排题目吗?回忆一下错排题目的解法:设DnD_nDn为nnn个物品错排的方案数目。有D1=0D_1=0D1=0,D2=1D_2=1D2=1。当n≥3n\geq 3n≥3时,设nnn排在第kkk位,其中k≠nk\not =nk=n,也就是1≤k≤n−11\leq k\leq n-11≤k≤n−1。那现在考虑kkk的原创 2020-06-06 19:37:55 · 280 阅读 · 0 评论 -
[ACM]【线性DP】石子合并问题
重做1月的题,都很简单补一下记录。相邻石子合并传送门注意,得分是累加的。别忘了多组输入每次都要清零。#include<bits/stdc++.h>using namespace std;int a[104];int dp[104][104],dp2[103][104];int sum[104];const int inf=1e9+7;int main(){ int n; while(~scanf("%d",&n)){ for(int i=1;i<=n原创 2020-05-30 15:16:28 · 229 阅读 · 0 评论 -
[ACM]【线性DP】AtCoder162 Select Half
Select Half题意:从N个数字中选择N/2个,相邻不能选,要求总和最大。思路:这是一道我根本没时间看的题。 因为非常恶心的布满数学课的周三和堆满作业的周二和罪恶放荡 的周四,导致我现在才来补题(哭)此题作法比较多,应该持续更新。线性DP,状态为dp[i][j],i为目前处理到第几个数字,j只有两个取值,当前数字取为1,不取为0。整个dp意为:处理到第i个数字时,且至今(包含第i个...原创 2020-04-17 14:16:24 · 260 阅读 · 1 评论 -
[ACM]【区间DP】Atcoder163 Active Infants
Active Infants题意:将一个数列重新排列,使得每个数字大小乘以移动距离的总和最大。思路:本垃圾一直纠结于小孩怎么交换,其实不应该纠结这里,而是应该想到要将小孩进行重新排序啊混蛋很容易想到,应当尽可能使得小孩离原始位置越远。其实,就等价于,使得每个小孩处于可能的最左边的位置或者最右边的位置。(比如小孩初始位置为4,他应当尽可能的移动到1或者n中离他远的位置)而,小孩之间是不...原创 2020-04-20 22:27:28 · 271 阅读 · 0 评论 -
[ACM]【树形DP/LCA】牛客练习赛62 牛牛染颜色
牛牛染颜色传送门题意:给出一个有根树,求满足条件的染色方案的数目,条件:任意两个染黑的点的LCM必须也为黑点。思路:我一看到LCM就会想到自己还不会倍增的恐惧 很显然的树形DP。既然是DP,就只用考虑初始状态和状态转移。状态转移方程:(dp[u][1]为将u点染黑,dp[u][0]为不染)dp[u][0]=1+∑v∈son[u](dp[v][1]+dp[v][0]−1)dp[u][0...原创 2020-04-26 09:42:50 · 906 阅读 · 3 评论