「10.19」最长不下降子序列(DP)·完全背包问题(spfa优化DP)·最近公共祖先(线段树+DFS序)
我又被虐了...
A. 最长不下降子序列
考场打的错解,成功调了两个半小时还是没A,
事实上和正解的思路很近了,只是没有想到直接将前$D$个及后$D$个直接提出来
确实当时思路有些紊乱,打的时候只是将前两个及后两个循环节提出来,
因为该题中$D$的范围很小,因此最长公共子序列中最多只有$D$个不同的数
所以我们可以想到中间的一段相同的数一定是可以移成中间的一段数,本质是一样的
B. 完全背包问题
没想到是到图论题啊啊
考虑到$w$的范围很大,然而$v$的范围很小,于是我们开始转化原来的$DP$方程定义
$f_{i,j,k}$表示当选到第$i$个物品此时选了大于$L$的物品有$j$个,然后最小值为$S$,此时的$S%vmin=k$
其中$v_{min}$表示出现的值中的最小的$v$,其实都是一样的.....
然后最后我们比较答案时只需要判断$f_{n,j,W\%v_{min}}$ 是否 $<=W$ 即可,因为在模数相同时在加上若干$v$
一定能取到$W$,考虑转移,$v_{i}>L$就不说了
值得考虑的是当$v_{i}<=L$时,我们发现$f_{i,j,s}=min(f_{i-1,j,s},f_{i,j,s-v_{i}\%v_{min}}+v_{i})$转移过来
这时的$DP$转移中是处于同一状态下的,
为了保证转移正确行,很神奇的用到了$spfa$
我们用一个超级源点和每一个$s$相连权值$f_{i-1,j,s}$,然后根据转移方程在将$s$两两相连
这样我们在转移是保证了完全背包的性质也就是说物品可以无限选,而且在转移是保证了每个点都已经经过了一条由超级源点
所连出的边。
C. 最近公共祖先
考虑黑点只会不断增加,
所以每出现一个黑点考虑他的贡献,是对子树的修改,所以DFS序维护子树就可以了
「10.19」最长不下降子序列(DP)·完全背包问题(spfa优化DP)·最近公共祖先(线段树+DFS序)的更多相关文章
- 「10.13」毛一琛(meet in the middle)·毛二琛(DP)·毛三琛(二分+随机化???)
A. 毛一琛 考虑到直接枚举的话时间复杂度很高,我们运用$meet\ in\ the\ middle$的思想 一般这种思想看似主要用在搜索这类算法中 发现直接枚举时间复杂度过高考虑枚举一半另一半通过其 ...
- 【24题】P2766最长不下降子序列问题
网络流二十四题 网络流是个好东西,希望我也会. 网络流?\(orz\ zsy!!!!!\) P2766 最长不下降子序列问题 考虑我们是如何\(dp\)这个\(LIS\)的. 我们是倒着推,设置\(d ...
- [**P2766** 最长不下降子序列问题](https://www.luogu.org/problemnew/show/P2766)
P2766 最长不下降子序列问题 考虑我们是如何\(dp\)这个\(LIS\)的. 我们是倒着推,设置\(dp(i)\)代表以\(i\)为起点的\(LIS\)是多少.转移太显然了 \[ dp(i)=m ...
- 动态规划 ---- 最长不下降子序列(Longest Increasing Sequence, LIS)
分析: 完整 代码: // 最长不下降子序列 #include <stdio.h> #include <algorithm> using namespace std; ; in ...
- 10.26最后的模拟DAY2 改造二叉树[中序遍历+严格递增的最长不下降子序列]
改造二叉树 [题目描述] 小Y在学树论时看到了有关二叉树的介绍:在计算机科学中,二叉树是每个结点最多有两个子结点的有序树.通常子结点被称作“左孩子”和“右孩子”.二叉树被用作二叉搜索树和二叉堆.随后他 ...
- 8.3考试总结(NOIP模拟19)[最长不下降子序列·完全背包问题·最近公共祖先]
一定要保护自己的梦想,即使牺牲一切. 前言 把人给考没了... 看出来 T1 是一个周期性的东西了,先是打了一个暴力,想着打完 T2 T3 暴力就回来打.. 然后,就看着 T2 上头了,后来发现是看错 ...
- 最长不下降子序列 nlogn && 输出序列
最长不下降子序列实现: 利用序列的单调性. 对于任意一个单调序列,如 1 2 3 4 5(是单增的),若这时向序列尾部增添一个数 x,我们只会在意 x 和 5 的大小,若 x>5,增添成功,反之 ...
- 【题解】Luogu P2766 最长不下降子序列问题
原题传送门 实际还是比较套路的建图 先暴力dp一下反正数据很小 第一小问的答案即珂以求出数列的最长不下降子序列的长度s 考虑第二问如何做: 将每个点拆点 从前向后连一条流量为1的边 如果以它为终点的最 ...
- 2017ICPC南宁赛区网络赛 The Heaviest Non-decreasing Subsequence Problem (最长不下降子序列)
Let SSS be a sequence of integers s1s_{1}s1, s2s_{2}s2, ........., sns_{n}sn Each integer i ...
随机推荐
- HashMap实现原理一步一步分析(1-put方法源码整体过程)
各位同学大家好, 今天给大家分享一下HashMap内部的实现原理, 这一块也是在面试过程当中基础部分被问得比较多的一部分. 想要搞清楚HashMap内部的实现原理,我们需要先对一些基本的概念有一些了解 ...
- spring.framework 版本从4.1.6.RELEASE升到5.0.20.RELEASE
将org.springframework 使用到的jar 版本号改为5.0.20.RELEASE后运行会报错: Servlet.service() for servlet [springmvc] in ...
- SwiftUI 简明教程之指示器
本文为 Eul 样章,如果您喜欢,请移步 AppStore/Eul 查看更多内容. Eul 是一款 SwiftUI & Combine 教程 App(iOS.macOS),以文章(文字.图片. ...
- buaaoo_third_assignment
你看这个代码它又长又宽 一.JML (1)理论基础 JML(Java Modeling Language)是用于对Java程序进行规格化设计的一种表示语言.JML是一种行为接口规格语言 (Behavi ...
- 企业更需要定制化CRM系统满足个性化需求
随着市场的发展和信息技术的进步,越来越多的企业购买CRM客户关系管理系统来帮助管理.提高效率.但哪怕处在相同行业的企业,他们对于CRM的功能需求都会有着很大的不同.因此,大部分企业都开始进行个性化定制 ...
- CRM是什么意思,有哪些作用?
我们总会听到一些人提到CRM或CRM系统,但是通常不知道它的含义,所以今天小Z就来详细介绍一下CRM. GartnerGroup1993年首次提出了这一概念:所谓的客户关系管理就是为企业提供一个全面的 ...
- 『动善时』JMeter基础 — 20、JMeter配置元件【HTTP Cookie管理器】详细介绍
目录 1.HTTP Cookie管理器介绍 2.HTTP Cookie管理器界面详解 3.JMeter中对Cookie的管理 (1)Cookie的存储 (2)Cookie的管理策略 4.补充:Cook ...
- [刷题] 1 Two Sum
要求 给出一个整型数组nums 返回这个数组中两个数字的索引值i和j 使得nums[i]+nums[j]等于一个给定的target值 两个索引不能相等 实例 nums=[2,7,11,15], tar ...
- qemu:///system 没有连接驱动器可用;读取数据时进入文件终点: 输入/输出错误
原因 1. KVM的相关包 装少了 2KVM的相关包 重新安装 3 May 31 15:22:55 localhost libvirtd: 2019-05-31 07:22:55.554+0000: ...
- Linux shell sed命令在文件行首行尾添加字符
昨天写一个脚本花了一天的2/3的时间,而且大部分时间都耗在了sed命令上,今天不总结一下都对不起昨天流逝的时间啊~~~ 用sed命令在行首或行尾添加字符的命令有以下几种: 假设处理的文本为test.f ...