<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[m0_74083096的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/m0_74083096</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; m0_74083096]]></copyright><item><title><![CDATA[LIS（最长上升子序列）与LCS（最长公共子序列）]]></title><link>https://blog.youkuaiyun.com/m0_74083096/article/details/150073489</link><guid>https://blog.youkuaiyun.com/m0_74083096/article/details/150073489</guid><author>m0_74083096</author><pubDate>Fri, 08 Aug 2025 20:06:27 +0800</pubDate><description><![CDATA[做法一：使用动态规划，我们定义dp[i]为以arr[i]结尾的最长上升子序列的长度。做法二：我们如果仅仅需要求出最后的结果，可以考虑贪心＋二分查找来优化。我们对于遍历到的每一个元素，我们都在dp数组中去寻找第一个大于等于它的元素，如果没有，代表它最大，所以直接加入dp，如果找到，则更新这个位置为当前元素，以此来保证为未来提供更小的末尾序列。]]></description><category></category></item><item><title><![CDATA[P1886 滑动窗口 /【模板】单调队列]]></title><link>https://blog.youkuaiyun.com/m0_74083096/article/details/149280711</link><guid>https://blog.youkuaiyun.com/m0_74083096/article/details/149280711</guid><author>m0_74083096</author><pubDate>Fri, 11 Jul 2025 18:41:24 +0800</pubDate><description><![CDATA[窗口位置[1   3  -1] -3   5   3   6   7  1  [3  -1  -3]  5   3   6   7  1   3 [-1  -3   5]  3   6   7  1   3  -1 [-3   5   3]  6   7  1   3  -1  -3  [5   3   6]  7  1   3  -1  -3   5  [3   6   7]​最小值−1−3−3−333​最大值335567​​。对于 100% 的数据，1≤k≤n≤106，ai​∈[−231,231)。]]></description><category></category></item><item><title><![CDATA[P1725 琪露诺（动态规划+单调队列优化）]]></title><link>https://blog.youkuaiyun.com/m0_74083096/article/details/149278757</link><guid>https://blog.youkuaiyun.com/m0_74083096/article/details/149278757</guid><author>m0_74083096</author><pubDate>Fri, 11 Jul 2025 17:49:01 +0800</pubDate><description><![CDATA[每当我们来到一个位置i，我们就对当前区间的范围进行维护，由于我们存入队列中的下标是从小到大的，所以我们队列前面的下标比后面的小，如果当前队列中队首元素比限制区间左端点小，那么我们就将其出队。我们发现，针对每一个位置i，我们都会去搜索i-R到i-L，但我们发现，当i每次往后移动一下时，我们需要遍历的区间也只是往后移动了一下，所以我们只需要维护住i-R到i-L的最大值就可以了，由于每次区间只是往后移动了一下，所以这个维护是非常简单的，采取单调队列进行维护。你问为什么她这么移动，这还不简单，因为她是笨蛋啊。]]></description><category></category></item><item><title><![CDATA[P1020 [NOIP 1999 提高组] 导弹拦截（动态规划+二分查找）]]></title><link>https://blog.youkuaiyun.com/m0_74083096/article/details/149200386</link><guid>https://blog.youkuaiyun.com/m0_74083096/article/details/149200386</guid><author>m0_74083096</author><pubDate>Tue, 08 Jul 2025 16:14:09 +0800</pubDate><description><![CDATA[对于第二问，我们需要多少个系统，我们即是要求最长上升子序列，因为在这个子序列中，每一个前面的数都不可能和后面的一个数在一个系统中，所以我们需要将每个数都分到不同的系统中。我们维护一个数组len2[i]，表示最长上升子序列长度为i时，结尾的数最小值为len2[i]，我们可以知道len数组时单调递增的。我们维护一个数组len[i]，表示最长不上升子序列长度为i时，结尾的数最大值为len[i]，我们可以知道len数组是单调不增的。对于全部数据，满足导弹的高度为正整数，且不超过 5×104。]]></description><category></category></item><item><title><![CDATA[P2392 kkksc03考前临时抱佛脚（动态规划）]]></title><link>https://blog.youkuaiyun.com/m0_74083096/article/details/149097864</link><guid>https://blog.youkuaiyun.com/m0_74083096/article/details/149097864</guid><author>m0_74083096</author><pubDate>Thu, 03 Jul 2025 17:05:19 +0800</pubDate><description><![CDATA[因此要开始刷习题集，每科都有一个习题集，分别有 s1​,s2​,s3​,s4​ 道题目，完成每道题目需要一些时间，可能不等（A1​,A2​,…,As1​​，B1​,B2​,…,Bs2​​，C1​,C2​,…,Cs3​​，D1​,D2​,…第 2 行，为 A1​,A2​,…,As1​​ 共 s1​ 个数，表示第一科习题集每道题目所消耗的时间。本题包含 5 行数据：第 1 行，为四个正整数 s1​,s2​,s3​,s4​。,Ds4​​ 共 s4​ 个数，意思均同上。第 4 行，为 C1​,C2​,…]]></description><category></category></item><item><title><![CDATA[P3842 [TJOI2007] 线段（动态规划）]]></title><link>https://blog.youkuaiyun.com/m0_74083096/article/details/149077705</link><guid>https://blog.youkuaiyun.com/m0_74083096/article/details/149077705</guid><author>m0_74083096</author><pubDate>Wed, 02 Jul 2025 20:28:59 +0800</pubDate><description><![CDATA[我们首先对于第一行来说，如果走完当前线段，那么要么停留在左端点，要么停留在右端点。对于下一行，我们任然要走完线段，此时若停留在右端点，则会产生两种情况：从上一行的左端点下来，走完当前线段，停留在右端点；dp[i][1]为在当前i行，走完线段后，停留在左=右端点的最小距离。在一个 n×n 的平面上，在每一行中有一条线段，第 i 行的线段的左端点是 (i,Li​)，右端点是 (i,Ri​)。你从 (1,1) 点出发，要求沿途走过所有的线段，最终到达 (n,n) 点，且所走的路程长度要尽量短。]]></description><category></category></item><item><title><![CDATA[P1077 [NOIP 2012 普及组] 摆花（动态规划)]]></title><link>https://blog.youkuaiyun.com/m0_74083096/article/details/149068121</link><guid>https://blog.youkuaiyun.com/m0_74083096/article/details/149068121</guid><author>m0_74083096</author><pubDate>Wed, 02 Jul 2025 14:17:00 +0800</pubDate><description><![CDATA[为了在门口展出更多种花，规定第 i 种花不能超过 ai​ 盆，摆花时同一种花放在一起，且不同种类的花需按标号的从小到大的顺序依次摆列。规定了必须按照花的编号从小到大摆，那么我们需要先遍历花的种类，我们对目标盆数从小到大遍历，为了不对之前所做的选择覆盖，我们开辟二维数组对先前的结果进行维护。对于 100% 数据，有 0<n≤100,0<m≤100,0≤ai​≤100。对于 50% 数据，有 0<n≤20,0<m≤20,0≤ai​≤20。对于 20% 数据，有 0<n≤8,0<m≤8,0≤ai​≤8。]]></description><category></category></item><item><title><![CDATA[P4017 最大食物链计数（拓扑排序）]]></title><link>https://blog.youkuaiyun.com/m0_74083096/article/details/148980990</link><guid>https://blog.youkuaiyun.com/m0_74083096/article/details/148980990</guid><author>m0_74083096</author><pubDate>Sat, 28 Jun 2025 20:07:07 +0800</pubDate><description><![CDATA[进一步，我们将结果一般化：如果我们需要找到到达a点的所有方式，那么我们需要考虑和它直接相连的每个前一个点，只要将到达前一个点的方式都加起来，便是到达a点的方式。我们初始化生产者的到达方式为1，采取队列来进行操作，首先将所有生产者加入队列，然后依次从队列出取出，并遍历和它相连的每一个点，并将它的值附加到每一个点上，并将其删掉，如此循环。Delia 生物考试的时候，数食物链条数的题目全都错了，因为她总是重复数了几条或漏掉了几条。接下来 m 行，每行两个正整数，表示被吃的生物 A 和吃 A 的生物 B。]]></description><category></category></item><item><title><![CDATA[P1434 [SHOI2002] 滑雪（记忆化搜索）]]></title><link>https://blog.youkuaiyun.com/m0_74083096/article/details/148979682</link><guid>https://blog.youkuaiyun.com/m0_74083096/article/details/148979682</guid><author>m0_74083096</author><pubDate>Sat, 28 Jun 2025 18:09:09 +0800</pubDate><description><![CDATA[可是为了获得速度，滑的区域必须向下倾斜，而且当你滑到坡底，你不得不再次走上坡或者等待升降机来载你。在上面的例子中，一条可行的滑坡为 24−17−16−1（从 24 开始，在 1 结束）。需要知道最长的路径，我们可以想到要使用深搜，但是如果在数据量很大的情况下针对每一个点都进行深搜肯定会超时，我们考虑在每次进行搜索时，将路径上的其它点也进行记录。我们维护一个record数组，来记录从每个点出发的最长路径。我们在进行DFS时，如果当前点已经被搜过，那么直接返回，如果没有，就将其置为1，然后进行搜索。]]></description><category></category></item><item><title><![CDATA[P2196 [NOIP 1996 提高组] 挖地雷（DFS-＞动态规划）]]></title><link>https://blog.youkuaiyun.com/m0_74083096/article/details/148962679</link><guid>https://blog.youkuaiyun.com/m0_74083096/article/details/148962679</guid><author>m0_74083096</author><pubDate>Sat, 28 Jun 2025 00:10:59 +0800</pubDate><description><![CDATA[第 3 行有 n−1 个数（0 或 1），表示第一个地窖至第 2 个、第 3 个 …如第 3 行为 11000⋯0，则表示第 1 个地窖至第 2 个地窖有路径，至第 3 个地窖有路径，至第 4 个地窖、第 5 个 …我们定义dp[i]为从i节点出发可以得到的最大地雷数，那么我们可以知道，dp[i] = max(nums[i],nums[i]+dp[j])，其中j大于i。第 n+1 行有 1 个数，表示第 n−1 个地窖至第 n 个地窖有否路径连接。第 1 行只有一个数字，表示地窖的个数 N。]]></description><category></category></item><item><title><![CDATA[P1048 [NOIP 2005 普及组] 采药（01背包）]]></title><link>https://blog.youkuaiyun.com/m0_74083096/article/details/148933876</link><guid>https://blog.youkuaiyun.com/m0_74083096/article/details/148933876</guid><author>m0_74083096</author><pubDate>Thu, 26 Jun 2025 22:16:57 +0800</pubDate><description><![CDATA[我们需要在规定时间内得到价值总和最大的草药，我们所拥有的条件是草药的种类和对应草药的时间。（t代表着当前草药需要的时间，v代表当前草药的价值），那么问题来了，如果由于dp[T-t]比T小，那么它一定会被修改过，那么现在再进行这种操作，就会产生重复。第一行有 2 个整数 T（1≤T≤1000）和 M（1≤M≤100），用一个空格隔开，T 代表总共能够用来采药的时间，M 代表山洞里的草药的数目。显然不行，因为如果我们当前遍历到后面的dp[T]，那么我们会进行max(dp[T]，dp[T-t]+v)的选择。]]></description><category></category></item><item><title><![CDATA[P2834 纸币问题 3（动态规划）]]></title><link>https://blog.youkuaiyun.com/m0_74083096/article/details/148932267</link><guid>https://blog.youkuaiyun.com/m0_74083096/article/details/148932267</guid><author>m0_74083096</author><pubDate>Thu, 26 Jun 2025 20:40:30 +0800</pubDate><description><![CDATA[你是一个非常有钱的小朋友。注意： 本题和《进阶篇》的对应题目，输入格式略有差异。你有 n 种面额互不相同的纸币，第 i 种纸币的面额为 ai​ 并且有无限张，现在你需要支付 w 的金额，请问有多少种纸币组合能恰好支付金额 w，答案对 109+7 取模。第一行两个正整数 n,w，分别表示纸币的种数和要凑出的金额。
第二行一行 n 个以空格隔开的正整数 a1​,a2​,…an​ 依次表示这 n 种纸币的面额。一行一个整数，表示能恰好凑齐面额 w 的纸币组合数量。输入 #1
6 15
1 5 10 20 50 1]]></description><category></category></item><item><title><![CDATA[P2840 纸币问题 2(动态规划)]]></title><link>https://blog.youkuaiyun.com/m0_74083096/article/details/148907608</link><guid>https://blog.youkuaiyun.com/m0_74083096/article/details/148907608</guid><author>m0_74083096</author><pubDate>Wed, 25 Jun 2025 21:44:28 +0800</pubDate><description><![CDATA[注意：我们需要将dp[0]设置为1，因为如果我们现在需要组成面额为5，然后纸币中又恰有5，那么此时dp[5] = dp[5] + dp[0]。dp[0]=1的意义就是，我现在要组成面额为0，显然只有一种方案，就是不要任何纸币。你有 n 种面额互不相同的纸币，第 i 种纸币的面额为 ai​ 并且有无限张，现在你需要支付 w 的金额，求问有多少种方式可以支付面额 w，答案对 109+7 取模。跟上一个版本类似，我们需要将比目标面额小的面额的组成方式找到，这样我们便可得出目标面额的组成方式。其实小朋友并不有钱。]]></description><category></category></item><item><title><![CDATA[P2842 纸币问题 1（动态规划)]]></title><link>https://blog.youkuaiyun.com/m0_74083096/article/details/148906162</link><guid>https://blog.youkuaiyun.com/m0_74083096/article/details/148906162</guid><author>m0_74083096</author><pubDate>Wed, 25 Jun 2025 20:14:54 +0800</pubDate><description><![CDATA[我们如果需要得目标T最少需要多少张，那么我们可以考虑T-k最少需要多少张（k为已有的纸币的面额），因为这样的话，我们便可直接在此基础上加1得到。某国有 n 种纸币，每种纸币面额为 ai​ 并且有无限张，现在要凑出 w 的金额，试问最少用多少张纸币可以凑出来？由于要求最小数量，所以，我们需要将当前的dp[i]和dp[i-k]（k为目前遍历到的面额）作比较，取最小的即可。对于 100% 的数据，满足 1≤n≤103，1≤ai​≤w≤104。我们规定dp[i]为得到面额为i时，需要的最少纸币数。]]></description><category></category></item><item><title><![CDATA[（洛谷)P4447 [AHOI2018初中组] 分组]]></title><link>https://blog.youkuaiyun.com/m0_74083096/article/details/148878514</link><guid>https://blog.youkuaiyun.com/m0_74083096/article/details/148878514</guid><author>m0_74083096</author><pubDate>Tue, 24 Jun 2025 20:24:16 +0800</pubDate><description><![CDATA[所以我们需要维护每个组的状态，但是我们又不需要维护每个数，由于一开始对数组进行了排序，所以我们只需要维护每个组的最后一个数。那么意味着，如果我现在有多个分组的人具备x的实力值的人，此时来了一个x+1实力值的人，因为要最大化最少人数的拿个分组的人数，那么我们的贪心策略就是：要将此时这个x+1实力值的人放到当前人数最小的组中。如果有小组内人数太少，就会因为时间不够而无法获得高分，于是小可可想让你给出一个合法的分组方案，满足所有人都恰好分到一个小组，使得人数最少的组人数最多，输出人数最少的组人数的最大值。]]></description><category></category></item><item><title><![CDATA[(洛谷)P5019 [NOIP 2018 提高组] 铺设道路]]></title><link>https://blog.youkuaiyun.com/m0_74083096/article/details/148870688</link><guid>https://blog.youkuaiyun.com/m0_74083096/article/details/148870688</guid><author>m0_74083096</author><pubDate>Tue, 24 Jun 2025 14:26:29 +0800</pubDate><description><![CDATA[对于每一个数（记为a），如果比前一个数（记为b）大，那么当前一个坑被填好，这个数必然还需要额外的时间填充，也就是a-b；思路：由于每次填充的区域要么是一个，要么是连续的，所以为了最小化填充时间并且考虑到数据的连续性，我们在遍历到一个数时，就考虑前一个数，这样当遍历完所有数，连续性就都考虑到了。一种可行的最佳方案是，依次选择： [1,6]、[1,6]、[1,2]、[1,1]、[4,6]、[4,4]、[4,4]、[6,6]、[6,6]。对于 30% 的数据，1≤n≤10；NOIP2018 提高组 D1T1。]]></description><category></category></item><item><title><![CDATA[链表---]]></title><link>https://blog.youkuaiyun.com/m0_74083096/article/details/132338407</link><guid>https://blog.youkuaiyun.com/m0_74083096/article/details/132338407</guid><author>m0_74083096</author><pubDate>Thu, 17 Aug 2023 13:01:19 +0800</pubDate><description><![CDATA[第 2∼N 行，第 i 行包含两个整数 k,p，其中 k 为小于 i 的正整数，p 为 0 或者 1。若 p 为 0，则表示将 i 号同学插入到 k 号同学的左边，p 为 1 则表示插入到右边。2∼N 号同学依次入列，编号为 i 的同学入列方式为：老师指定编号为 i 的同学站在编号为 1∼(i−1) 中某位同学（即之前已经入列的同学）的左边或右边；接下来 M 行，每行一个正整数 x，表示将 x 号同学从队列中移去，如果 x 号同学已经不在队列中则忽略这一条指令。第一行一个整数 N，表示了有 N 个同学。]]></description><category></category></item><item><title><![CDATA[二分答案典型]]></title><link>https://blog.youkuaiyun.com/m0_74083096/article/details/132330941</link><guid>https://blog.youkuaiyun.com/m0_74083096/article/details/132330941</guid><author>m0_74083096</author><pubDate>Wed, 16 Aug 2023 23:17:16 +0800</pubDate><description><![CDATA[请注意，公路的起点和终点保证已设有路标，公路的长度为整数，并且原有路标和新设路标都必须距起点整数个单位距离。将与起点距离为 22和 1414 的两个岩石移走后,最短的跳跃距离为 44(从与起点距离 1717 的岩石跳到距离 2121 的岩石,或者从距离 2121 的岩石跳到终点)。第一行包含三个整数 L,N,M，分别表示起点到终点的距离，起点和终点之间的岩石数，以及组委会至多移走的岩石数。第 11 行包括三个数 L,N,K，分别表示公路的长度，原有路标的数量，以及最多可增设的路标数量。]]></description><category></category></item><item><title><![CDATA[简单的异或（前缀和+位运算）]]></title><link>https://blog.youkuaiyun.com/m0_74083096/article/details/132330238</link><guid>https://blog.youkuaiyun.com/m0_74083096/article/details/132330238</guid><author>m0_74083096</author><pubDate>Wed, 16 Aug 2023 22:40:00 +0800</pubDate><description><![CDATA[因为要使最后的异或结果尽可能的大，所以我们考虑每一个数每一位中1出现的次数多还是0出现的次数多。给出一个数组a，长度为n，分别为a1​,a2​,a3​,...an−1​,an​。我们直接用一个二维数组，sum[i][j]，其中i表示第i个数，j表示此数是二进制下从左往右数第j位。对于每次访问，给出一个整数 x(x]]></description><category></category></item><item><title><![CDATA[换根DP（并查集）]]></title><link>https://blog.youkuaiyun.com/m0_74083096/article/details/132297398</link><guid>https://blog.youkuaiyun.com/m0_74083096/article/details/132297398</guid><author>m0_74083096</author><pubDate>Tue, 15 Aug 2023 13:58:59 +0800</pubDate><description><![CDATA[以节点 4 作根时， f(4)=w(4,1)+w(4,2)+w(4,3)+w(4,5)=gcd(1,2)+gcd(1,2,2)+1+2=1+1+1+2=5。令f(t) 表示为节点 t 到树上其他节点的距离之和。接下来 n−1 行，每行三个正整数 u,v,w (1≤u,v≤n,1≤w≤2)，代表 u 和 v 之间有一条权值为 w 的无向边。输出一行一个正整数，代表min(f(1),f(2),f(3)…第一行包含一个正整数 n(1≤n≤105)，代表这棵树的节点数量。求 min(f(1),f(2),…]]></description><category></category></item></channel></rss>