随笔分类 - dp
摘要:题意 100 100的网格,每个格子有一个初始值,每次操作可以使一个格子的数 1,问你最少多少次操作后存在一条(只往右和下的)(从左上角到右下脚每格递增1的)路径。 格子权值至多1e15,保证答案存在 思路 路径长度显然是固定的,如果路径中有一个基准,那么每个格子应该是多少也是确定的 而路径中一定是
阅读全文
摘要:#题意 2000个点的带边权的树,其中m个点染黑色,其他点染白色,问你怎么染可以让任意两个同色的点的距离之和最小 #思路 经典的套路 先看每一条边的贡献,对于每条边(x,y),其中fa[y]=x 那么如果y子树的染色数确定,这条边的贡献也就确定了 令f[i][j]为i这棵子树染了j个黑点的答案,那么
阅读全文
摘要:题意 给你长度为500的串a,b,问你是否存在一种b的划分方式,使得b的两个子串是a的两个不重合的子序列 思路 先枚举分割点 记$f[i][j]$为a串处理到i,b串处理到j时,b串的两个子串个匹配成功了多少 那么我们先枚举n,再枚举m,再维护一下$b_1$串匹配了i个时$b_2$串匹配成功的最大值
阅读全文
摘要:题意 问长度为n的1~n的排列,且逆序对为k的方案数有多少 $n,k\leq 1000$ 思路 假设前$1$~$i$已经排列好,此时逆序对为$k$,那么我们来讨论插入$i+1$时候的状态 $i+1$根据插入位置的不同,可以产生$0$到$i$个逆序对 根据这个特点我们设$dp[i][j]$为前$i$个
阅读全文
摘要:题意: 给你一些x*y的土地,分成一组一组购买土地,其代价为这组里的max{x}*max{y},问你全部买下最少多少钱 思路: 有一个土地为x1*y1,如果存在一个x2*y2,且x1<=x2&&y1<=y2,那么我们就不需要考虑x1*y1的土地了 这样我们可以处理出一个x单调递增,同时y单调递减的数
阅读全文
摘要:题意: 给一个1e5的串str,然后有三个起始空串,不超过1000次操作,对三个字符串的一个尾部加一个字符或者减一个字符,保证每个字符不会超过250 每次操作之后询问你这三个串是不是可以组成str的子序列, 比如ab,cd,ef可以组成acgbdef的子序列 思路: dp[i][j][k]为三个串分
阅读全文
摘要:题意: 时间为n,有k个任务,每个任务有一个开始时间和持续时间,从第一分钟开始,如果有开始的任务就要做,问最大空闲时间 n,k<=1e5 思路: 设 dp[i]为i~n时间中最大空闲时间,vector v[i]保存i开始的任务,倒推即可 代码:
阅读全文
摘要:题意: N堆石子摆成一条线。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价。计算将N堆石子合并成一堆的最小代价。 n<=100 思路: dp[i][j]表示以i开头,长度为j的石子合并的答案 dp[i][j] = min(dp[i][k
阅读全文
摘要:题意: 求[l,r]中数字0-9分别出现的次数,11算两次1 思路: 数位dp题解好难写,直接贴代码吧 dp[i]表示[0, 10^i-1]中出现j的次数(按i位补全前导0,显然0-9出现的次数是相同的) 最后再减去每一位出现的前导零即可 代码:
阅读全文
摘要:题意: 一张由 n 个点,m 条边构成的有向无环图。每个点有点权 Ai。QQ 小方想知道所有起点为 1 ,终点为 n 的路径中最大的中位数是多少。 一条路径的中位数指的是:一条路径有 n 个点,将这 n 个点的权值从小到大排序后,排在位置 ⌊n2⌋+1 上的权值。 思路(官方题解): 考虑二分答案,
阅读全文
摘要:题意: 现在一共有n天,第i天如果有流星雨的话,会有wi颗流星雨。 第1天有流星雨的概率是p1。 如果第i−1 (i≥2)天有流星雨,第i天有流星雨的可能性是pi+P,否则是pi。 求n天后,流星雨颗数的期望。 分数以逆元形式输出 思路: 直接在逆元情况下做 第i天有流星雨的概率为t[i]=t[i-
阅读全文
摘要:题意: m次询问,问下标最小字典序的长度为x的LIS是什么 n<=10000, m<=1000 思路: 先nlogn求出f[i]为以a[i]开头的LIS长度 然后贪心即可,复杂度nm 我们正常求LIS处理出的low[i]为长度为i的LIS结尾最小元素,f[i]为以a[i]结尾的LIS长度 为了迎合题
阅读全文
摘要:题意: 4种硬币买价值为V的商品,每种硬币有numi个,问有多少种买法 1000次询问,numi<1e5 思路: 完全背包计算出没有numi限制下的买法, [HAOI2008]硬币购物否
阅读全文
摘要:题意: 求长度为n的不含长为m的指定子串的字符串的个数 1s, n<=1e9, m<=50 思路: 长见识了。。 设那个指定子串为s f[i][j]表示长度为i的字符串(其中后j个字符与s的前j个字符一致的情况下)的方法数 若匹配到s串长度为i的后缀加一个字符num可以组成最长长度为j的后缀,设a[
阅读全文
摘要:题意: 若$a_1+a_2+\cdots+a_h=n$(任意h<=n),求$lcm(a_i)$的种类数 思路: 设$lcm(a_i)=x$, 由唯一分解定理,$x=p_1^{m_1}+p_2^{m_2}+\cdots+p_{tot}^{m_{tot}}$ 设$b_i=p_i^{m_i}$, 则能组成
阅读全文
摘要:题意:在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。n<=9 思路:状压dp,dp[i][j][k]为前i行放了j个,第i行状态为k 代码:
阅读全文
摘要:/************************************************************** Problem: 1026 User: wrjlinkkkkkk Language: C++ Result: Accepted Time:60 ms Memory:1288 kb *********************...
阅读全文
摘要:题意:会出石头、剪刀、布的人分别有r,s,p个,他们相互碰到的概率相同,输的人死掉,问最终活下去的人是三种类型的概率 设状态dp(i,j,k)为还有i个石头,j个剪刀,k个布时的概率,dp(r,s,p)=1.0 状态转移方程: d(i-1,j,k)+=d(i,j,k)*(i*k)/(i*j+i*k+
阅读全文

浙公网安备 33010602011771号