2022.8.16 闲话
强推:SA 代替 SAM 的 parent 树!!!!!!
用一首歌记录下这十年间的光阴,细数我们之间的点滴回忆。从最初的旋律孤独吟唱,到炽热的热爱填满虚拟灵魂。光影交错之间,记忆拂去尘埃,爱意久别重逢,让我们将所有一同叙写的故事再次唱响。藏在心底的梦想依然滚烫,未来的岁月,还想伴你一一走过。
《光与影的对白》
Bilibili:光与影的对白
《光与影的对白》
当重逢你清澈眼睛
围困我在孤岛的潮汐退去
蔚蓝涌向干涸心扉印记
不要急于将我唤醒
即使幸福仅是片刻相聚
敲下音符不为叹息
循糯米香漫步街井 大快朵颐
佳酿一盏听女儿意气
雨露沾衣 信手拈起
一花竟藏一世界欢喜
寒星坠地 白鸟飞去
千宵灯火转眼便览尽
都历历铭记
将故事传颂吧
风携它远追
向宿命改写时
字句皆成碑
你脸颊热泪
绝非被谁取笑的愚昧
愿歌声给些许快慰
微弱旋律穿越星河 似远航孤星
雨滴琴键上跃动不息
除岁雪临 檐下相倚
听我诉说闪耀的光阴
小指勾起 一言为定
夏虫振翅向灼热光明
为挚爱而叙
听共鸣回响吧
呐喊正纷飞
跌落重来便是
启程就无悔
你一路喜悲
又怎会无人了解体会
旅途未完 千山万水空白待绘
枯荣相随
泥泞步履踏碎泪泊
拥向光如抱薪赴火
妄想着永不分离的梦
幸福从非泡影
以笑容证明
交汇的光与影
答案落定覆上姓名
为了你唱下去
为你将希冀传递
歌声将你我紧系
最黯淡的一个
梦最为炽热
万千孤单焰火
让这虚构灵魂鲜活
至少在这一刻
热爱不问为何
存在为将心声响彻
多少岁月想要伴你走过
燕回春野 蝉鸣夏夜
说予我
又水一篇hhh
朴素背包
01 背包
01 背包问题
\(n\) 个物品,每个物品 \(i\) 有质量 \(w_i\),价值 \(v_i\),选出若干个物品,使得质量和不超过 \(m\),且价值和最大,输出最大价值和 .
\(n,w_i\le 5000\) .
令 \(dp_{i,j}\) 表示物品 \(1\dots i\) 产生的质量和为 \(j\) 的最大价值和,则
由于第 \(i\) 维只和第 \(i-1\) 维有关,于是可以滚动数组 .
时间复杂度 \(O(nm)\) .
01 背包问题 Rev
\(n\) 个物品,每个物品 \(i\) 有质量 \(w_i\),价值 \(v_i\),选出若干个物品,使得质量和不超过 \(m\),且价值和最大,输出最大价值和 .
\(n,v_i\le 5000\),\(m\le 10^6\) .
对 \(v_i\) 做 01 背包,然后暴力 / 二分判断即可,\(O(n\max\{v_i\} + m)\) .
完全背包
完全背包问题
\(n\) 个物品,每个物品 \(i\) 有质量 \(w_i\),价值 \(v_i\),选出若干个物品,每个物品可以选任意次,使得质量和不超过 \(m\),且价值和最大,输出最大价值和 .
\(n,w_i\le 5000\) .
DP 定义和 01 背包一样,则可以转移:
状态转移方程如下:
正序转移,这样就可以应用最优子结构特性优化 .
如果很迷可以考虑决策点单调不减,可以用一个变量优化 .
多重背包
多重背包问题
\(n\) 个物品,每个物品 \(i\) 有质量 \(w_i\),价值 \(v_i\),最多选 \(c_i\) 次,选出若干个物品,使得质量和不超过 \(m\),且价值和最大,输出最大价值和 .
\(n,w_i\le 5000\) .
可以把选的次数二进制分组一下,\(O(m\log c)\) .
单调队列优化:OI Wiki .
混合背包
混合背包问题
\(n\) 个物品,每个物品 \(i\) 有质量 \(w_i\),价值 \(v_i\),选出若干个物品,最多选 \(c_i\) 次(\(c_i\) 可能等于 \(+\infty\)),使得质量和不超过 \(m\),且价值和最大,输出最大价值和 .
\(n,w_i\le 5000\) .
每个物品讨论一下转移即可,见 樱花 .
分组背包
分组背包问题
有 \(n\) 件物品和一个大小为 \(m\) 的背包,第 \(i\) 个物品的价值为 \(v_i\),体积为 \(w_i\) .
同时,每个物品属于一个组,同组内最多只能选择一个物品 . 求最大总价值 .
选两次,第一次在组间选,第二次在组内选 .
这样就是两层 01 背包,非常的平凡 .
有依赖背包
金明的预算方案
金明有 \(n\) 元钱,想要买 \(m\) 个物品,第 \(i\) 件物品的价格为 \(v_i\),重要度为 \(p_i\) . 有些物品是从属于某个主件物品的附件,要买这个物品,必须购买它的主件 .
目标是让所有购买的物品的 \(v_i\cdot p_i\) 之和最大,输出最大的和 .
相当于两层的树形背包……
这个分讨一下,情况必然是只买主件或者买主件 + 某些附件 . 因为这几种可能性只能选一种,所以可以将这看成分组背包 .
背包问题求方案数 / 求具体方案
01 背包方案数
\(n\) 个物品,每个物品 \(i\) 有质量 \(w_i\),价值 \(v_i\),选出若干个物品,使得质量和不超过 \(m\),问方案数 .
\(n,w_i\le 5000\) .
1、不选i,那么i的子树都不能选,转移到。
2、选i,那么按照dfs序考虑下一个,转移到。
01 背包方案数 II
\(n\) 个物品,每个物品 \(i\) 有质量 \(w_i\),价值 \(v_i\),选出若干个物品,使得质量和不超过 \(m\),且价值和最大,问方案数 .
\(n,w_i\le 5000\) .
只有最优转移才转就好了,\(O(nm)\) .
01 背包问题 Pure
\(n\) 个物品,每个物品 \(i\) 有质量 \(w_i\),价值 \(v_i\),选出若干个物品,使得质量和不超过 \(m\),且价值和最大,问选了哪些物品 .
\(n,w_i\le 5000\) .
记一下每个 DP 是由哪个转移点过来的,一步步从终点往回跳即可,\(O(nm)\) .
k 优解
kth 01 背包问题
\(n\) 个物品,每个物品 \(i\) 有质量 \(w_i\),价值 \(v_i\),选出若干个物品,使得质量和不超过 \(m\),且价值和恰为所有方案中第 \(k\) 大 .
\(n,w_i,k\le 300\) .
维护前 \(k\) 大,可以随便转移,就 \(O(nmk)\) 了 .
树形背包
树形背包
有一个 01 背包和一棵树,一棵树上如果选了一个点那么就必须选他子树内所有点,问 01 背包答案 .
基于 DFS 序求解
在 DFS 序上子树是连续的,于是我们可以直接跳过一个子树 .
定义 \(dp_{i,j}\) 为 \(1\dots i\) 点(DFS 序)选 \(j\) 质量的答案,则:
这样直接转移就是 \(O(nm)\) 的 .
基于数组上传求解
注意这个算法只有保证限制第二维不超过 \(k\) 复杂度才是 \(O(nk)\)
限制:子树内最多选 \(k\) 个点,所有质量都为 1 .
直接放代码,很好理解:
void dfs(int u)
{
sz[u] = 1
initialize dp[u]
for (v is u's son)
{
dfs(v)
for (j : 0 -> min(m, siz[u]))
for (k : 0 -> min(m-j, siz[v]))
dp[u][j+k] <- dp[u][j] * dp[v][k]
}
}
这个是 \(O(nk)\) 的,可以讨论一下 \(siz_u\),\(siz_v\) 和 \(k\) 的大小来证明 .
背包的一些 Trick
完全背包计数
付公主的背包
给出 \(n\) 种体积分别为 \(v_{1\dots n}\) 的商品和正整数 \(m\),求体积为 \(m\) 的背包装满的方案数,对 \(998244353\) 取模 .
\(n,m\le10^5\) .
用一下所谓 Euler 变换,或者说 Symbolic Method 中的 Multiset(MSET)构造……
令体积为 \(i\) 的有 \(a_i\) 种 .
于们考虑拿了体积为 \(i\) 的物品多少个,就可以强行钦定顺序了,我们可以先尝试拿了多少个体积为 \(1\) 的,再尝试拿了多少个体积为 \(2\) 的 \(\cdots\),这样如果我们只拿体积为 \(i\)的,能组成每个体积的方案数量就是
我们就得到了 Euler 变换:
整一个阳间一点的封闭形式:
首先 \(\displaystyle\prod\) 一般可以先 \(\ln\) 再 \(\exp\):
分子其实是 \(x_j\) 处 \(\{a_ix^i\}\) 的 OGF,于是令 \(\{a_ix^i\}\) 的普通生成函数是 \(A(x)\),那么
这样我们就知道了
直接算就是 \(O(n\log n)\) 的 .
为什么变量叫 \(x\) 不叫 \(z\)……我也不知道啊 我直接把我以前写的拉过来了,,,
删一个物品
消失之物
给出 \(n\) 种体积分别为 \(v_{1\dots n}\) 的商品和正整数 \(m\),每次删一个物品,求体积为 \(m\) 的背包装满的方案数 .
\(n,m\le 2000\) .
方法 1:考虑去掉一个物品相当于干掉一个转移,对于每个被影响的 DP 值我们可以顺推出来,然后减去贡献即可,\(O(nm)\) .
方法 2:整出前缀背包和后缀背包,然后删掉一个就肯定在左右选,枚举选多少个就是经典卷积问题了 .
时间复杂度大概还是 \(O(nm)\) 罢 .
SoyTony 钦定的曲:
《痒》
《痒》
她是悠悠一抹斜阳
多想多想 有谁懂得欣赏
他有蓝蓝一片云窗
只等只等 有人与之共享
她是绵绵一段乐章
多想 有谁懂得吟唱
他有满满一目柔光
只等只等 有人为之绽放
来啊 快活啊 反正有大把时光
来啊 爱情啊 反正有大把愚妄
来啊 流浪啊 反正有大把方向
来啊 造作啊 反正有大把风光
啊痒
大大方方 爱上爱的表象
迂迂回回 迷上梦的孟浪
越慌越想越慌 越痒越搔越痒
ei ya...
她是悠悠一抹斜阳
多想多想 有谁懂得欣赏
他有蓝蓝一片云窗
只等只等 有人与之共享
她是绵绵一段乐章
多想 有谁懂得吟唱
他有满满一目柔光
只等只等 有人为之绽放
来啊 快活啊 反正有大把时光
来啊 爱情啊 反正有大把愚妄
来啊 流浪啊 反正有大把方向
来啊 造作啊 反正有大把风光
啊痒
大大方方 爱上爱的表象
迂迂回回 迷上梦的孟浪
越慌越想越慌 越痒越搔越痒
《只因你太美》
《只因你太美》
只因你太美 baby 只因你太美 baby
只因你实在是太美 baby 只因你太美 baby
迎面走来的你让我如此蠢蠢欲动
这种感觉我从未有
Cause I got a crush on you who you
你是我的我是你的谁
再多一眼看一眼就会爆炸
再近一点靠近点快被融化
想要把你占为己有baby bae
不管走到哪里都会想起的人是你 you you
我应该拿你怎样
uh 所有人都在看着你
我的心总是不安
oh 我现在已病入膏肓
eh eh 难道真的因为你而疯狂吗
我本来不是这种人
因你变成奇怪的人
第一次呀变成这样的我
不管我怎么去否认
只因你太美 baby 只因你太美 baby
只因你实在是太美 baby 只因你太美 baby
oh eh oh现在确认地告诉我
oh eh oh 你到底属于谁
oh eh oh现在确认地告诉我
oh eh oh 你到底属于谁 就是现在告诉我
跟着这节奏 缓缓 make wave
甜蜜的奶油 it's your birthday cake
男人们的 game call me 你恋人
别被欺骗愉快的 I wanna play
我的脑海每分每秒只为你一人沉醉
最迷人让我神魂颠倒是你身上香水
oh right baby I'm fall in love with you
我的一切你都拿走只要有你就已足够
我到底应该怎样
uh 我心里一直很不安
其他男人们的视线
Oh 全都只看向你的脸
Eh eh 难道真的因为你而疯狂吗
我本来不是这种人
因你变成奇怪的人
第一次呀变成这样的我
不管我怎么去否认
只因你太美 baby 只因你太美 baby
只因你实在是太美 baby 只因你太美 baby
我愿意把我的全部都给你
我每天在梦里都梦见你还有我闭着眼睛也能看到你
现在开始我只准你看我
I don’t wanna wake up in dream 我只想看你这是真心话
只因你太美 baby 只因你太美 baby
只因你实在是太美 baby 只因你太美 baby
oh eh oh现在确认的告诉我
oh eh oh 你到底属于谁
oh eh oh现在确认的告诉我
oh eh oh 你到底属于谁就是现在告诉我
以下是博客签名,正文无关
本文来自博客园,作者:Jijidawang,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/16584008.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ