概率 记忆fish dp

数位dp

#数位dp ##思想 一般来说,题目是要求在区间$[l,r]$中符合某一种条件的数的个数 我们用前缀和的思想考虑,分别求出$[1,r]$和$[1,l-1]$中数的个数相减即为所求 这里采用记忆化搜索的方式实现 ##模板 #include<iostream> #include<cstring> #in ......
数位

【容斥、状压dp】主旋律 题解

【清华集训2014】主旋律 题解 神秘题。 题目简述 给你一个有向图 $G=(V,E)$。求有多少 $E$ 的子集 $E'$ 使得新图 $G'=(V,E')$ 是强连通图。 强连通图的定义是任意两点 $u,v$ 均存在 $u\to v,v\to u$ 的路径。 $n\leq 15,m\leq n\t ......
题解 主旋律

一道一板一眼的数位dp和二分结合的板子题

题目 1811E - Living Sequence 题意 找出第n个,数位中不含‘4’的数字 思路 数位dp + 二分 唯一要注意的就是纯dfs搜索会卡常(hh,就是复杂度太高了),用上一点记忆化 代码 const int N = 14; int dp[N][N]; int a[N]; int l ......
一板一眼 板子 数位 一道

Disjoint-Set-Union Sum (诈骗题)(区间DP, 位置顺序!!!!)

题目大意: 给出一个序列P , n 个点 每次可以选择2个 相邻区间进行合并, 会产生一个贡献值,当然合并n-1就合并完了, 问在所有的情况下, 贡献和是多少 思路: 易错点: 这个所有情况, 你枚举的合并的那个先后顺序是有关系的!!! 因此直接去区间dp只能把各个合并的情况给弄出来,但是他的先后顺 ......

Leetcode(剑指offer专项训练)——DP专项(7)

矩阵中的距离 题目: 给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 链接 TLS思路题解 暴力DFS的结果是超时😢,就是找每个位置的距离它最近的零点的位置 class Solu ......
专项 Leetcode offer

[Algorithm] DP - 03. Max Subset Sum No Adjacent - Slice window

Write a function that takes in an array of positive integers and returns the maximum sum of non-adjacent elements in the array. If the input array is ......
Algorithm Adjacent Subset window Slice

洛谷(dp) 动态规划练习的部分题目心得

P1044 栈这个题目 最大的问题是完全没有想清楚dp数组如何定义,完全陷入了背包的那个dp数组含义中了,导致怎么都想不出关系, 而且看了题解提示之后也无法领悟递推的思想,无法感受那种由前面推导后面的思想. 导弹拦截 P1020 这题是我太惯性思维了,疯狂往如何才能构造dp数组想,然后没能真的把握题 ......
题目 心得 部分 动态

状压DP简介

##普通DP回顾 DP是解决多阶段决策最优化问题的一种思想方法,即利用各个阶段之间的关系,逐个求解,最终求得全局最优解。我们通常需要确认原问题与子问题、动态规划状态、边界状态、状态转移方程。 动态规划多阶段一个重要的特性就是无后效性,即“未来与过去无关”。无后效性就是对于某个给定的阶段状态,它以前各 ......
简介

状压DP

[acwing]291. 蒙德里安的梦想 /* 横放的方案数就等于总方案数,因为横着放完后,再竖着放是唯一的 dp[i][j] 表示第 i 列状态为 j 的方案数 状态为 j 是指:各行用 0 或 1 表示摆放状态 :若某行为 0,表示竖放或由前一列伸出 :若某行为 1,表示横放并向后一列伸出 dp ......

扑克牌 - 期望dp

扑克牌 - 期望dp https://www.acwing.com/problem/content/220/ #include <bits/stdc++.h> using namespace std; const int N = 20, inf = 1e9; double f[N][N][N][N] ......
扑克牌 扑克

线性DP+区间DP复习

线性dp 即递推状态转移方程有明显的线性关系,可能是1维线性,可能是2维线性,等等 如数字三角形:https://www.acwing.com/problem/content/900/ 首先考虑状态表示和状态计算 给图一个编号,如图,7为(4,2) 状态表示: f[i][j]表示所有从起点,走到i, ......
区间 线性 DP

【动手学深度学习】2.4 ~ 2.7 节学习(微积分、自动求导、概率、查阅文档)

2.4 微积分 2.4.3 梯度 梯度是一个多元函数所有变量偏导数的连接。具体而言:设函数 $f:\mathbb{R}^n \rightarrow \mathbb{R}$ 的输入是一个 $n$ 维向量 $\boldsymbol{x} = [x_1, x_2, \cdots, x_n]^T$,输出是一 ......
微积分 概率 深度 文档 2.4

通过概率整形技术对64QAM进行星座图整形,并输出GMI指标

1.算法描述 对于现有开销为20%左右的FEC,Pre FEC 的BER门限大概是2.4e-2。根据BER和 SNR之间的理论关系,我们可以得到不同阶数QAM调制格式时,达到纠前无误码的Required SNR。假设对于QPSK和 8QAM,16QAM分别为a, b, c,其中a<b<c。那现在对于 ......
概率 指标 星座 技术 QAM

C. Unlucky Numbers(数位dp)

题目 https://codeforces.com/contest/1808/problem/C 题意 给两个数 l 和 r $ ( 1 ≤ l ≤ r ≤ 10^{18})$ 请找出再这个范围内的一个数字,使得按数位这个数字中的数最大值和最小值之差最小 思路 当 l 和 r 的数位长度不一样时,可 ......
数位 Unlucky Numbers

【DP】LeetCode 256. 粉刷房子

题目链接 256. 粉刷房子 假如有一排房子,共 n 个,每个房子可以被粉刷成红色、蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同。 当然,因为市场上不同颜色油漆的价格不同,所以房子粉刷成不同颜色的花费成本也是不同的。每个房子粉刷成不同颜色的花费是以一个 n ......
LeetCode 房子 256

Leetcode刷题--最长回文子串/dp = [[False] * n for _ in range(n)]

官方动态规划解决最长回文串问题代码解释: class Solution: def longestPalindrome(self, s: str) -> str: n = len(s) #字符串的总长度 if n < 2: return s #如果字符串长度为1,则s本身就是最长回文串 max_len ......
回文 Leetcode False range for

树形DP——小红树

题目描述 小红拿到了一棵树,每个节点被染成了红色或者蓝色。 小红定义每条边的权值为:删除这条边时,形成的两个子树的同色连通块数量之差的绝对值。小红想知道,所有边的权值之和是多少? 输入描述 第一行输入一个正整数n,代表节点的数量。第二行输入一个长度为n且仅由'R'和'B'两种字符组成的字符串。第i个 ......
树形

Leetcode(剑指offer专项训练)——DP专项(6)

排序的数目 题目 给定一个由 不同 正整数组成的数组 nums ,和一个目标整数 target 。请从 nums 中找出并返回总和为 target 的元素组合的个数。数组中的数字可以在一次排列中出现任意次,但是顺序不同的序列被视作不同的组合。 题目数据保证答案符合 32 位整数范围。 链接 无效DF ......
专项 Leetcode offer

Leetcode(剑指offer专项训练)——DP专项(5)

最少的硬币数目 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 你可以认为每种硬币的数量是无限的。 链接 完全背包问题 思路:主要是要自己推出动态转移方程 $$ F(i)=min_{ ......
专项 Leetcode offer

【DP】LeetCode 64. 最小路径和

题目链接 64. 最小路径和 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 表示状态 假设到了右下角,考虑一下我们要存储的信息 走到最后坐标的最小步数 当前坐标的信息,用来判断是否走到了右下角 很容易联想到使用二维数组 dp[i][j ......
路径 LeetCode 64

【DP】LeetCode 70. 爬楼梯

题目链接 70. 爬楼梯 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 表示状态 假设走到了最后一层台阶,考虑一下我们要存储的信息: 走到这最后一层台阶的方法数 当前台阶数,用于判断是否走到了最后一层台阶 这时候很容易想到使用一维数组 ......
楼梯 LeetCode 70

Leetcode(剑指offer专项训练)——DP专项(4)

加减的目标值 给定一个正整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums = [2, 1] ,可以在 2 之前添加 '+' ,在 1 之前添加 '-' ,然后串联起来得到表达式 "+2-1" ......
专项 Leetcode offer

php抽奖程序,奖品可设置数量,中奖概率可调节

<?php $prizes[] = ['probability' => 0.1, 'total' => 1, 'name' => '一等奖'];$prizes[] = ['probability' => 1, 'total' => 1, 'name' => '二等奖']; $prizes[] = [ ......
概率 奖品 数量 程序 php

ACM NFLSOJ #834 - 【2021六校联考WC #2】三角形(找性质+数位 dp)

首先先手玩一下所有点的 $x$ 都相同的情况,你会发现存在解的必要条件是所有黑点的 $y$ 构成一段连续的区间,此时答案为 $(X+R-L,L)$,其中 $L,R$ 为所有点中纵坐标的最小和最大值。 受这个思想启发,我们考虑将所有点都变到同一 $x$ 坐标上,设 $X=\min{x_i}$。那么显然 ......
三角形 数位 性质 NFLSOJ 2021

简单理解 DP 套 DP

复制粘贴的: 通过一个外层的 DP 来计算使得另一个 DP 方程最终结果为特定值的输入数。 例如求有多少种输入使得一个背包 DP 恰好答案为 $K$。 外层 DP 的状态是所有子 DP 的状态的值。 子 DP 状态数很少,通常经过滚动数组优化,比如 $3n$ 变成 $2\times 3$) 通常我们 ......
DP

决策单调性优化 DP

虽然我之前说过「DP 优化的重点都在于设计 DP 而非优化 DP 」之类的话,不过这些优化方式的确值得一学。。 代码会单独放在另一篇文章里。 决策单调性优化 DP 这里面学问很深啊。优化方式也多种多样。 总的来说,对于一类形如 $f_i=\min f_j+w(j,i)$ 的转移方程,设 $p_i$ ......
DP

【做题笔记】树形 dp

1. luoguP2016 战略游戏 1.1 Solve 设计状态 $dp[i][0/1]$ 表示在 $i$ 子树内, 放/不放 第 $i$ 个节点使其合法所需的最少的士兵数目。则有: 不选 $i$ 节点,则 $i$ 的儿子必须选; 选 $i$ 节点,则 $i$ 的儿子可选可不选; 因此,转移方程为 ......
树形 笔记 dp

概率及期望

概率: 对于一事件 A 它可以由很多个事件转移过来,转移之前的事件设成事件 $B_i$ (这里我们保证所有的事件 $B_i$ 构成完备事件组,即它们两两互不相容,其和为全集),对于每一个 $i$ 都对应着一个转移到 $A$ 的概率。我们可以对这个概率进行分析,首先事件 $B_i$ 发生,其次事件 $ ......
概率

洛谷 P5642 - 人造情感(换根 dp)

想起来很轻松,写起来很酸爽的套路题。 默认以 $1$ 为根。先考虑怎么算单个 $f(u,v)$,我们定义一个连通块的权值为从该连通块中选出若干条点不相交的路径,选出的路径的权值之和的最大值。那么显然 $f(u,v)$ 就是整棵树的权值 $-$ 挖掉 $(u,v)$ 这条路径后各个连通块的权值之和。显 ......
情感 P5642 5642

【DP】LeetCode 62. 不同路径

题目链接 62. 不同路径 思路 代码 class Solution { public int uniquePaths(int m, int n) { int[][] dp = new int[m][n]; Arrays.fill(dp[0], 1); for(int i = 0; i < m; i ......
路径 LeetCode 62