dfs dp

【DP】LeetCode 91. 解码方法

题目链接 91. 解码方法 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums 以前 i 个元素组成(即 nums[i - 1])的状态;dp[i][j] 分别表示以 nums ......
LeetCode 方法 91

【DP】LeetCode 1143. 最长公共子序列

题目链接 1143. 最长公共子序列 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums 以前 i 个元素组成(即 nums[i - 1])的状态;dp[i][j] 分别表示以 ......
序列 LeetCode 1143

【DP】LeetCode 718. 最长重复子数组

题目链接 718. 最长重复子数组 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums 以第 i 个元素为结尾(即 nums[i - 1])的状态;dp[i][j] 分别表示以 ......
数组 LeetCode 718

递推与递归和DFS深度优先搜索

递推与递归和DFS深度优先搜索 跳台阶 递归实现指数级枚举 递归实现排列型枚举 递归实现组合型枚举 P1036 选数 习题课 递推/ 递归 / DFS P2089 烤鸡 指数 P1088 火星人 全排列 P1149 火柴棒等式 指数 + 预处理 P2036 PERKET 指数 P1135 奇怪的电梯 ......
深度 DFS

【LeetCode动态规划#11】打家劫舍系列题(涉及环结构和树形DP的讨论)

打家劫舍 力扣题目链接(opens new window) 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不 ......
打家劫舍 树形 LeetCode 结构 动态

C. Python Indentation CF909C--(dp)

#根据题目,又是求方案数的题目,先找到联系,熟悉规则; 看数据就猜是二维DP,题目分为不同字符 'f', 's'. ‘f’根据规则需要缩进一格,‘s’就是简单的输出一行。 所以根据题意:往前一格想,就设思想为:在第i格时有几格缩进的方案数,用f[i, j]表示。 当第i - 1格是‘f’时, 没办法 ......
Indentation Python 909 CF dp

数位dp

如果计算区间[l,r]中出现次数,cnt(r) - cnt(l - 1)即可 # include <iostream> # include <cmath> using namespace std; int dgt(int n) // 计算整数n有多少位 { int res = 0; while (n ......
数位

Codeforces #900D. Unusual Sequences(容斥原理,dp)

原题链接:https://codeforces.com/contest/900/problem/D 求序列a的个数,满足$\sum_{i=1}^{len}=y$并且$gcd(a_1,a_2...a_{len})=x$ 其中序列的长度不限 答案对$1e9+7$取模 首先可以分析出,当$x$不整除$y$ ......
Codeforces Sequences 原理 Unusual 900

【DP】LeetCode 312. 戳气球

题目链接 312. 戳气球 思路 参考动态规划套路解决戳气球问题 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums[i] 为结尾的状态;dp[i][j] 分别表示 以 nums1[ ......
气球 LeetCode 312

LeetCode 周赛 341 场,模拟 / 树上差分 / Tarjan 离线 LCA / DFS

本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 大家好,我是小彭。 上周末有单双周赛,双周赛我们讲过了,单周赛那天早上有事没参加,后面做了虚拟竞赛,然后整个人就不好了。前 3 题非常简单,但第 4 题有点东西啊,差点就放弃了。最后,被折磨了一个下午和一个大 ......
LeetCode Tarjan 341 LCA DFS

Codeforces Round 550 (Div. 3) F. Graph Without Long Directed Paths(dfs/染色)

https://codeforces.com/contest/1144/problem/F 题目大意: 给定n个点,m条边; 每一条边都连接了两个点。 现在需要我们染色,要求是做到所有有向图不包含长度为2或者更长的路径。 input 6 5 1 5 2 1 1 4 3 1 6 1 output YE ......
Codeforces Directed Without Round Graph

Text Editor (CF2E) (DP字符串2端分别dp)

思路: 首先贪心出性质, 通过模拟这个题意,一定是先右边弄完在去左边弄, 或者左弄完去右边弄, 于是左右2边分别dp一次 然后求和 dp[i][j],表示i 和 j 匹配的时的 最小操作次数 转移的时候有一个贪心结论,当 si != tj 时, 这个贡献时一个固定值, 正向:首先i- (公共的), ......
字符串 字符 Editor Text CF2E

【DP】LeetCode 132. 分割回文串 II

题目链接 132. 分割回文串 II 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums[i] 为结尾的状态;dp[i][j] 分别表示 以 nums1[i] 和 nums2[ ......
回文 LeetCode 132 II

[PA2021] Od deski do deski (dp)

计数数列个数,要满足能划分为若干个两端相等区间。 首先容易想到DP。 我想的是按段分阶段转移,显然不行,因为很容易算重,一个数列能有多种划分方案则会被算多次。 因此直接计数数列的每位,$g(i,j)$表示前$i$位有$j$种值存在位置的前一个数列满足条件的合法序列方案数,$f(i,j)$则为不合法序 ......
deski 2021 PA Od do

20230419 训练记录:dp

Deque https://atcoder.jp/contests/dp/tasks/dp_l Alice 和 Bob 玩游戏,轮流从 deque 的头/尾取走一个元素,Alice 拿走的数和为 $X$,Bob 拿走的数和为 $Y$。Alice 想最大化 $X - Y$ 而 Bob 想最小化 $X ......
20230419

P2661 [NOIP2015 提高组] 信息传递-拓扑排序+DFS深度优先遍历

有 n 个同学(编号为 1 到 n )正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为 Ti​ 的同学。 游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以... ......
拓扑 深度 P2661 信息 2661

ARC159F Good Division【性质,DP,线段树】

定义一个序列是好的当且仅当其可以通过每次删去一对相邻的不同的数把序列删空。 给定一个长度为 $2n$ 的序列 $a$,求有多少种划分方式使得每一段都是好的。答案对 $998244353$ 取模。 $n \leq 5 \times 10^5$,时限 $\text{5.0s}$。 先考虑什么样的数列是合 ......
线段 Division 性质 159F Good

Atcoder Regular Contest 118 E - Avoid Permutations(容斥+DP)

挺套路的 DP。 第一步是显然的:转换贡献体,DP 一条从 $(0,0)$ 到 $(n+1,n+1)$ 的路径,然后计算有多少个排列满足这条路径不经过任何一个 $(i,p_i)$。 正着统计肯定不好求,考虑容斥。即我们钦定一些路径上的点,满足这些点必须对应某个 $(i,p_i)$,然后计算有多少个 ......
Permutations Atcoder Regular Contest Avoid

DP做题记录

P1140 相似基因 考虑如何设计状态。 设给出的两个串为串 $A$ 和串 $B$,长度分别为 $n$ 和 $m$。 我们用 $f[i][j]$ 来表示前 $i$ 个 $A$ 串碱基和前 $j$ 个 $B$ 串碱基得到的最大相似度。 我们因为求的是最大的相似度,而从题目给的表来看是可能为负的,所以先 ......

20230418 训练记录:dp

嘻嘻,农药打到钻石一了。😁 LCS https://atcoder.jp/contests/dp/tasks/dp_f 求两字符串 $s, t$ 的最长公共子序列。 $|s|, |t| \leq 3000$ 注意要求的不只是长度,如果要求长度就直接: 如果 $s_i = t_j$:$f_{i, j ......
20230418

【DP】LeetCode 97. 交错字符串

题目链接 97. 交错字符串 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums[i] 为结尾的状态;dp[i][j] 分别表示 以 nums1[i] 和 nums2[j] 为 ......
字符串 字符 LeetCode 97

【DP】LeetCode 题号.题目

题目链接 377. 组合总和 Ⅳ 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums[i] 为结尾的状态;dp[i][j] 分别表示 以 nums1[i] 和 nums2[j] ......
题号 LeetCode 题目

[eJOI2020 Day1] Exam(性质,转化,dp)

题意 操作:每次可选一段区间覆盖为原区间最大值。 目标:$A$和$B$中相等的位尽量多。 思路 每个值只有为 $B_i$ 时才会贡献答案,设 $A_i$ 左边第一个为 $B_i$ 的为 $L_i$ ,同理右边的为 $R_i$,当然还要满足 $(L_i,i]$ 和 $[i,R_i)$ 的值均 $\le ......
性质 eJOI 2020 Day1 Exam

DP花园题乱做

CF837D 考虑 $f[i][j][cnt2][cnt5]$ 统计前 $i$ 个数选 $j$ 个,满足有 $cnt2$ 个 $2$ 和 $cnt5$ 个 5 是否成立。 但 $f$ 只存 $0$ 或 $1$,考虑 $f[i][j][cnt5]=cnt2$,即统计前 $i$ 个数选 $j$ 个,满足 ......
花园

Codeforces Dp

Zero Remainder Sum 采用辅助数组 $ ndp[m + 1][\frac{m}{2}][k] $ 来求出每一行中在当前第 $ i $ 列,取了 $ j $ 个物品,总和模 $ k $ 的余数是 $ t $ 的最大和是多少。用 $ dp[n + 1][k] $ 来转移每一行的状态。 # ......
Codeforces Dp

CF 1195C-Basketball Exercise,状态机DP,1400

CF 1195C-Basketball Exercise 没怎么做过状态机 dp, 这个简单的题目甚至开始甚至搞出三维来。 #include <iostream> using namespace std; const int N = 1e5 + 10; typedef long long LL; / ......
C-Basketball Basketball Exercise 状态 1195

Codeforces 1810G - The Maximum Prefix(DP)

挺小清新的一道计数题。 首先先分析下这个“最大前缀和”,按照最朴素的思路就是扫一遍每个前缀,然后记录一下当前的 $sum$ 与前面的 $mx$,但是如果你一直陷在这个思路上你就似了,因为按照这个思路做,你 DP 状态里需要记录 $sum$ 和 $mx$ 两个维度,算上下标一维总共是 $n^3$,并且 ......
Codeforces Maximum Prefix 1810G 1810

【DP】LeetCode 72. 编辑距离

题目链接 72. 编辑距离 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums[i] 为结尾的状态;dp[i][j] 分别表示 以 nums1[i] 和 nums2[j] 为结 ......
LeetCode 72

【DP】LeetCode 139. 单词拆分

题目链接 139. 单词拆分 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums[i] 为结尾的状态;dp[i][j] 分别表示 以 nums1[i] 和 nums2[j] 为 ......
单词 LeetCode 139

一道数位dp的题

一道数位dp的题 无链接,朋友问的。 题目 定义“好数”为倍数为7且数字中不含4的数,编写程序在1秒内找出第n(1<n<1e12)个好数 代码 #include<bits/stdc++.h> #define ll long long using namespace std; const int N ......
数位 一道