题目链接 朴素的做法是枚举左、右端点。用\(\texttt{set}\)维护区间内不同值的数量,时间复杂度\(O(n^2\log n)\)。 考虑优化这个做法,就必须避免枚举左、右端点。一种想法是 ...
很不开心呢,明明有一点思路,却还是没写出来啊QAQ 先来看题吧: 第一问明显很好做,用一个普通的DP就可以搞定了 但是:重点来了,这个DP出来的f i f i 数组对后面很有用呢 因为我们可以通过TA来确定出我们连边的方式,这一点在后面会具体讲到 接下来就是我们网络最大流喜闻乐见的拆点大法惹 拆点大法吼哇 将每个数拆成一个入点,一个出点 对于第i个点,我们设入点为i.x,出点为i.y 为了保证每个 ...
2018-10-14 22:19 6 313 推荐指数:
题目链接 朴素的做法是枚举左、右端点。用\(\texttt{set}\)维护区间内不同值的数量,时间复杂度\(O(n^2\log n)\)。 考虑优化这个做法,就必须避免枚举左、右端点。一种想法是 ...
洛谷 P1439 【模板】最长公共子序列 $$传送门啦$$ 题目描述 给出\(1-n\)的两个排列\(P1\)和\(P2\),求它们的最长公共子序列。 输入输出格式 输入格式: 第一行是一个数\(n\), 接下来两行,每行为\(n\)个数,为自然数\(1-n\)的一个排列 ...
这个题和最长上升子序列都是一个类型的题 题意是求一个序列的最长上升子序列的长度 输入数据是: 28100 287 155 300 299 178 158 65388 23 65 输出是: 52 是序列dp的入门题 代码: 这个题好像有个二分的做法可以把时间复杂度降到 ...
P1738 Luogu 发一个链表题解! 仅有24ms,排名第一哦~ 圆圈代表点,每个店有两个指针,一个指向自己兄弟(同级文件夹),另一个指向自己孩子(子文件夹),还有一个保存当前名字。 有点像二叉树孩子兄弟表示法…… 那么我们从根节点寻找。对于每个节点,先找他的兄弟有没有符合要求 ...
====接力dalao完成==== 前文链接:(CSP-S RP++!) 对前文的一些补充: 首先清楚最长不下降子序列是一个递增但是允许不同位元素相等的序列。而最长上升子序列则是一个单调递增的序列。 而两者都是子序列,所以子序列的长度一定小于等于原序列。且子序列在原序列的位置不一定连续 ...
刚入学时学的算法,已经忘的差不多了,回顾一下。 对于普通的最长不下降子序列,每个数都要从头开始遍历,复杂度 $O(n^2)$,只能处理 $10^4$ 以内的数据。 刚刚学弟问我,就写了一下普通版的,顺便贴一下,这是 $openjudge$ 上的最长上升序列 ...
唔,最长不下降子序列与最长上升子序列曾是困扰蒟蒻多时的一个问题,应该也有一些人分不清这2个的求法吧。 首先n^2算法肯定是都能分清的,因为不下降和上升的区别是连续的2个能不能相等,只需要在判断的时候判一下是不是相等就可以了。 最长不下降子序列代码 ...
今天花了很长时间终于弄懂了这个算法……毕竟找一个好的讲解真的太难了,所以励志我要自己写一个好的讲解QAQ 这篇文章是在懂了这个问题n^2解决方案的基础上学习。 解决的问题:给定一个序列,求最长不下降子序列的长度(nlogn的算法没法求出具体的序列是什么 ...