随笔分类 -  动态规划--------------------------

摘要:【题意】给定无向图,聪聪和可可各自位于一点,可可每单位时间随机向周围走一步或停留,聪聪每单位时间追两步(先走),问追到可可的期望时间。n<=1000。 【算法】期望DP+记忆化搜索 【题解】首先因为聪聪的步数大于可可,所以不可能出现循环,因此是DAG上的期望DP,用记忆化搜索解决。 每个点bfs预处 阅读全文
posted @ 2018-03-06 21:20 ONION_CYC 阅读(305) 评论(2) 推荐(1)
摘要:【题意】有n道题,第i道题有ai个选项。把第i道题的正确答案填到第i+1道题上(n填到1),问期望做对几道题。n<=10^7。 【算法】期望DP 【题解】正确答案的随机分布不受某道题填到后面是否正确影响,因此每道题对的期望都是独立的。 从排列的角度分析,对每道题有a[i-1]个选择和a[i]个选项, 阅读全文
posted @ 2018-03-06 20:13 ONION_CYC 阅读(248) 评论(0) 推荐(0)
摘要:【题意】有n种不同的邮票,第i次可以花i元等概率购买到一种邮票,求集齐n种邮票的期望代价。n<=10^4。 【算法】期望DP 【题解】首先设g[i]表示已拥有i张邮票集齐的期望购买次数,根据全期望公式,可以依赖于买到已集和未集邮票的情况: $$g[i]=\frac{i}{n}*g[i]+\frac{ 阅读全文
posted @ 2018-03-06 19:50 ONION_CYC 阅读(371) 评论(0) 推荐(0)
摘要:【题意】有一个长度为n的01序列,每一段极大的连续1的价值是L^3(长度L)。现在给定n个实数表示该位为1的概率,求期望总价值。n<=10^5。 【算法】期望DP 【题解】后缀长度是一个很关键的量,设g[i]表示前i个的期望后缀长度。根据全期望公式,依赖于第i-1位为0或1:(以下所有公式最后省略+ 阅读全文
posted @ 2018-03-06 19:10 ONION_CYC 阅读(353) 评论(0) 推荐(0)
摘要:【题意】给定n个点的带边权树,每次询问给定ki个特殊点,求隔离点1和特殊点的最小代价。n<=250000,Σki<=500000。 【算法】虚树+DP 【题解】考虑普通树上的dp,设f[x]表示隔离1和子树x内特殊点的最小代价,val[x]表示x到1路径上的最小代价(预处理)。 点x特殊,f[x]= 阅读全文
posted @ 2018-02-25 21:09 ONION_CYC 阅读(254) 评论(0) 推荐(0)
摘要:【题意】给定01矩阵,求最大全1子矩阵。n,m<=1000。 【算法】动态规划(悬线法) 【题解】★对于01矩阵中的任意一个全1极大子矩阵,都可以在其上边界遇到的障碍点处悬线到下边界的点x,则点x唯一对应了一个极大子矩阵,那么至多有n*m个极大子矩阵,而最大子矩阵一定是极大子矩阵,故求解复杂度O(n 阅读全文
posted @ 2018-01-18 16:46 ONION_CYC 阅读(214) 评论(0) 推荐(0)
摘要:【题目】D. Animals and Puzzle 【题意】给定n*m的01矩阵,Q次询问某个子矩阵内的最大正方形全1子矩阵边长。n,m<=1000,Q<=10^6。 【算法】动态规划DP+二维ST表 【题解】设f[i][j]为以(i,j)为右下角的最大正方形全1子矩阵。 f[i][j]=min{ 阅读全文
posted @ 2018-01-17 21:56 ONION_CYC 阅读(337) 评论(0) 推荐(0)
摘要:【题目】C. Sonya and Problem Wihtout a Legend 【题意】给定n个数字,每次操作可以对一个数字±1,求最少操作次数使数列递增。n<=10^5。 【算法】动态规划+前缀和优化 【题解】★令b[i]=a[i]-i,则a[i]递增等价于b[i]不递减。 这样做之后,显然数 阅读全文
posted @ 2018-01-17 19:22 ONION_CYC 阅读(252) 评论(0) 推荐(0)
摘要:【题意】给定n个人的ai和bi,表示第i个人能力值为ai且不能和bi同时选择,求能力值和最大的选择方案。n<=10^6。 【算法】环套树DP(基环树) 【题解】n个点n条边——基环森林(若干环套树子图)。 若原图是树,经典DP做法:f[i][0/1]表示i点选或不选的最大能力值和,则f[i][0]= 阅读全文
posted @ 2018-01-17 12:52 ONION_CYC 阅读(337) 评论(0) 推荐(0)
摘要:【题目】C. Black Widow 【题意】给定一个表达式,形式为(...)^(...)^......^(...)=1(n个括号),括号中为1~2个值取或。有m个变量,给出表达式的值为xi或 !xi,xi只能为0或1,求变量赋值使得表达式成立的方案数。每个变量至多出现两次。n,m<=10^5。 【 阅读全文
posted @ 2018-01-16 19:07 ONION_CYC 阅读(543) 评论(0) 推荐(0)
摘要:【题意】n个人进行游戏,每轮只保留最大的a[i]倍数的人,最后一轮过后剩余2人,求最小和最大的n,或-1。n<=10^5。 【算法】递推||二分 【题解】令L(i),R(i)表示第i轮过后的最小人数和最大人数。 令X(i)和Y(i)表示区间[L(i),R(i)]中最小的a[i]倍数和最大的a[i]倍 阅读全文
posted @ 2018-01-15 10:58 ONION_CYC 阅读(340) 评论(0) 推荐(1)
摘要:【题目】B. Ant Man 【题意】给定n个人的xi,ai,bi,ci,di,起点为s,终点为e,移动: In simpler words, jumping from i-th chair to j-th chair takes exactly: |xi - xj| + ci + bj secon 阅读全文
posted @ 2018-01-12 22:03 ONION_CYC 阅读(393) 评论(0) 推荐(0)
摘要:【题目】F. Strongly Connected Tournament 【题意】给定n个点(游戏者),每轮游戏进行下列操作: 1.每对游戏者i和j(i<j)进行一场游戏,有p的概率i赢j(反之j赢i),连边从赢者向输者,从而得到一个有向完全图。 2.对于其中点数>1的强连通分量再次进行过程1,直至 阅读全文
posted @ 2018-01-10 09:37 ONION_CYC 阅读(435) 评论(0) 推荐(2)
摘要:【题意】给定n台在时间di可以买入的机器,pi买入,可在任意时间ri卖出,买入和卖出之间的持有时间每天产生gi金钱,任意时间至多持有一台机器。给定初始钱数c和总天数T,求最大收益。n<=10^5。 【算法】动态规划+斜率优化(CDQ分治) 【题解】机器按di排序,添加一台时间为T+1的机器,令f[i 阅读全文
posted @ 2018-01-09 19:08 ONION_CYC 阅读(384) 评论(0) 推荐(1)
摘要:【题意】初始资金s,有两种金券A和B,第i天,买入时将投入的资金购买比例为rate[i]的两种股票,卖出时将持有的一定比例的两种股票卖出,第i天股票价格为A[i],B[i],求最大获利。n<=100000。 【算法】动态规划+斜率优化(CDQ分治) 【题解】为了最大获利,每次交易一定是全部买进和全部 阅读全文
posted @ 2018-01-08 14:59 ONION_CYC 阅读(294) 评论(0) 推荐(0)
摘要:【题目】C. LRU 【题意】给定空间为k的背包和n个物品,每次每个物品有pi的概率加入(Σpi=1),加入时若发现背包中已有该物品则不改变,若背包满k个物品后再加入新物品则弹出最早加入的物品,求加入10^100次后每个物品在背包中的概率。n,k<=20 【算法】概率DP 【题解】进行10^100次 阅读全文
posted @ 2018-01-05 11:32 ONION_CYC 阅读(287) 评论(0) 推荐(1)
摘要:【题目】Good Bye 2017 D. New Year and Arbitrary Arrangement 【题意】给定正整数k,pa,pb,初始有空字符串,每次有pa/(pa+pb)的可能在字符串末尾+a,有pb/(pa+pb)的可能在字符串末尾+b,求加到组成至少k对子序列“ab"时的期望子 阅读全文
posted @ 2018-01-05 07:00 ONION_CYC 阅读(612) 评论(0) 推荐(0)
摘要:【题意】给定n个数字ai和L,R,ai=0代表在L~R中任取,求最长上升子序列。n<=10^5,0<=ai<=10^5。 【算法】DP+平衡树(fhq-treap) 【题解】对于LIS,有两种经典O(n^2)的递推式,即 ①f[i]表示以 i 结尾的LIS,f[i]=max(f[k]+1),k<i& 阅读全文
posted @ 2017-12-23 10:17 ONION_CYC 阅读(327) 评论(0) 推荐(0)
摘要:【题目】D. Roads in Yusland 【题意】给定n个点的树,m条从下往上的链,每条链代价ci,求最少代价使得链覆盖所有边。n,m<=3*10^5,ci<=10^9,time=4s。 【算法】树形DP+线段树||可并堆 【题解】从每条边都需要一条链来覆盖的角度出发,令f[i]表示覆盖子树 阅读全文
posted @ 2017-12-22 11:44 ONION_CYC 阅读(695) 评论(0) 推荐(0)
摘要:【题目】E - Smuggling Marbles 【题意】给定n+1个点的树(root=0),每个点可以选择放或不放弹珠,每一轮顺序进行以下操作: 1.将根节点0的弹珠加入答案。 2.每个点的弹珠移向父亲。 3.如果一个点有超过2个弹珠,全部丢掉。 如果树中仍有弹珠,继续下一轮。 共有2^(n+1 阅读全文
posted @ 2017-12-11 22:04 ONION_CYC 阅读(632) 评论(0) 推荐(1)