https://www.zybuluo.com/ysner/note/1285358 题面 小\(Y\)有一个大小为\(n\)的背包,并且小\(Y\)有\(n\)种物品. 对于第\(i\)种物品,共有\(i\)个可以使用,并且对于每一个\(i\)物品,体积均为\(i\). 求小\(Y\)把该背包装满的方案数为多少,答案对于\(23333333\)取模. 定义两种不同的方案为:当且仅当至少存在一种物品的使用数量不同. \(n\leq10^5\) 解析 这个背包问题让我耳目一新啊. \(idea\)…
link 吐槽: 好吧开学了果然忙得要死……不过为了证明我的blog还没有凉,还是跑来更一波水题 题意: 有n种物品,第i种体积为i,问装满一个大小为n的背包有多少种方案? $n\leq 10^5.$ 做法: 这种题一看就很想按根号分类是不是…… 设阈值大小为$m=\sqrt n$,对于体积$\leq m$的所有物品,直接跑多重背包: f[i][j]表示前i个物品,体积和为j的方案数,$f[i][j]=\sum f[i-1][j-ki],k\in [0,i]$. 记录sum[x]表示$\sum…
Solutioon 这道题利用根号分治可以把复杂度降到n根号n级别. 我们发现当物品体积大与根号n时,就是一个完全背包,换句话说就是没有了个数限制. 进一步我们发现,这个背包最多只能放根号n个物品. 所以我们设dp[i][j]表示放了i个物品,体积为j时的方案数. 转移的话一种是往背包里放一个新物品,或者让背包里所有物品体积加1. 当物品体积小于根号n时,因为物品个数比较少,所以我们可以设计状态为dp[i][j]表示前i个物品,占用j的体积为j时的方案数. 然后我们发现它的同类转移点是在模i的剩…
题目传送门 题意:给出$N$表示背包容量,且会给出$N$种物品,第$i$个物品大小为$i$,数量也为$i$,求装满这个背包的方案数,对$23333333$取模.$N \leq 10^5$ $23333333=17 \times 1372549$竟然不是质数性质太不优秀了(雾 直接跑背包$O(N^2)$,于是咱们考虑挖掘性质.分开计算 发现当$i < \sqrt{N}$时就是一个多重背包,用单调队列优化到$O(N \sqrt{N})$ 而当$i \geq \sqrt{N}$时,选中物品的数量不会超…
正解:背包 解题报告: 先放传送门! 好烦昂感觉真的欠下一堆,,,高级数据结构知识点什么的都不会,基础又麻油打扎实NOIp前的题单什么的都还麻油刷完,,,就很难过,,,哭辣QAQ 不说辣看这题QwQ! 首先注意到当i>=√n时相当于是有无穷个的 可以想到对不同的物品数量进行分类讨论 对于i<√n,就最普通的背包,f[i][j]:第i个物品已装容量为j的方案数 转移就是f[i][j]=∑f[i-1][j-k*i](0<=k<=i)(这个显然可以降维变成f[i]:容量为i的方案数 然后…
[LOJ6089]小Y的背包计数问题(动态规划) 题面 LOJ 题解 神仙题啊. 我们分开考虑不同的物品,按照编号与\(\sqrt n\)的关系分类. 第一类:\(i\le \sqrt n\) 即需要考虑所有的情况,那么设\(f[i][j]\)表示前\(i\)个物品装了体积\(j\)的方案数. 显然\(f[i][j]=\sum_{k=1}^i f[i][j-k*i]\)转移过来,那么按照\(i\)分剩余类,前缀和转移即可. 这一部分的复杂度是\(O(n\sqrt n)\) 第二类:\(i\ge…
LOJ #6089. 小 Y 的背包计数问题 神仙题啊orz. 首先把数分成\(<=\sqrt n\)的和\(>\sqrt n\)的两部分. \(>\sqrt n\)的部分因为最多选\(\sqrt n\)个数,所以数量就没有卵用了.然后就用完全背包的一个常见套路(?)可以对一个空的序列整体+1或者在最左边加上一个\(\sqrt n+1\),这个操作序列和完全背包的选择方案一一对应.感性理解一下是对的emmmm,复杂度\(O(n\sqrt n)\) \(<=\sqrt n\)的部分只…
题面 题解 (本篇文章深度剖析,若想尽快做出题的看官可以参考知名博主某C202044zxy的这篇题解:https://blog.csdn.net/C202044zxy/article/details/109141757) 在起码了解了背包DP后,我们来做这道题 既然每种物品最大可占据 i*i 的空间,设  那么  和  两种情况肯定是不同的 ,而且应该可以分开处理 由于  时 i 的范围很小,可以在一个处理到一半的背包上(即处理了[sq+1,n]的背包dp数组)继续跑(背包大小 * 物品数),所…
题目:https://loj.ac/problem/6089 直接多重背包,加上分剩余类的前缀和还是n^2的. 但可发现当体积>sqrt(n)时,个数的限制形同虚设,且最多有sqrt(n)个物品. 所以体积<=sqrt(n)的物品多重背包,大于sqrt(n)的就变成最小值是sqrt(n)+1.最多有sqrt(n)个物品的方案数,可以用那种“整体+1 或 新增一列”的套路解决. #include<iostream> #include<cstdio> #include<…
题目:https://loj.ac/problem/6089 对于 i <= √n ,设 f[i][j] 表示前 i 种,体积为 j 的方案数,那么 f[i][j] = ∑(1 <= k <= i ) f[i-1][j - k*i] 可以用前缀和优化,因为第 i 次只会用到间隔为 i 的和: 对于 i > √n ,最多选 √n 个,所以设 g[i][j] 表示用 i 个,体积为 j 的方案数: 每种方案如果排一个序,就是一个最小值为 √n + 1 的不降序列,所以算出不降序列的个数…
[UOJ#340][清华集训2017]小 Y 和恐怖的奴隶主(矩阵快速幂,动态规划) 题面 UOJ 洛谷 题解 考虑如何暴力\(dp\). 设\(f[i][a][b][c]\)表示当前到了第\(i\)次攻击,还剩下的\(1,2,3\)血的奴隶主个数为\(a,b,c\)的概率,每次考虑打到了哪里,做一个转移. 这样子,状态数就是把不超过\(8\)个东西分配到\(3\)个集合中,状态有\(165\)种,再加一个状态记录糊脸上的期望,也就是\(166\)个状态. 直接矩乘优化,那么单次的复杂度就是\(…
Font Size:Aa Aa Aa Description 近期小Y迷上了数学,总是在思考各种数学问题.有一天,他不小心把墨水洒在草稿纸上.他如今能看到的是"2?3?1?4"(?表示看不清的地方).小Y的记忆力不错,他知道: 1.每一个?仅仅会是"+"."-","="三个符号之中的一个. 2.总共同拥有且仅有一个"=". 3.原式一定是一个等式.如"2+3-1=4" 如今他突然想知道,…
D - 小Y上学记——要迟到了! Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) Problem Description “你是我心中最美的云彩....",这不是大妈的广场舞,而是小Y的闹钟,然而小Y由于昨晚玩得太疯,导致今天居然没被这铃声闹醒! 当小Y睡眼惺忪地醒来后,发现距离第一节上课还有不到5分钟了! 小Y心想,跑过去教室肯定来不及了,只好发动一下超能力. 小Y的超能力是…
C - 小Y上学记——认识新同学 Time Limit: 4000/2000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) Submit Status Problem Description 小Y来到了一个新的班级,新的集体,第一件事肯定是要去认识新同学. 然而想认识全班同学,所需要的代价是很大的,所以小Y想让代价尽可能小. 认识新同学有两种办法,一种是直接去认识,另一种是通过已经认识的同学去认识新同学. 小Y想知道最…
B - 小Y上学记——小Y的玩偶 Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) Submit Status Problem Description 小Y最喜欢拆拆拆了~尽管他不一定能装回去. 小Y有一个很可爱的积木玩偶,是由一块一块积木拼接而成,现在小Y想把这个积木玩偶拆拆拆. 每一块积木玩偶都有一个耐久值,想把一块积木拆出来,小Y需要付出的能量就是和它直接拼接的所有积木的耐…
A - 小Y上学记——修学分 Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) Submit Status Problem Description 小Y终于如愿以偿地通过高考来到了魂牵梦萦的大学校园——ACdream大学.来到校园的第一件事就是选课. 由于每一门课都有1个学分~而且有一些课需要先学完别的课程(例如必须先学会高等数学,才能学会量子力学,必须先学会走,才能学会跑) A…
CJOJ 2040 [一本通]分组背包(动态规划) Description 一个旅行者有一个最多能用V公斤的背包,现在有n件物品,它们的重量分别是W1,W2,...,Wn,它们的价值分别为C1,C2,...,Cn.这些物品被划分为若干组,每组中的物品互相冲突,最多选一件.求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大. Input 输入有多组数据,每组数据的第一行:三个整数,V(背包容量,V<=200),N(物品数量,N<=30)和T(最大组号,T<=10):…
CJOJ 2307 [一本通]完全背包(动态规划) Description 设有n种物品,每种物品有一个重量及一个价值.但每种物品的数量是无限的,同时有一个背包,最大载重量为M,今从n种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于M,而价值的和为最大. Input 第一行:两个整数,M(背包容量,M<=200)和N(物品数量,N<=30): 第2..N+1行:每行二个整数Wi,Ui,表示每个物品的重量和价值. Output 仅一行,max=一个数,表示最大总价值. Samp…
题目背景 “A fight? Count me in!” 要打架了,算我一个. “Everyone, get in here!” 所有人,都过来! 题目描述 小 Y 是一个喜欢玩游戏的 OIer.一天,她正在玩一款游戏,要打一个 Boss. 虽然这个 Boss 有 10100 点生命值,但它只带了一个随从—---一个只有 m 点生命值的 ‘‘恐怖的奴隶主’’. 这个 ‘‘恐怖的奴隶主’’ 有一个特殊的技能:每当它被扣减生命值但没有死亡(死亡即生命值 ≤ 0),且 Boss 的随从数量小于上限 k…
题目描述 小 Y 是一个心灵手巧的 OIer,她有许多二叉树模型. 小 Y 的二叉树模型中,每个结点都具有一个编号,小 Y 把她最喜欢的一个二叉树模型挂在了墙上,树根在最上面,左右子树分别在树根的左下方与右下方,且他们也都满足这样的悬挂规则.为了让这个模型更加美观,小 Y 选择了一种让这棵二叉树的中序遍历序列最小的悬挂方法.所谓中序遍历最小,就是指中序遍历的结点编号序列的字典序最小. 一天,这个模型不小心被掉在了地上,幸运的是,所有结点和边都没摔坏,但是她想不起这个模型原来是怎么悬挂的了,也就是…
题目描述 小 Y 是一个爱好旅行的 OIer.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁. 她发现每条地铁线路可以看成平面上的一条曲线,不同线路的交点处一定会设有 换乘站 .通过调查得知,没有线路是环线,也没有线路与自身相交.任意两条不同的线路只会在若干个点上相交,没有重合的部分,且没有三线共点的情况.即,如图所示的情况都是不存在的:…
Loj #2324. 「清华集训 2017」小 Y 和二叉树 小Y是一个心灵手巧的OIer,她有许多二叉树模型. 小Y的二叉树模型中,每个结点都具有一个编号,小Y把她最喜欢的一个二叉树模型挂在了墙上,树根在最上面,左右子树分别在树根的左下方与右下方,且他们也都满足 这样的悬挂规则.为了让这个模型更加美观,小Y选择了一种让这棵二叉树的中序遍历序列最小的悬挂方法.所谓中序遍历最小,就是指中序遍历的结点编号序列的字典 序最小. 一天,这个模型不小心被掉在了地上,幸运的是,所有结点和边都没摔坏,但是她想…
[BZOJ4316]小C的独立集(动态规划) 题面 BZOJ 题解 考虑树的独立集求法 设\(f[i][0/1]\)表示\(i\)这个点一定不选,以及\(i\)这个点无所谓的最大值 转移\(f[u][0]=\sum f[v][1]\),\(f[u][1]=\sum f[v][0]\),\(f[u][1]=max(f[u][1],f[u][0])\) 现在放在了仙人掌上, 我们可以看做一棵树加上了若干不相交的返祖边 于是再加上一维\(f[u][0/1][0/1]\) 其中最后一维表示这条边所在的环…
[BZOJ5302][HAOI2018]奇怪的背包(动态规划,容斥原理) 题面 BZOJ 洛谷 题解 为啥泥萌做法和我都不一样啊 一个重量为\(V_i\)的物品,可以放出所有\(gcd(V_i,P)\)的重量,而多个物品也只要\(gcd\)就好了. 现在的问题转变成了有多少个集合\(S\),满足\(S+\{P\}\)中所有数的\(gcd\)是\(w\)的因数.那么实际上就是直接令\(a[i]'=gcd(a[i],P)\),然后选出一个集合使得它是\(gcd(P,w)\)的因数. 考虑对于\(P\…
[洛谷4005]小Y和地铁(搜索) 题面 洛谷 有点长. 题解 首先对于需要被链接的两个点,样例中间基本上把所有的情况都给出来了. 但是还缺了一种从下面绕道左边在从整个上面跨过去在从右边绕到下面来的情况(从反过来是一样的) 然后把所有方法分类之后发现实际上只有\(4\)种决策. 而\(4\)种决策中,两两一组,可以发现对于后面结果的影响是相同的, 那么只需要贪心的考虑选择两种决策的较优值. 所以只剩下两种方法了,直接爆搜+最优性剪枝,拿个二进制什么的状压一下计算贡献, 时间复杂度\(O(2^{n…
小Y的地铁 Time Limit: 50 Sec  Memory Limit: 256 MB Description Input Output 对于每组输入数据,输出一行一个整数,表示除掉这 n 个换乘站之外,最少有几个换乘站. Sample Input 4 4 1 2 1 2 8 1 2 3 4 1 2 3 4 5 5 4 3 3 5 8 1 2 3 4 1 3 2 4 Sample Output 0 0 0 1 HINT n <= 44 Solution 首先,答案显然只和几个区域的连通状态…
题目描述 小 Y 是一个爱好旅行的 OIer.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁. 她发现每条地铁线路可以看成平面上的一条曲线,不同线路的交点处一定会设有 换乘站 .通过调查得知,没有线路是环线,也没有线路与自身相交.任意两条不同的线路只会在若干个点上相交,没有重合的部分,且没有三线共点的情况.即,如图所示的情况都是不存在的: 小 Y 坐着地铁 0 号线,路上依次经过了 n 个换乘站.她记下了每个换乘站可以换乘的线路编号,发现每条线路与她所乘坐的线路最多只有 2…
[BZOJ3437]小P的牧场(动态规划,斜率优化) 题面 BZOJ 题解 考虑暴力\(dp\),设\(f[i]\)表示强制在\(i\)处建立控制站的并控制\([1..i]\)的最小代价. 很显然,枚举上一个控制站的位置\(j\) \(f[i]=min(f[j]+Calc(i,j)+a[i])\),其中\(Calc(i,j)\)表示\(i,j\)之间被\(i\)控制的位置产生的贡献. 这个可以用前缀和优化做到\(O(1)\)计算\(Calc\) 预处理\(s1[i]=\sum b[i],s2[i…
两个月前,陪伴我5年多的小Y(ideapad-y460N卡)突然大伤元气,硬盘跪了,显示屏也黑了一小块.本着经济实惠凑合用的态度换了个320G的硬盘,没想过几天显示屏情况加重,出现无数个红绿相间的线条.正所谓天下无不散之筵席,既然无缘并肩作战,那就一路走好~ 寻寻觅觅,冷冷清清,凄凄惨惨戚戚.在无数次寻寻觅觅后,决定入手一款台式机.记得小时候有一阵子特别时兴组装机,奈何当时不太懂电脑各种乱七八糟的参数,买的都是品牌机.现在也懂个七七八八了,反正都是套路嘛!既然有需求,有情怀,又有知识,那就搞起吧…
解题心得: 1.在明确使用DFS之后一定要找到递归函数的出口.方向,以及递归的点(在某个情况下开始递归)(void 也可以return,但是没有返回值).递归时也要有递归的方向,最后都能够达到递归的出口. 2.在DFS递归的出口处可以用一个数组来进行记录最终的结果,双向递归可以用一个二位数组来记录结果. 3.在循环中,尽量不要多次使用一个变量(不然找错找得你哭瞎双眼.伤心......). 4.先找思路再写程序,写程序时小心变量是否用对,数组是否越界,变量是否初始化,特别实在循环中时.当循环出现多…