DP
哒哒哒哒哒嘭
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
CodeForces - 429B
思路 取四个角到某一点的距离的最大值 对角即为一个人的路线 其中#include<bits/stdc++.h>typedef long long ll;const int maxn=1010;ll dp1[maxn][maxn],dp2[maxn][maxn],dp3[maxn][maxn],dp4[maxn][maxn];ll a[1010][1010];using...原创 2018-05-09 22:41:58 · 226 阅读 · 0 评论 -
Bigger is Better UVA - 12105 dp
用两个数组 一个dp[i][j]表示用i根火柴 余数为j的数字最大位数 而p[i][j]记录一下这个位数中的最右边的那个数字是什么#include<cstdio>#include<cstring>using namespace std;const int maxn = 100 + 5;const int maxm = 3000 + 5;// dp[i]...原创 2018-09-02 21:18:04 · 226 阅读 · 0 评论 -
Fixing the Great Wall UVA - 1336 区间dp+前缀和+记忆化
紫书代码 dp中表示方向的p 因为机器人的有效位置肯定是i j两个点上 所以只要判断 是从左端点出发还是从右端点出发就能很快得计算出路程的时间 p=0时表示当前位于左边如果想要J+1 就要 j+1的标号x减去i的x 其他位置同理同时最后要加上 每个点时间为0的修理费用#include<bits/stdc++.h>using namespace std;const...原创 2018-09-02 20:24:55 · 220 阅读 · 0 评论 -
Dropping water balloons UVA - 10934 dp 有点难想
思路 dp[i][j]表示用i个球实验j次款所能测试的楼的最高层数 这个层数 不是从1开始的狭义的层数 是一个所能测的的层数的值 比如 在2 楼 如果所能测试的最高层数为5 则最高的所能测的层数位2+5=7如果气球破了 当前测试的楼层位k dp[i-1][j-1]+1 ==k 如果没破 当前测试的楼层位k dp[i][j]=k+dp[i][j-1]表示测试之后没破则 i个球测j...原创 2018-09-02 16:17:52 · 236 阅读 · 0 评论 -
Tango Tango Insurrection UVA - 10618 多转移dp 终点逆推
紫书的代码 多转移问题 从终点逆推 #include<cstdio>#include<cstring>#include<cassert>const int UP = 0;const int LEFT = 1;const int RIGHT = 2;const int DOWN = 3;const int maxn = 70 + 5;/...原创 2018-09-02 14:33:36 · 232 阅读 · 0 评论 -
Fund Management UVA - 1412 状压dp 状态的表示
太菜 看紫书代码看半天见注释 主要是状态难表达 转移倒是非常简单#include<cstdio>#include<cstring>#include<vector>#include<map>using namespace std;const double INF = 1e30;const int maxn = 8;const i...原创 2018-09-01 17:28:11 · 260 阅读 · 0 评论 -
Twenty Questions UVA - 1252 状压dp 子集生成
题意有点绕 等于说是求最优策略下 即排除方案最优的情况下 需要排除最多次的集合的排除次数 详见代码注释#include<bits/stdc++.h>const int maxn=13;char objects[300][200];int d[1<<maxn][1<<maxn],cnt[1<<maxn][1<<maxn],...原创 2018-09-01 15:31:01 · 242 阅读 · 0 评论 -
Headmaster's Headache UVA - 10817 dp集合构造
紫书dp 用位表示集合 其中位运算集合需要注意下#include<bits/stdc++.h>using namespace std ;int m,n,s;int d[150][1<<10][1<<10];int c[150];int st[150];string temp;const int INF=1<<20;int dp...原创 2018-08-31 22:14:12 · 254 阅读 · 0 评论 -
Perfect Service UVA - 1218 树形dp
紫书dp 主要是状态的确定 无根树转有根树 d(u,2)的状态转移很有意思 详见代码注释#include<bits/stdc++.h>using namespace std;int n;const int maxn=10000+5;const int INF=1<<20;vector<int>G[maxn],vertices;int p[ma...原创 2018-08-31 20:47:17 · 273 阅读 · 1 评论 -
Party at Hali-Bula UVA - 1220 树的最大独立集
紫书dp #include<bits/stdc++.h>using namespace std;int n;int cnt=0;int d[205][3],f[205][3];//d(u,0) f(u,0)标志以u为根的子树中不选u点所能得到的最大人数以及方案的唯一性 f(u,0)=k k==1唯一 0不唯一而d(u,1) f(u,1)则是取u点的最大人数 v...原创 2018-08-31 19:23:06 · 216 阅读 · 0 评论 -
POJ1651 dp 最优矩阵链乘
dp[i][j] i j代表矩阵的边 dp[i][j]等于乘法次数状态转移:dp[i][j]=min(dp[i][k]+dp[k][j]+p[i]*p[k]*p[j])#include<cstdio>#include<iostream>#include<cstring>using namespace std;int a[105];in...原创 2018-08-28 21:32:18 · 244 阅读 · 0 评论 -
Color Length UVA - 1625 dp
紫书上的代码 其中运用了滚动数组 (i-1,j) (0,j) (i,j-1) (1,j-1) (i, j) (1,j-1) (i,j+1) (i+1,j-1) (i+1,j) 其中(i+1,j)要用上和左的数据 所以t 在每一行的循环结尾要 t^=1才能使用到上一行1的数据 #include<cs...原创 2018-08-28 20:45:34 · 190 阅读 · 0 评论 -
牛客练习赛24 三轮 dp
5W的数据范围没想到背包能过 惊了dp[j+x]=dp[j]+dp[j+x]; x为物品体积 dp[x]为x体积下 的方案数 #include<bits/stdc++.h>using namespace std;int dp[100010];int main(){int n,m;cin>>n>>m;int x;dp[0]=1; ...原创 2018-08-11 13:08:25 · 197 阅读 · 0 评论 -
Shopping Offers 状态压缩DP+背包
思路:一种商品最多能买5个所以可以用六进制数表示 状态压缩DP 转化成背包问题 一种组合看作一个新的类型的物品#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#define inf 0x3f3f3f3f3fusing namespace std;...原创 2018-05-21 22:51:23 · 214 阅读 · 0 评论 -
Double Patience UVA - 1637 dp+概率
注意 一个是等概率选择 则 d[i]为后继状态的成功概率的平均值 意思是 如果取了 牌堆 1 2的牌后 剩下的选择只有 取1 3 后才能成功 则取 1 2成功的概率 为 取 1 3的方案 即 1 除以总方案数#include<bits/stdc++.h>using namespace std;char card[9][4][3];map<vector&l...原创 2018-09-08 15:33:56 · 252 阅读 · 0 评论
分享