算法——DP
DSL_HN_2002
一名中学生oier,已退役
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
「CERC2017」Embedding Enumeration-DP
Description给定一个 nnn 个点的树。你需要将它放到一个 2×n2 \times n2×n 的网格里,每个格子至多放一个点,在树上相邻的点在网格中也必须相邻,并且 111 号点必须放在左上角。求方案数对 109+710^9+7109+7 取模的结果。n≤105n \leq 10^5n≤105Solution设fuf_ufu表示把uuu放在左上角的方案数。uuu是叶子。显...原创 2020-04-19 14:24:49 · 633 阅读 · 0 评论 -
「LOJ6032」「雅礼集训 2017 Day2」水箱-DP+线段树
Description给出一个长度为 nnn 宽度为 111,高度无限的水箱,有 n−1n - 1n−1 个挡板将其分为 nnn 个 1 - 1 的小格,然后向每个小格中注水,水如果超过挡板就会溢出到挡板的另一边,这里的水是满足物理定律的(在无挡板阻拦的情况下会向低处流),现在有 mmm 个条件 (i,y,k)(i, y, k)(i,y,k),表示从左到右数的第 iii 个格子中,在高度为 y+...原创 2019-07-14 22:34:36 · 348 阅读 · 0 评论 -
「ZJOI2019」打麻将-DP
Description链接Solution考虑如何判断一个牌的集合是胡的。首先第一种牌型只需记录有多少中牌出现次数超过222。对于第二种牌型,可以用DP解决。设f0/1,i,j,kf_{0/1,i,j,k}f0/1,i,j,k已经考虑了前iii种大小,表示之前是否预留了对子,之前预留了jjj对i−1,ii-1,ii−1,i,以及kkk个iii用于凑顺子(大小相邻的麻将牌)。每次...原创 2019-04-16 16:57:01 · 341 阅读 · 0 评论 -
「HNOI2019」校园旅行-DP
Description给定nnn个点,mmm条边的图。每个点有0/10/10/1的标号,有QQQ个询问,每次询问点对(u,v)(u,v)(u,v)间是否一条路径(不一定是简单路径),满足路径经过的点的标号所形成的串是回文串。n≤5000,m≤5000000n \leq 5000, m \leq 5000000n≤5000,m≤5000000Solution设fi,jf_{i,j}fi,j...原创 2019-04-09 20:38:19 · 373 阅读 · 0 评论 -
「LOJ6078」「2017 山东一轮集训 Day7」重排-DP
Description链接Solution先假设没有自环。直接按拓扑序进行DP。设fif_ifi表式点iii到ttt的期望代价。把出边与出点的fff两两匹配,形成k2k^2k2个二元组。然后考虑求出匹配方案的最小值≥\ge≥当前二元组的概率。算概率等同于算方案数。Rabbit Number即可。如果有自环,发现题目要求保存666位小数,可以把当前的fuf_ufu丢进去迭代计算,直到...原创 2019-01-02 13:24:13 · 732 阅读 · 1 评论 -
「WC2018」州区划分-FWT+状压DP
Description链接Solution首先我们可以轻松预处理出满足条件的点集。设fsf_sfs表示点集sss的点组成州的方案数的满意度之和,sumssum_ssums表示点集sss的人口的ppp次方,当sss为合法州区时,gs=sumsg_s=sum_sgs=sums,否则gs=0g_s=0gs=0。那么,fS=∑T⊆S,T≠∅gT×fS−TsumSf_S=\sum_{T...原创 2018-12-13 15:43:20 · 363 阅读 · 0 评论 -
「WC2018」通道-边分治+虚树+DP
Description给定三棵树,最大化dista(x,y)+distb(x,y)+distc(x,y)dista(x,y)+distb(x,y)+distc(x,y)dista(x,y)+distb(x,y)+distc(x,y)。n≤100000n \leq 100000n≤100000Solution先考虑两棵树怎么做。点对(x,y)(x,y)(x,y)的贡献为depax+depa...原创 2018-12-12 23:07:14 · 429 阅读 · 0 评论 -
「清华集训2014」简单回路-插头DP
Description链接Solution直接做QQQ次插头DP得分为606060。考虑题目中只询问了竖直的边,所以考虑分别做一遍前后缀插头DP,记录下每一行的每种轮廓线对应的方案数,询问时合并轮廓线。两条轮廓线互补相当于把轮廓线上的边连起来能形成一个环,用并查集判就行了。#include <bits/stdc++.h>using namespace std;type...原创 2018-12-12 15:15:34 · 373 阅读 · 0 评论 -
「HAOI2010」最长公共子序列-DP
Decription给定两个字符串,求他们最长的公共子序列长度,以及最长公共子序列个数。n≤5000n≤5000n \leq 5000Solution最长公共序列直接O(n2)O(n2)O(n^2)DP即可。重点是如何求出最长公共子序列个数。设fi,jfi,jf_{i,j}表示第一个串匹配到iii,第二个串匹配到jjj的最长公共子序列长度。gi,jgi,jg_{i,j}则表示最...原创 2018-09-04 22:22:10 · 249 阅读 · 0 评论 -
「NOI2015」寿司晚宴-数论,DP
Decription求将2−n2−n2-n的数划分成两个集合(有的数可以不用)的满足条件方案数。条件是两个集合中的数互质。n⩽500n⩽500n \leqslant 500Solution考虑n⩽20n⩽20n \leqslant 20的情况,这时候总共只有888个质数,所以可以状压两个集合所包含的素数集合,每次枚举这个数被谁选择即可。对于n⩽500n⩽500n \le...原创 2018-08-06 08:23:40 · 370 阅读 · 0 评论 -
「SDOI2015」序列统计-DP+NTT
Decription给定集合SSS,集合SSS中的元素都小于等于MMM.求有多少种数列满足长度为nnn,且数列中元素乘积modMmodM\mod M的值为XXX.Solution10pts10pts10pts:设fi,jfi,jf_{i,j}表示数列中填了iii个数,乘积modmmodm\mod m为jjj的方案数,每次枚举有下一元素modMmodM\mod M的值即可.60p...原创 2018-07-01 00:21:44 · 391 阅读 · 0 评论 -
[HNOI2018]道路(DP)
Description咕咕咕。。。Solution设f[u][i][j]f[u][i][j]f[u][i][j]表示根节点到uuu一共经过了iii条未修的铁路,jjj条未修的公路。 若uuu是叶子节点,那么 f[u][i][j]=ci∗(ai+x)∗(bi+y)f[u][i][j]=ci∗(ai+x)∗(bi+y)f[u][i][j]=c_i*(a_i+x)*(b_i+y) 否则...原创 2018-04-16 13:12:36 · 259 阅读 · 0 评论
分享