![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dp
Johnson1141
这个作者很懒,什么都没留下…
展开
-
CodeForces - 11D
有意思 和之前的项链异曲同工,但之前就是入门,半抄半做的。 one more time 再跑一遍吧 环?怎么处理环? 都是通过记录路径,若是首末可相连,那么就是个环,同时,这样也可以用作之后的状态转移,妙啊 dp[i][s]: 路径的最后一个点是i且状态是s,且有隐含条件开头是是状态的第一个1。#include<iostream>#include<stdio.h...原创 2018-08-23 16:00:26 · 544 阅读 · 0 评论 -
青岛区域赛备战--模板及复习--简单算法
1、快速幂2、LIS及其变形3、最小生成树快速幂LL Pow(LL a, LL n, LL mod){ LL t = 1; for (; n; n &amp;amp;gt;&amp;amp;gt;= 1, a = (a * a % mod)) if (n &amp;amp;amp; 1) t = (t * a % mod); return t;}LIS...原创 2018-11-02 16:31:36 · 277 阅读 · 0 评论 -
CodeForces - 372C 单调队列优化dp
第二道 单调dp题 单调队列只是辅助,dp是关键,写出合理的dp方程才知道并用单调队列优化。 大意:1-n 个地点 ,放m次烟花 ,每次可走d的长度 (可以不是必须) 给出m次烟花的参数 a[i] —烟花地点 b[i]–第i次烟花的一个参数,没什么实际意义 t[i]—燃放烟花的时间 每放一次烟花,这个人就会得到 bi - |ai - x| 的权值 x是当时的位置给出状态方程: ...原创 2018-10-24 11:15:23 · 282 阅读 · 0 评论 -
算法课二
题目要求:求两个字符串a,b的最长公共子序列的长度,并打印出所有成立的子序列这是一道典型的动态规划+路径记录的题。一般解决动态规划的路径打印,都是在动态规划的过程中记录达到这个状态的直接前驱,最后用一个深度搜索从末状态逆推前状态,再此过程中打印出答案。这道题的难点是要把所有的可能序列全打印出来,这该如何解决呢?先不急,先把基础的转移方程写出来两个串分别为a,b。定义状态dpij−−a...原创 2018-10-30 21:10:58 · 212 阅读 · 0 评论 -
树分治———点分治
点分治还是很有意思的,不过自己看博客还是比较吃力的,看了好久。基本思想:找一颗树上的重心(所有以此点为根的子树中最大子树最小的那个根结点)分治解决。(这是关键。)详细解释一下:一开始结点数为n,朴素算法O(n2n^2n2),若找重心分治处理就是O(log(n)log(n)log(n))层,每次合并时间是(这里是O(nlog(n)+n) 排序+找最远可行对)不定。那最终就是O(n*log(...原创 2018-10-18 12:46:36 · 111 阅读 · 0 评论 -
矩阵链乘
算法报告一 矩阵链乘 16122020 钟顺源一、题意给定n个矩阵,问如何加括号使总的计算次数最少?输入给的是长度为n+1的序列a1:(n+1)a_{1:(n+1)}a1:(n+1)。即矩阵AiA_iAi的行数为aia_iai,列数为ai+1a_{i+1}ai+1输出总的计算次数和加...原创 2018-10-24 21:36:01 · 328 阅读 · 0 评论 -
2018徐州网络赛
dp[i][1]: 第i个位置与第一个位置相同 dp[i][2]: 第i个位置与第一个位置相斥 dp[i][0]: 第i个位置与第一个位置无关dp[i][1] = dp[i-1][1]+dp[i-1][0] dp[i][2] = dp[i-1][2]+dp[i-1][0] dp[i][0] = dp[i-1][0](k-2)+dp[i-1][1](k-3)+dp[i-1][2]*(k-...原创 2018-09-13 15:38:21 · 192 阅读 · 0 评论 -
HDU - 1693 插头dp 艰难入门
什么是插头dp? 首先我们要先知道它能解决那些问题。一般都是一张方格图里有关连通性的一些问题。 那么对于一个格子而言,他就原创 2018-09-02 13:37:55 · 525 阅读 · 0 评论 -
poj 1821 Fence (dp+单调队列优化)
给n个篱笆,k个工人 接着给k行,分别描述工人的 负责区域大小 涂一个篱笆的收益 他所站的位置 解释一下,一个工人如果涂篱笆了,一定是从他所站的位置出发的,即他负责的区域必须包括自己当前位置 求最大的总收益dp[i][j] : 前i个工人 负责前j个篱笆的的最大收益dp[i][j]=max(dp[i][j-1], dp[i-1][j-1], max(dp[i-1][k],))...原创 2018-09-04 21:20:40 · 116 阅读 · 0 评论 -
轮廓线dp入门题 && POJ - 2411
题目很有意思,就是oj太烂了 刘汝佳的代码太优雅了,看不懂,但意思差不多。 就我做过的状压dp总是以一行(或一列)为一个状态,先理清一行中的关系,后再找行对行的关系 这里不能用行,行之间的关系不够了,因为要考虑不同的放法。 那一行不够,两行够不够?我觉得够,但时间复杂度不够优秀,会包含很多无效转态所以优化一下? dp三个问题: 1.状态的确立 2.状态转移方程 3.初始化1...原创 2018-08-29 16:53:26 · 458 阅读 · 0 评论 -
HDU - 3182
一眼看上去有点像变形背包,但完全不是 每种汉堡只能选一种,选一种,且选i种汉堡 需要先作出规定的汉堡 比较难的就是如何判断这个状态是合法的,而对于确定的状态,答案是唯一的 合法表现在两方面:1.val>0 2.所有的汉堡满足依赖 这里的处理很优美:从一个合法状态到另一个合法状态,打标记#include<iostream>#include<stdio.h&g...原创 2018-08-21 17:48:11 · 153 阅读 · 0 评论 -
HDU - 3091
有一个DP题,意题都看了好久用n个珠子串成一个项链,但是n个珠子两两之间可能不能放在一起,问有几种串珠子的方式? 因为项链可以旋转,所以选择一个起点最终走到这个起点,且每个点只能走一次,问有多少种情况? 类似旅行商问题,但不一样。问题还是对于一个珠子之后,它要选哪个珠子,因为n个珠子都要被选到,这里解决的就是个顺序问题。 如何定义dp状态 dp[state][i] :在state状态下,且...原创 2018-08-21 16:34:06 · 173 阅读 · 0 评论 -
HDU - 1074
A - Doing Homework HDU - 1074入门题 很有意思 最多十五门课 15位二进制 0代表没选这门课 1代表选了这门课 状态从 0~(2n−1)0~(2n−1)0~(2^n-1)即什么都没选到所有课...原创 2018-08-21 13:20:00 · 179 阅读 · 0 评论 -
HDU - 1565
这道题以为是简单的模板题(确实简单啊。。。),卡了好久 1.内存限制,之前题放的很开,这里要卡一下最多的状态数,但没卡滚动数组(也卡不了吧) 2.注意要统计的是最值还是数量。 3.二进制状态 2n和2n+12n和2n+12^n 和2^{n+1} 是分开的 可以预处理2202202^{20} 再对不同n取前缀,但效果不明显。#include&amp;amp;lt;iostream&amp;amp;gt;#incl...原创 2018-08-23 19:11:16 · 120 阅读 · 0 评论 -
算法课四
算法报告四 Dijkstra算法(最短距离) 16122020 钟顺源一、题目大意给出一张图,并给定起点和终点,问起点到终点的最短距离是多少?有两个特殊要求1)如果从顶点i到顶点j有不止一条最短路径,那么输出路段数最少者;2)如果具有最短路径并且路段数也是...原创 2018-12-01 20:28:32 · 390 阅读 · 0 评论