同步于Luogu blog

T1 AT_joisc2007_buildi ビルの飾り付け (Building)

简化题意

最长上升子序列模板

分析

\(O(n^2)\)做法

考虑DP

  1. 定义状态:\(dp_i\)表示以\(i\)结尾的最长上升子序列长度
  2. 确定答案:\(\max{dp_i}\)
  3. 状态转移:对于每个\(a_i\):

    (1)当\(a_i>a_j(j<i)\)从以第\(j\)个数结尾的地方再接一个数,即\(dp_j+1\)

    (2)自己单独成一个子序列
  4. 边界条件:\(dp_i=1\)(每个数都能单独成一个子序列)

\(O(n\log n)\)做法

考虑贪心(往死里贪)

所以对于最大上升子序列,结尾元素越小,越有利于后面接上其他的数,也就可能变得更长

所以创建一个数组\(c\),用来存贮现在的最长上升子序列中的元素

对于每个\(a_i\),可以在\(c\)数组中找到一个第一个比他大的数,那么这个数就能替换掉\(c\)数组中的那个数,而\(dp_i\)的答案就是找到的数的下标,因为前面都是比他小的数,自然的,他也可以接在这些数后面

但是这样可能还是要扫一遍\(c\)数组,但我们能发现,\(c\)数组永远是单调递增的!所以使用二分大法,时间复杂度\(O(n\log n)\)

P.S.:\(c\)一定要初始化为无穷大,因为数要越小越好

Code

link1

link2

T2 AT_abc281_d [ABC281D] Max Multiple

分析

  1. 定义状态:\(dp_{i,j,p}\)表示前\(i\)个数,选了\(j\)个,余数为\(p\)时的最大和
  2. 答案:\(dp_{n,k,0}(dp_{n,k,0}\geq0)\),否则为\(-1\)
  3. 方程:

    (1)不选这个数:\(dp_{i-1,j,p}\)

    (2)选这个数:\(dp_{i-1,j-1,(p-a_i)\mod d }+a_i\)
  4. 边界:\(dp_i=-\inf\),\(dp_{0,0,0}=0\)

Code

link

T3 AT_abc369_d [ABC369D] Bonus EXP

题意简化

有\(n\)只怪物,每只怪物有一个数值\(a_i\),对于每只怪物,你有两种选择:

  1. 放走他,获得\(0\)经验
  2. 击败他,获得\(a_i\)经验,特别的,如果这只怪兽是你击败的偶数只怪物,你还可以额外获得\(a_i\)经验

    求最后你能获得多少经验

分析

  1. 定义状态:\(dp_{i,0/1}\)表示前\(i\)个怪物,选了奇数/偶数个怪物的最大经验
  2. 答案\(\max(dp_{n,0},dp_{n,1})\)
  3. 状态转移方程:

    (1)选第\(i\)个怪物,且为奇数个:\(\max(dp_{i-1,0},dp{i-1,1}+a_i)\)

    (2)选第\(i\)个怪物:\(\max(dp_{i-1,1},dp_{i-1,0}+2\times a_i)\)
  4. 边界:由于\(a\)可能有负数,所以dp设为负无穷

Code

link

还有两题有时间补上

DP刷题总结-2的更多相关文章

  1. DP刷题记录(持续更新)

    DP刷题记录 (本文例题目前大多数都选自算法竞赛进阶指南) TYVJ1071 求两个序列的最长公共上升子序列 设\(f_{i,j}\)表示a中的\(1-i\)与b中色\(1-j\)匹配时所能构成的以\ ...

  2. DP刷题记录

    目录 dp刷题记录 codeforces 706C codeforces 940E BZOJ3997 POJ2279 GYM102082B GYM102082D codeforces132C L3-0 ...

  3. DP刷题

    http://blog.csdn.net/a1dark/article/details/17115137

  4. DP刷题记录(长期更新)

    bzoj 2748 一个吉他手,有一个初始音量,有一个音量最大值max. 给定n个音量变化量,从第一个变化量开始,可以选择加上或者减去变化量.途中音量不能低于0,不能超过max. 求最后能达到的最大音 ...

  5. $2019$ 暑期刷题记录1:(算法竞赛DP练习)

    $ 2019 $ 暑期刷题记录: $ POJ~1952~~BUY~LOW, BUY~LOWER: $ (复杂度优化) 题目大意:统计可重序列中最长上升子序列的方案数. 题目很直接的说明了所求为 $ L ...

  6. 刷题总结——bzoj1725(状压dp)

    题目: 题目描述 Farmer John 新买了一块长方形的牧场,这块牧场被划分成 N 行 M 列(1<=M<=12; 1<=N<=12),每一格都是一块正方形的土地. FJ  ...

  7. ACM :漫漫上学路 -DP -水题

    CSU 1772 漫漫上学路 Time Limit: 1000MS   Memory Limit: 131072KB   64bit IO Format: %lld & %llu Submit ...

  8. XidianOJ 1020 ACMer去刷题吧

    题目描述 刷题是每个ACMer必由之路,已知某oj上有n个题目,第i个题目小X能做对的概率为Pi(0<=Pi<=1,1<=i<=n) 求小X至少做对k道题的概率 输入 第一行输 ...

  9. NOI题库刷题日志 (贪心篇题解)

    这段时间在NOI题库上刷了刷题,来写点心得和题解 一.寻找平面上的极大点 2704:寻找平面上的极大点 总时间限制:  1000ms  内存限制:  65536kB 描述 在一个平面上,如果有两个点( ...

  10. Leetcode OJ 刷题

    Valid Palindrome吐槽一下Leetcode上各种不定义标准的输入输出(只是面试时起码能够问一下输入输出格式...),此篇文章不是详细的题解,是自己刷LeetCode的一个笔记吧,尽管没有 ...

随机推荐

  1. 一键部署Palworld幻兽帕鲁服务器最佳实践

    本文基于天翼云通用型云主机,为您介绍通过镜像一键部署Palworld幻兽帕鲁服务器的具体操作. Ubuntu系统 1.按需购买云主机.通过Palworld专属活动优惠页一键购买开通云主机. 根据需要选 ...

  2. Nacos 从入门到精通-手把手教会你

    Nacos 使用教程 Nacos 是阿里巴巴开源的动态服务发现.配置管理和服务管理平台,旨在帮助您更容易地构建.交付和管理微服务平台.它集成了服务注册与发现.动态配置管理.动态 DNS 服务和服务及元 ...

  3. SQL注入之时间盲注

    SQL注入之时间盲注 一.时间盲注原理 时间盲注技术的核心在于巧妙地运用数据库中的时间延迟函数(例如 MySQL 的 SLEEP() 函数或 PostgreSQL 的 PG_SLEEP() 函数)来验 ...

  4. windows系统之netstatt、telnet、tasklist taskkill四大常用网络运维命令

    windows系统之netstatt.telnet.tasklist  taskkill 四大常用网络运维命令 Netstat 查看网络状态信息 [用法格式] NETSTAT [-a] [-b] [- ...

  5. Hetao P1391 操作序列 题解 [ 绿 ] [ 二维线性 dp ]

    操作序列:简单的二维 dp. 观察 我们每次操作可以让 \(x\) 变为 \(2x-1\),或者当 \(x\) 为奇数时让 \(x\) 变为 \(\frac{x+1}{2}\). 显然,执行第一种操作 ...

  6. 如何训练LLM“思考”(像o1和DeepSeek-R1一样, 高级推理模型解析

    2024年9月,OpenAI发布了它的o1模型,该模型基于大规模强化学习训练,赋予了它"高级推理"能力.不幸的是,他们是如何做到这一点的细节从未被公开披露.然而,今天,DeepSe ...

  7. swiper8.x在vue中的wtf

    首先我是想开启鼠标滚动的效果,在官网上发现如下说法 引入就引入吧,引入路径还不说,在网上看其他教程发现路径是 引入完了,怎么办呢,又不会了,官网没有教程,网上的教程全是关于vue-awesome-sw ...

  8. autMan奥特曼机器人-wxbot邀请入群插件的使用

    内置微信(非微信框架)的拉群插件怎么用? 一.安装"wxbot邀请入群"插件 二.在"我的"->"wxbot邀请入群"->配参中 ...

  9. 探秘Transformer之(8)--- 位置编码

    探秘Transformer之(8)--- 位置编码 0x00 概述 位置编码(Positional Embedding)是一种用于处理序列数据的技术,被用来表示输入序列中的单词位置.在Transfor ...

  10. 经由同个文件多次压缩的文件MD5都不一样问题排查,感慨AI的强大!

    开心一刻 今天点了个外卖:牛肉炒饭 外卖到了后,发现并没有牛肉,我找商家理论 我:老板,这个牛肉炒饭的配菜是哪些? 商家:青菜 豆芽 火腿 鸡蛋 葱花 我:没有牛肉? 商家:亲,没有的哦 我:我点的牛 ...