
DP
清泠,
慢慢成长的小白白,
展开
-
Codeforces Round #617 (Div. 3) --- E2
通过做这道题学到了很多知识,还是很好的,用到Dilworth定理题目传送门Dilworth定理解题思路:就是给你一堆字母,ababcdba,最终让你排成aaabbbcd(字典序最小)如果2个位置的字母涂的颜色不同,那么他们可以交换,问的是用最少的颜色进行涂色,我们最少需要多少种颜色, 而且将他们的位置的颜色标记出来。这里用到Dilworth定理:不上升子序列的数目 == 最长下降子序列的长度 (反之亦然,如果想看正面的点上面的链接即可)这个题简单的来说是找有多少个不下降子序列,也就是能划.原创 2020-05-27 10:56:57 · 204 阅读 · 0 评论 -
Codeforces Round #642 (Div. 3)
22分钟A了前三天,然后…然后就没然后了,这里补下DE题传送门D题解题思路:这个题开始就是找规律…找…正解是set或者优先队列,这里用优先队列写下首先我们是从哪个区间大我们就往哪个区间的中间位置放数,所以我们就存储他的头和尾的坐标,一开始肯定是1,n我们这里对优先队列排序,按照长度由长到短,如果长度相同那么看坐标小就排在前面(这里学了下优先队列的排序,与sort是反的)struct cmp{ bool operator()(PII x, PII y){ if (.原创 2020-05-16 00:03:37 · 195 阅读 · 0 评论 -
Codeforces Round #641 (Div. 2)
这里补BCD题,这次还是太菜了,只a了2题,D还理解错了,c是一点不会传送门B题B题wa了三发好惨,这个时间比较宽裕,所以有很多办法,最终基本都是DP原本想的是把每一个数分解,求出他的因子,然后对因子进行操作或者直接DP,直接对当前数值的倍数进行操作这里比较坑的是让dist[i] = 1,原本只对1进行了赋初值,然后想到一个样子a[1] = 10, a[2] = 1, a[3] =2, a[4] =3,这里是输出 2,因为2,4符合,但是如果不都赋初值1,那么输出的只是1,所以这个地方挺.原创 2020-05-13 20:27:31 · 340 阅读 · 0 评论 -
每日一题 — 2020 - 04 -30
题目链接又是dp,真的是我不会什么最近就整什么,哈哈哈,不过也没关系,可以学习一下,不过过段时间要系统的学一下推理过程:这个意思就是说把所有的东西分成2堆,求他们的差值最小转换一下也就是求一半时的值的最大值(01背包)然后直接套01背包就OK,这里第一层循环是代表每一个的值,第二层循环是可以取的值来变换相关代码:#include <iostream>#incl...原创 2020-04-30 11:28:24 · 277 阅读 · 0 评论 -
每日一题(牛客) — 2020 - 04 - 27
题目链接dp题,自己对于dp虽然说没具体学过,但是还是知道一些的,虽然这题肯定是不会做的,甚至没想到用dp(又可以学到新知识了)解题思路:首先是一个串中删除一些位置,让剩下的串不同,问有多少种对于这方面的题,没有很好的理解,主要是想不出是dp,看了一些大佬的题解,然后跟着敲才会的。首先dp[i][j] 表达的是前 i 个位置,删除 j 个,有多少个不同,那么我们的转移方程还是比较简...原创 2020-04-27 22:17:39 · 227 阅读 · 0 评论 -
每日一题(牛客) — 2020 - 04 - 24
题目链接这个题按照道理说应该会做,不过太着急了,思路乱,看了大佬写的nlogn的离散化,不太会,到时候再看看解题思路:这个题暴力即可,不过有更好的做法只需双重for循环,然后判断前面的点是否符合当前点的条件(就是公式是否成立)这里的公式显然会爆到,然后运用数学知识,对两边同时取对数(对数为正),这样符号大小不变,然后我们将求出的值按照动态规划的形式加起来即可记得取模代码:#...原创 2020-04-24 14:43:22 · 236 阅读 · 0 评论 -
换根dp
根据牛客的每日一题,学习了换根dp(没整好dp的我直接整上了换根dp),还是很不错的,学习了不会的知识,其实最难的地方应该也就是转移那里换根dp大体思路:用邻接表存储信息然后dfs随机选取一点作为根,然后找出他的贡献值另外dfs第一次搜索时,我们需要记录一些题目需要求出的信息(或者一些转换的信息)然后我们第二次dfs时候,求出相关的转移数据,这里应该会另外开一个数组来记录最终遍...原创 2020-04-17 20:53:34 · 448 阅读 · 1 评论 -
2020牛客寒假算法基础集训营3
比赛链接 A题 解题思路:DP问题,(DP我还是渣渣,这么简单的我都没看出来)从左上角开始走,‘D’ 向下走,‘R’ 向右走,‘B’向下向右都可以,因此,我们就按照题目所说去进行存储,首先dp[1][1]初值为 1,然后双重for 循环去遍历整个矩阵,如果是’D’ 就 d[i + 1][j] = (dp[i + 1][j] + dp[ i ][j ] )%M ,如果是 ‘R’ 就...原创 2020-02-10 16:15:29 · 121 阅读 · 0 评论 -
2020牛客寒假算法基础集训营2
比赛链接 C题 解题思路:dp问题的题目(dp还没学好)给出转移方程 :这里 i 代表第i道题,j 表示解答出 j 道。根据这个转移方程 for 循环一遍就OK 代码:#include <cmath>#include <cstdio>#include <cstring>#include <iostream>...原创 2020-02-09 23:25:53 · 154 阅读 · 0 评论 -
I love you —— 牛客网
题目链接题目大意:解题思路简单的dp思想,分别将iloveyou存入到dp[i]中。dp[i] 的值是根据dp[ i - 1] 得来。例子: ab 二个字母 abb在 b 的前面有 2 个 a , 现在b出现,那么组成a b的就为dp[1] = dp [ 1 ] (dp[ 1 ] 可能之前存在值)+ dp [ 0 ] (dp[0] 为 2)若是 abab 则可以组成ab的为 ...原创 2020-01-21 10:17:58 · 329 阅读 · 0 评论