随笔分类 - 动态规划 状压DP
摘要:【题目】 "1920 空间统计学" 【题意】给定m维空间中的n个点坐标,满足每一维坐标大小都在[0,3]之间,现在对于[0,3 m]的每个数字x统计曼哈顿距离为x的有序点对数。$n \leq 2 10^5,m \leq 9$。 【算法】状压DP m范围很小,考虑设计状压DP的状态,可以想到设到达某个
阅读全文
摘要:【题意】n个点等距排列在长度为n-1的直线上,初始点1~k都有一辆公车,每辆公车都需要一些停靠点,每个点至多只能被一辆公车停靠,且每辆公车相邻两个停靠点的距离至多为p,所有公车最后会停在n-k+1~n。给定n,k,p,求满足要求的方案数%30031。n<=10^9,k<=p<=10。 【算法】状压D
阅读全文
摘要:【题意】n种宝物,k关游戏,每关游戏给出一种宝物,可捡可不捡。每种宝物有一个价值(有负数)。每个宝物有前提宝物列表,必须在前面的关卡取得列表宝物才能捡起这个宝物,求期望收益。k<=100,n<=15。 【算法】期望DP+状压DP 【题解】主要需要记录的状态是前缀已有宝物,所以设f[i][S]表示前i
阅读全文
摘要:【题意】Universal Online Judge 【算法】状态压缩型DP 【题解】看数据范围大概能猜到是状压了。 根据三点确定一条抛物线,枚举两个点之间的抛物线,再枚举有多少点在抛物线上(压缩为状态c[]),这样预处理出至多n*n/2+n条抛物线。(注意加上只经过一点的抛物线) 然后f[i]表示
阅读全文
摘要:【算法】状压DP 【题解】对于上一行的每个状态,每行进行DFS。 #include<cstdio> #include<algorithm> #include<cstring> #define ll long long using namespace std; const int maxn=20,ma
阅读全文
摘要:【题意】http://www.lydsy.com/JudgeOnline/problem.php?id=4565 【算法】区间DP+状压DP 【题解】 题外话: 区间DP的状态转移特点是一次转移只做一次合并,小合并由小区间做好传递,这样就能处理好复杂的区间问题。 数据范围k这么小而且和01有关,果断
阅读全文
摘要:第一题 模拟送分。 #include<cstdio> #include<cstring> #include<cctype> #include<cmath> #include<algorithm> #define ll long long using namespace std; int read()
阅读全文
摘要:【算法】最短路(floyd)+状态压缩型动态规划 【题解】 经典的TSP问题(货郎担问题):求最小权哈密顿回路(遍历全图点一次且仅一次)。本题稍作改动,先说原TSP问题解法:状压DP。 状态用二进制表示每个点是否走过(状态也包括最后走的点),状态转移关键在于每个点都有且只有另一个点指向它,所以先可以
阅读全文
摘要:【动态规划杂记】状态+转移 参考:夜深人静写算法(二) - 动态规划 核心:划分阶段-状态表示-状态转移方程。 复杂度:状态数O(n^t),转移O(n^e),则称为tD/eD问题。 1.最优化问题和方案数问题常考虑DP,特定数问题不考虑DP。 2.断层思想:划分状态,从计算过的状态去答案,这就是无后
阅读全文
摘要:【算法】状态压缩型DP 【题解】http://www.cnblogs.com/xtx1999/p/4620227.html (orz) https://www.cnblogs.com/zbtrs/p/6189240.html dp[i][j][k]为前i行已经放了j个国王并且第i行的状态为k(二进制
阅读全文
摘要:【算法】状态压缩型DP 【题解】 Q=tx+(t-1)y 对于Q≥t(t-1),x,y一定有解。 所以当两石子间距离long>t(t-1)时,令long=t(t-1),重新构造数组即可。 【注意】 1.输入的石子位置无序,要排序。 2.当s=t时特判。 3.最终解要在n~n+t中找最小值(不过数据太
阅读全文
摘要:【算法】 【算法】网络流 【算法】树 【算法】数学 ————【专题】生成树计数(矩阵树定理) ————【专题】计数问题(排列组合,容斥原理,卡特兰数) ————【算法专题】卡特兰数(计数数列) ————【专题】数论 ————【专题】概率和期望 【算法】动态规划 【算法】数据结构 ————【专题】平衡
阅读全文