DP
文章平均质量分 62
各种动态规划(普通,树形,状态。。。)
睡神...
一切伟大的思想,都有一个微不足道的开始。。。
展开
-
传纸条:看似很巧实则套路
P1006 [NOIP2008 提高组] 传纸条题目地址分析:此题可以用搜索但是判断两条路有没有重叠是有一点小麻烦的,本人直接切正解:DP我们排两个哨兵从左上走到右下,两条路去探索。这样的话,dp应该是四维的,分别记录两个点的坐标:f[x1][y1][x2][y2]f[x1][y1][x2][y2]f[x1][y1][x2][y2] 存的是最大好感度但我们又可以省一维。因为两个指针的横纵坐标之和是一定的。因为每次只能向下或向右走,所以每次不是横坐标+1,就是纵坐标+1,也就是说对于每个哨兵,原创 2021-03-28 11:39:15 · 207 阅读 · 0 评论 -
加强版密码锁:xxsQAQ
加强版密码锁原创 2021-03-20 07:32:40 · 536 阅读 · 0 评论 -
一题多解之守望者逃离
P1095 [NOIP2007 普及组] 守望者的逃离此题有较为多种解法:DP,贪心,数学解法本文章只介绍其中的两种DP做法和贪心做法解法一:二维DP解法二:一维DP解法三:贪心做法原创 2021-03-19 22:57:51 · 220 阅读 · 0 评论 -
栓奶牛:二分更胜DP一筹
栓奶牛解法一:二分很明显题目说了:最小值最大,满足单调性,因此可以二分解释一下:题目要求:距离最近的奶牛之间的距离尽可能大。那么也就是说,两头奶牛要尽量间隔的远一些,即间隔大一点,组数少一点。此时有一个小贪心,那就是第一个桩子肯定要选。我们二分题目所求的最大距离(间隔),如果这个间隔k,可行的话,我们要继续看再大一点可不可以,这就是l=mid+1;如果k不行,意味着,间隔太大了,那么我们要调小,就是r=mid-1;这就是所谓的单调性。二分的复杂度是非常优秀的logn,完全不用担.原创 2021-03-18 18:21:35 · 451 阅读 · 0 评论 -
POJ 2411 Mondriaan‘s Dream
Mondriaan's DreamPOJ题目一道看起来超级难,但代码很短的状压DP还是用01来刻画图,每一个11的小正方形是0,所以说横着放的12的长方形0的个数总会是2的倍数,也就是说不可能有连续的奇数个0;竖着放的1*2的长方形看做是1,比如说第1行是1,那么第二行的那个位置就是0,竖着放,上下各一半嘛。f[i,j]表示第i行的形态为j时,前i行的方案总数,j是用十进制数记录的N位二进制数。第i-1行的形态k能转移到第i行的形态j,只有一下两种情况:1.j和k位与运算的结果.原创 2020-08-11 21:23:09 · 195 阅读 · 0 评论 -
P1879 [USACO06NOV]Corn Fields G
P1879 [USACO06NOV]Corn Fields Ghttps://www.luogu.com.cn/problem/P1879首先这道题,一般的区间DP状态不太好设计,很难确定父子关系。这道题有很鲜明的特征:1.01矩阵2.1 ≤ M ≤ 12; 1 ≤ N ≤ 12所以这就使人很容易想到状压DP。下面详细说说:f[i][j]表示前[i]行的状态为j时的合法方案数mp[i]刻画的是土地possi[i]判断是否合法步骤:1.读进来土地,把它二进制转十原创 2020-08-11 20:59:05 · 276 阅读 · 0 评论 -
最大连续子序列和
最大连续子序列和是一个十分规整的dp举个例子:-2,11,-4,13,-5,2显然,在这个情况下,11+(-4)+13+(-5)+2=20是最大的和。也很显然,这个问题可用暴力直接扫,但效率极低,数据一大,就完全TLE所以这就要用到高效率的DP(动态规划)f[i]表示以a[i]结尾的最长连续子序列和,会有以下两种情况:1.序列中只有一个元素,即a[i]开头,a[i]结尾。那么f[i]=a[i]2.序列中有多个元素,比如说从前面某处x开始(x<i)一直到a[i]结尾(a[x]原创 2020-08-10 16:18:08 · 159 阅读 · 0 评论 -
加分二叉树
加分二叉树LOJ链接洛谷链接1.本题还是采用DP的做法。2.f[i][j]表示顶点i到顶点j所组成的子树的最大值3.root[i][j]表示根编号4.具体细节在程序里//加分二叉树,f[i][j]表示顶点i~顶点j组成的子树的最大值,root是编号 #include <bits/stdc++.h>using namespace std;typedef long long ll;ll f[35][35],root[35][35];inline ll se原创 2020-08-08 10:40:11 · 171 阅读 · 0 评论 -
洛谷P1352 没有上司的舞会 题解
没有上司的舞会https://www.luogu.com.cn/problem/P13521.造树 2.DP2.1 f[x][0]表示以x为根,x不参加,所得的最大快乐指数。x不参加,那么他的下属y可以参加也可以不参加,所以f[x][0]=max(f[y][0],f[y][1])2.2 f[x][1]表示以x为根,x参加,所得的最大快乐指数。x参加了,那么他的直接属下y将不能参加,所以f[x][1]+=f[y][0];#include <bits/stdc++.h>usi原创 2020-08-08 09:08:42 · 298 阅读 · 0 评论