![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DP
什么都不会的菜鸡
这个作者很懒,什么都没留下…
展开
-
数位DP HDU 4507 求满足条件的平方和
这跟我的上一篇数位DP博客,有点相似,仔细想一下就能明白:博客:https://blog.csdn.net/qq_42211531/article/details/86307936///#include<bits/stdc++.h>///#include<unordered_map>///#include<unordered_set>#inclu...原创 2019-01-21 09:13:34 · 135 阅读 · 0 评论 -
第五届新疆省ACM-ICPC程序设计竞赛
A.Good 的集合三角形重心的公式 :我们只需要记录每个点坐标 mod 3 的个数,然后我们可以知道这样就只存在 9 种点集 (0-2)*(0-2)我们可以二进制枚举每种点集是否存在,然后去check。十分需要注意的一点:同一个点集的点,最多选取两个,如果选取了两个以上是不满足good点集的要求代码:///#include<bits/stdc++.h>///#...原创 2019-06-02 18:21:45 · 307 阅读 · 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 · 138 阅读 · 0 评论 -
Power OJ 2854 小Z的糖果难题 【单调栈+倍增】
传送门中文题目就不在阐述题意比赛时我们用分块来解决的,但是T掉了。。。思路:我们使用单调栈维护的每个点可以跳跃到的下一个点,相当于两个点之间可以建一条边(如果不存在下一个点,可以和一个虚拟根结点建边),最后利用倍增求LCA的思想将L,不断向上跳跃,直到不能继续时,当前位置就是最后的位置,两个位置的深度差值就是答案。///还有一种解法值 单调栈+树状数组+离线代码:///#incl...原创 2019-04-18 14:35:44 · 227 阅读 · 0 评论 -
南华大学第十五届ACM 神秘的字符串【区间DP】
传送门思路:很容易想到这是一道区间DP的题,但是如何写区间DP方程,二维好像表示不了,那三维呢?好像也不好想,那就四维。,表示区间中 u 字符连着消去 k 长度的最大价值( 只有两个字符,即 0和1 )s 表示区间的一个点,如果 那么dp 转移方程 表示区间的最大价值细节见代码:///#include<bits/stdc++.h>///#include<...原创 2019-04-21 18:25:24 · 257 阅读 · 0 评论 -
树形DP求树的直径 讲解+例题
例题:HDU 2196 Computer(树形dp经典)传送门证明:原文:https://blog.csdn.net/shuangde800/article/details/9732825 把无根树转化成有根树分析,对于上面那棵树,要求距结点2的最长距离,那么,就需要知道以2为顶点的子树(蓝色圈起的部分,我们叫它Tree(2)),距顶点2的最远距离L1还有知道2的父节点...转载 2019-01-21 17:19:13 · 1111 阅读 · 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 · 627 阅读 · 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 · 292 阅读 · 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 · 192 阅读 · 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 · 114 阅读 · 0 评论 -
B number 数位DP
题意很简单就是要你寻找数字含有13字串并且能够被13整除的数。我自己的写法和大佬的做法都不一样,时间也比他们的慢很多 ,跑了(200+ms)。大佬的博客:https://blog.csdn.net/libin56842/article/details/10026063大佬的DP是三维,而我用了四维,但我认为我的好理解一些,虽然效率不高dp[pos][pre][mod][flag],...原创 2019-01-07 14:28:51 · 150 阅读 · 0 评论 -
Mondriaan's Dream POJ - 2411 状压(有注释)
状压的方法参考博客:https://blog.csdn.net/hopeztm/article/details/7841917?utm_source=tuicool&utm_medium=referral大佬的博客思想很好但是时间复杂度很高。我利用大佬状压的思想写的DFS记忆化,跑了将近300ms。///#include<bits/stdc++.h>///#in...原创 2019-01-07 21:27:56 · 89 阅读 · 0 评论 -
POJ 1185 炮兵阵地 状压DP
解题方法:第一个巧妙之处:第一步先预处理炮车能够放置的位置(其实只有几十种),如果暴力枚举的话,时间空间都不够的。第二个巧妙之处:将地图的每一行状压成一个数,山地位置为1,平原为0。为什么这么状压?我们预处理的炮车放置情况,能放炮车的地方为1,不能放置炮车的地方为0,假如炮车放置情况 (1001),如果地图为(1100),我们发现如果二进制的某一位上,二者同时为1,则这个状态是冲突...原创 2019-01-09 09:01:45 · 167 阅读 · 0 评论 -
HDU1074:Doing Homework(状缩DP)
题意:有n门课,每门课有截止时间和完成所需的时间,如果超过规定时间完成,每超过一天就会扣1分,问怎样安排做作业的顺序才能使得所扣的分最小(相同答案输出字典序较小小的答案)思路:用二进制压缩状态,比如110,表示第二门和第三门课程完成,第一门课程没有完成。我们的dp[i]意思是在i这个状态下能够扣除最低的分数。因为还要记录路径,我们的dp用结构体记录他的上一个状态,以及完成该状态的时间,还有完成...原创 2019-01-09 19:53:04 · 86 阅读 · 0 评论 -
数位DP 求满足条件的和
这是一个板子:求数位DP中满足一些条件的数的和 方法:如果我们求满足条件的数的个数只需要开一个数组就行。如果我们求满足条件的数的和,则需要开一个数组结构体 node 里面有两个元素,一个是cnt,一个是sum。cnt就是记录满足条件的数量,sum就是记录满足条件的数字和。假设我们的答案 ans ,递归返回的 next (ans,next 均为结构体),我们更新...原创 2019-01-11 19:02:13 · 250 阅读 · 0 评论 -
2019 西安邀请赛 J And And And【树形DP】
传送门思路:如果要求异或为0的路径的个数,这就是一个傻逼题。但是他要求的集合的个数。可以从刚才那个问题扩展开来,问有多少条路径的子路径的异或值为0。这是一个计数的问题,我们知道异或有一个性质 x^x=01为树的根节点,xor[i] 表示i到根节点路径上的的异或值我们可以发现当两个点(s,e)不在一条链上时,ans 应该加上 size[s]*size[e]如果两个点在一条链上的时候( ...原创 2019-07-17 11:24:57 · 270 阅读 · 0 评论