DP
abutoto
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #708 (Div. 2) E2. Square-free division (hard version)
Codeforces Round #708 (Div. 2) E2. Square-free division (hard version) 题意 长度为n的数组,可以修改k次,然后切分成多个数组,每个数组满足任意两个数相乘不是一个平方数 题解 满足相乘不是平方,就需要对每个数做质因子分解,这块需要优化,否则会T,具体看代码理解吧 修改k次就需要dp,因为k最大20,所以可以维护一个相同数字下标的队列,从大到小,最多21个数,表示需要修改的数字,然后dp 有看博客说时间复杂度是 n*k*k 的,原创 2021-03-25 20:35:42 · 191 阅读 · 1 评论 -
hihocoder 1636 Pangu and Stones
题意: n个石子堆排成一排,每次可以将连续的最少L堆,最多R堆石子合并在一起,消耗的代价为要合并的石子总数 求合并成1堆的最小代价,如果无法做到输出0 思路: dp[i][j][k]表示区间[i, j]分成k堆的最小代价,转移有 k=1时: dp[i][j][1] = min(dp[i][p][x-1]+dp[p+1][j][1]+sum[i][j]转载 2017-11-20 11:45:33 · 1139 阅读 · 0 评论 -
Gym 101505F Tree Stands
题意:给你一棵树,k个人,每颗树上只能安排一个人,每个人必须有另一个人相邻,问所有的方案总数。 题解:树形dp,三维的dp数组dp[i][j][3],前两维表示i的根数中站了j个人,0表示不站人的合法状态,1表示站人但是不合法状态,2表示站人的合法状态,然后就是一个dfs加dp 代码: #include #define N 205 #define P pair using names原创 2018-02-09 18:29:40 · 252 阅读 · 0 评论 -
2018 Multi-University Training Contest 3 hdu 6327 Problem I. Random Sequence(dp)
题意 一个数组a,一个数组v,求v[gcd(ai,ai+1,ai+2,ai+3)]的求和,a中会有0,表示可以取1~m,求最后的期望 题解 设 f[i][x][y][z] 表示考虑前 i 个位置,ai = x, gcd(ai, ai-1) = y, gcd(ai, ai-1, ai-2) = z 的期望。枚举 ai+1 的值转移即可,显然合法状态中 y|x, z|y,当 m = 100...原创 2018-07-31 14:19:26 · 208 阅读 · 0 评论 -
2018 Multi-University Training Contest 3 hdu 6321 Problem C. Dynamic Graph Matching(状压)
题意 给定一个 n 个点的无向图,m 次加边或者删边操作。在每次操作后统计有多少个匹配包含 k = 1, 2, ..., n/2 条边。 题解 状压表示当前用了那些点,加边就是dp[i|(1<<x)|(1<<y)]+=dp[i];减边就是减去dp[i] 代码 #include<bits/stdc++.h> #define N 1000...原创 2018-07-31 14:35:10 · 134 阅读 · 0 评论