DP
什么都不会的菜鸡
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数位DP HDU 4507 求满足条件的平方和
这跟我的上一篇数位DP博客,有点相似,仔细想一下就能明白: 博客:https://blog.youkuaiyun.com/qq_42211531/article/details/86307936 ///#include<bits/stdc++.h> ///#include<unordered_map> ///#include<unordered_set> #inclu...原创 2019-01-21 09:13:34 · 178 阅读 · 0 评论 -
第五届新疆省ACM-ICPC程序设计竞赛
A.Good 的集合 三角形重心的公式 : 我们只需要记录每个点坐标 mod 3 的个数,然后我们可以知道这样就只存在 9 种点集 (0-2)*(0-2) 我们可以二进制枚举每种点集是否存在,然后去check。 十分需要注意的一点:同一个点集的点,最多选取两个,如果选取了两个以上是不满足good点集的要求 代码: ///#include<bits/stdc++.h> ///#...原创 2019-06-02 18:21:45 · 384 阅读 · 0 评论 -
1154F Shovels Shop【DP】
传送门 题意:商店里面有 n 把铲子,商店里有m中优惠方式(可以重复利用优惠方式),要你刚好买 k 把铲子的最小花费。 优惠政策:给你一对(x,y),如果你购买了 x 把铲子,那么将 x 把中y 把最便宜的斧头送给你,即免费。思路:题目上给的 k 的范围 k<=min ( n , 2000 ),要想有最小的花费,那么在购买时肯定选择最便宜的 k 把铲子,然后在考虑使用优惠政策,我们用 d...原创 2019-04-18 15:35:59 · 179 阅读 · 0 评论 -
Power OJ 2854 小Z的糖果难题 【单调栈+倍增】
传送门 中文题目就不在阐述题意 比赛时我们用分块来解决的,但是T掉了。。。 思路:我们使用单调栈维护的每个点可以跳跃到的下一个点,相当于两个点之间可以建一条边(如果不存在下一个点,可以和一个虚拟根结点建边),最后利用倍增求LCA的思想将L,不断向上跳跃,直到不能继续时,当前位置就是最后的位置,两个位置的深度差值就是答案。 ///还有一种解法值 单调栈+树状数组+离线代码: ///#incl...原创 2019-04-18 14:35:44 · 276 阅读 · 0 评论 -
南华大学第十五届ACM 神秘的字符串【区间DP】
传送门 思路:很容易想到这是一道区间DP的题,但是如何写区间DP方程,二维好像表示不了,那三维呢?好像也不好想,那就四维。,表示区间中 u 字符连着消去 k 长度的最大价值( 只有两个字符,即 0和1 ) s 表示区间的一个点,如果 那么dp 转移方程 表示区间的最大价值 细节见代码: ///#include<bits/stdc++.h> ///#include<...原创 2019-04-21 18:25:24 · 306 阅读 · 0 评论 -
树形DP求树的直径 讲解+例题
例题:HDU 2196 Computer(树形dp经典) 传送门 证明: 原文:https://blog.youkuaiyun.com/shuangde800/article/details/9732825 把无根树转化成有根树分析, 对于上面那棵树,要求距结点2的最长距离,那么,就需要知道以2为顶点的子树(蓝色圈起的部分,我们叫它Tree(2)),距顶点2的最远距离L1 还有知道2的父节点...转载 2019-01-21 17:19:13 · 1156 阅读 · 0 评论 -
树形DP求树的直径 【模板】
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; int const MAX = 100005; int head[MAX], dp[MAX][2]; int n, s, cnt, ans; struct EDGE { int v, w,...原创 2019-01-21 17:16:26 · 697 阅读 · 0 评论 -
POJ - 2184 Cow Exhibition (01背包 中 负数的处理)
"Fat and docile, big and dumb, they look so stupid, they aren't much fun..." - Cows with Guns by Dana Lyons The cows want to prove to the public that they are both smart and fun. In order to d...转载 2018-07-08 20:51:12 · 336 阅读 · 0 评论 -
第一周周训 1-1 E大大走格子
大大走格子 有一个h行w列的棋盘,里面有一些格子是不能走的,现在要求从左上角走到右下角的方案数。 Input 单组测试数据。 第一行有三个整数h, w, n(1 ≤ h, w ≤ 10^5, 1 ≤ n ≤ 2000),表示棋盘的行和列,还有不能走的格子的数目。 接下来n行描述格子,第i行有两个整数ri, ci (1 ≤ ri ≤ h, 1 ≤ ci ≤ w),表示格子所在的行和列。 ...原创 2018-09-23 19:29:22 · 233 阅读 · 0 评论 -
区间DP HDU4632
这是我做的第二道区间DP题,开始把题意读错了,导致一直没有思路 题意:给你一个字符串,求里面的回文子序列的数量mod10007. 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4632 因为是判断回文串,所以跟区间的头和尾的字符相关 所以当前dp【i】【j】区间就和区间【i,j-1】和【i+1,j】相关。 当我们考虑区间【i,j】...原创 2018-10-15 20:22:19 · 157 阅读 · 0 评论 -
B number 数位DP
题意很简单就是要你寻找数字含有13字串并且能够被13整除的数。 我自己的写法和大佬的做法都不一样,时间也比他们的慢很多 ,跑了(200+ms)。 大佬的博客:https://blog.youkuaiyun.com/libin56842/article/details/10026063 大佬的DP是三维,而我用了四维,但我认为我的好理解一些,虽然效率不高 dp[pos][pre][mod][flag],...原创 2019-01-07 14:28:51 · 188 阅读 · 0 评论 -
Mondriaan's Dream POJ - 2411 状压(有注释)
状压的方法参考博客:https://blog.youkuaiyun.com/hopeztm/article/details/7841917?utm_source=tuicool&utm_medium=referral 大佬的博客思想很好但是时间复杂度很高。 我利用大佬状压的思想写的DFS记忆化,跑了将近300ms。 ///#include<bits/stdc++.h> ///#in...原创 2019-01-07 21:27:56 · 128 阅读 · 0 评论 -
POJ 1185 炮兵阵地 状压DP
解题方法: 第一个巧妙之处: 第一步先预处理炮车能够放置的位置(其实只有几十种),如果暴力枚举的话,时间空间都不够的。 第二个巧妙之处: 将地图的每一行状压成一个数,山地位置为1,平原为0。为什么这么状压?我们预处理的炮车放置情况,能放炮车的地方为1,不能放置炮车的地方为0,假如炮车放置情况 (1001),如果地图为(1100),我们发现如果二进制的某一位上,二者同时为1,则这个状态是冲突...原创 2019-01-09 09:01:45 · 217 阅读 · 0 评论 -
HDU1074:Doing Homework(状缩DP)
题意:有n门课,每门课有截止时间和完成所需的时间,如果超过规定时间完成,每超过一天就会扣1分,问怎样安排做作业的顺序才能使得所扣的分最小(相同答案输出字典序较小小的答案) 思路:用二进制压缩状态,比如110,表示第二门和第三门课程完成,第一门课程没有完成。我们的dp[i]意思是在i这个状态下能够扣除最低的分数。因为还要记录路径,我们的dp用结构体记录他的上一个状态,以及完成该状态的时间,还有完成...原创 2019-01-09 19:53:04 · 136 阅读 · 0 评论 -
数位DP 求满足条件的和
这是一个板子:求数位DP中满足一些条件的数的和 方法: 如果我们求满足条件的数的个数只需要开一个数组就行。 如果我们求满足条件的数的和,则需要开一个数组结构体 node 里面有两个元素,一个是cnt,一个是sum。 cnt就是记录满足条件的数量,sum就是记录满足条件的数字和。 假设我们的答案 ans ,递归返回的 next (ans,next 均为结构体), 我们更新...原创 2019-01-11 19:02:13 · 315 阅读 · 0 评论 -
2019 西安邀请赛 J And And And【树形DP】
传送门 思路: 如果要求异或为0的路径的个数,这就是一个傻逼题。但是他要求的集合的个数。可以从刚才那个问题扩展开来,问有多少条路径的子路径的异或值为0。这是一个计数的问题,我们知道异或有一个性质 x^x=0 1为树的根节点,xor[i] 表示i到根节点路径上的的异或值 我们可以发现当两个点(s,e)不在一条链上时,ans 应该加上 size[s]*size[e] 如果两个点在一条链上的时候( ...原创 2019-07-17 11:24:57 · 344 阅读 · 0 评论
分享