dp
文章平均质量分 84
dp
_fairyland
菜就多做 退役oier ACMer重新开始
展开
-
P4342 [IOI1998]Polygon
P4342 [IOI1998]Polygon题目链接题目大意:一个环状多边形,每条边连接两个点,边上带有+或*第一步:可以选择删除一条边第二步:选择一条边进行运算,该边连接的两个点变为一个点(点上保存运算结果)。最后求出只剩下一个点时,该点最大的数值···········及···········删除边的序号(删除一条且能得到最大值),从大到小排列思路:看到一个环—>断环成链然后我们发现这一道题的第一个子任务是要我们求出最大值,此时可以联想到二分答案,暴力枚举,DP1.暴力枚原创 2020-10-03 00:27:49 · 143 阅读 · 0 评论 -
2020.10.16 洛谷刷题总结
P2016 战略游戏P2730 [USACO3.2]魔板 Magic SquaresP1379 八数码难题P3393 逃离僵尸岛1.战略游戏最小权覆盖集问题树形dp:思路:1.递归搜索预处理2.回溯DP求最值主要决策就是选与不选,所以可以设定状态&方程f[i][0]为:当不在i号节点放士兵时,以i为根的子树上最少需要设置的士兵数f[i][1]为:当在i号节点放士兵时,以i为根的子树上最少需要设置的士兵数转移方程:x为父亲节点,y为儿子节点f[x][0]+=f[y][1];原创 2020-10-16 03:39:13 · 743 阅读 · 1 评论 -
洛谷树形dp复习
P2015 二叉苹果树明显是树上背包问题,选与不选,保留的树枝为体积,每个树枝的苹果树目为价值f [ i ] [ j ] 表示在 i 节点时,留下了 j 条树枝时得到的最多苹果数量模板枚举孩子节点·····搜索更新孩子节点信息·····枚举 i 点树枝数量············枚举孩子节点所拥有树枝数量··················状态转移方程状态转移方程:f [ u ] [ j ] = max ( f [ u ] [ j ] , f [ u ] [ j - k ] + f [原创 2020-10-25 13:57:31 · 157 阅读 · 0 评论 -
矩阵与图
阶有向图,边权为 1,然后给一个整数。重新定义dp方程然后转移,初始化从。阶有向图,每条边的边权均为。,你的任务是对于所有点对。阶加权有向图和一个整数。每次两个矩阵转移时只取最短。,你的任务是对于每个点对。限长路径计数/最短路。原创 2023-09-20 11:43:47 · 208 阅读 · 0 评论 -
容斥 / dp
因为物品数很少,不合法状态就是各物品超出限制后的并集,可以状压枚举那几个物品超出了限制,然后容斥解决。首先可以用完全背包处理出无限制的方案数,然后考虑怎么剪去不合法状态。一类问题:选出几个数,然后问这几个数的gcd为。的方案数,然后可以逆推,首先可以直接求出。的方案数即可,发现复杂度是一个级数求和,太大,每次做一次背包T。的个数,然后容斥剪去。原创 2023-09-20 16:00:50 · 190 阅读 · 0 评论 -
决策单调性优化dp
很像邮局那种,我们肯定是将区间中点靠得比较近的区间交给一个自动的机器管理即可,所以先将区间排序。然后转换为2D1D类经典问题,先分析这个dp肯定是满足决策单调的,接下来就是如何快速求。易证机器开始区间肯定是在某个区间左端点,或者结束区间时某个区间右端点,所以正常可以枚举。证明决策单调,然后用单调队列维护每个点作为最优决策点的范围,每次加入点 二分更新。决策单调,分治然后暴力更新区间信息,因为每个递归层区间端点最多移动。转换一下式子,分成两次dp,每次可以决策单调优化。,然后枚举开始的时间,然后再遍历一遍。原创 2023-09-07 13:19:34 · 222 阅读 · 0 评论 -
wqs二分/带权二分
同一类最小生成树选几个特殊边的问题,打表或者感性理解是一个下凸的函数,直接套wqs二分,每次给特殊边附加权,然后重跑一次kruskal。是一个凸函数,可以二分切线的斜率,转换成无限制问题,然后根据选了几个调整斜率,使切点横坐标逼近。个部分的最小距离和,然后对于一个部分,反证易得邮局应该放在中间的村庄。,是一个上凸函数,所以直接套wqs二分,每次用斜率优化。是一个上凸函数,先增后减,所以wqs二分优化掉。的最长链的最大值,发现不好转移,比如将儿子。,然后转移就很好写了,两种决策,合并到。原创 2023-09-02 16:26:35 · 189 阅读 · 0 评论 -
概率期望 / dp
我们发现当前卡牌是否发动技能的概率受到前面卡牌的影响(前面选了几张卡,那么我再怎么也要有几轮把前面的卡选完),但不受到后面卡牌的影响,所以我们设。考虑有等概率随机按开关的情况,其实在前面我们就能知道,给出的数据我们一共要按的开关就只有那几个,一个开关重复按两次是没有效果的,按错了开关到最后也得按回去,所以我们状态设计就是已经按了几个要按的开关,很小,直接状压,然后暴力枚举状态看是否全部覆盖,发现坐标跨度很大,对坐标离散化,依次差分修改,期望dp,从已经满足的点倒着推,首先考虑状态,发现。原创 2023-08-19 16:18:32 · 143 阅读 · 0 评论 -
虚树
虚树原创 2023-08-15 01:04:27 · 172 阅读 · 0 评论 -
CF 1859E Maximum Monogonosity 绝对值的巧妙处理和状态设计
CF 1859E Maximum Monogonosity原创 2023-08-14 22:39:23 · 189 阅读 · 0 评论 -
树形dp记录路径 CF1779F Xorcerer’s Stones
树形dp记录转移路径原创 2023-07-25 13:34:38 · 131 阅读 · 0 评论 -
CF1060E Sergey and Subway
CF1060E Sergey and Subway原创 2023-05-04 16:12:40 · 627 阅读 · 0 评论 -
CF8C Looking for Order
codeforces 8C Looking for Order原创 2023-05-04 01:03:01 · 70 阅读 · 0 评论 -
近几日总结
近几日总结原创 2023-04-11 19:54:58 · 362 阅读 · 0 评论 -
2022.3.29-3.30总结 纯数位dp
2023.3.20-3.31 学习总结原创 2023-03-31 09:30:07 · 201 阅读 · 0 评论 -
dp优化入门学习
dp优化原创 2023-03-21 00:18:46 · 189 阅读 · 0 评论 -
状压dp
状压dp原创 2023-03-04 20:16:09 · 251 阅读 · 1 评论 -
线性 背包 区间
线性 背包 区间dp原创 2023-03-01 21:06:36 · 83 阅读 · 0 评论 -
树上dp 难题
树形dp原创 2023-03-01 20:31:39 · 136 阅读 · 0 评论 -
DPpppp复习
**[P1004 方格取数数据范围很小,直接开四维 i j k l分别表示第一次走到(i ,j),第二次走到(k,l)的最大值如果走到过重复的格子,他们必然需要再减去a((dis[}最后di。。#include <bits/stdc++.h>using namespace std;int a[15][15],f[15][15][15][15];int read(){ int flag=1,sum=0; char ch=getchar(); while (ch<'0原创 2020-11-05 00:41:43 · 779 阅读 · 1 评论