<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[2301_80475191的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/2301_80475191</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; 2301_80475191]]></copyright><item><title><![CDATA[牛客周赛 Round 113题解]]></title><link>https://blog.youkuaiyun.com/2301_80475191/article/details/153327092</link><guid>https://blog.youkuaiyun.com/2301_80475191/article/details/153327092</guid><author>2301_80475191</author><pubDate>Wed, 15 Oct 2025 14:47:59 +0800</pubDate><description><![CDATA[我们可以将30拆分成2*3*5，因此我们将所有的ai去拆分成2，3，5的个数，然后最小的个数就是最终的答案k。思路:我们发现，其实模5，只会根据最后一位产生结果，因此，我们将1到n的所有情况都模5取和，然后去乘前面(n-1)个数的全排列即可得到最终结果，但是要注意取模。思路：其实就是正常的复数计算我们可以设置一个初始实部a=1，初始虚部b=0，然后通过计算来不断更新实部和虚部，然后在计算中记得取模，就可以了。思路：按照题意正常去模拟即可解决问题。思路：我们其实仔细想一下。]]></description><category></category></item><item><title><![CDATA[9.11学习总结（两道前缀和+bitset）]]></title><link>https://blog.youkuaiyun.com/2301_80475191/article/details/151628567</link><guid>https://blog.youkuaiyun.com/2301_80475191/article/details/151628567</guid><author>2301_80475191</author><pubDate>Sat, 13 Sep 2025 00:56:45 +0800</pubDate><description><![CDATA[思路：前缀和+动态规划我们已知长度需要为k的倍数，那么很明显，我们应该从k位置开始遍历，可以先去统计前缀和，然后我们dp[i]数组的含义为从1到i位置的最大元素和，我们从k位置开始跑dp递推式可以发现递推式为思路：双端队列+前缀和这题的数据确实可以用O(n^2)去过，但是如果数据变成1e5肯定就过不了了，所以我在这里写的是一个O(n)时间复杂度的方法。]]></description><category></category></item><item><title><![CDATA[牛客周赛 Round 108题解]]></title><link>https://blog.youkuaiyun.com/2301_80475191/article/details/151586029</link><guid>https://blog.youkuaiyun.com/2301_80475191/article/details/151586029</guid><author>2301_80475191</author><pubDate>Thu, 11 Sep 2025 19:42:41 +0800</pubDate><description><![CDATA[思路：因为是按位与，所以只有所有数都是奇数的时候，最终的权值才是奇数，否则就是偶数，因此我们可以用数学的方法来解决，每个数都有两种可能，因此我们所有的选择的可能数是2^n-1。思路：我们仔细想一下会发现答案的结果只与数组的元素个数有关，与值无关，我们在之上去写会发现，其实就是2的n-1次方，直接写个快速幂取模即可得到最后的答案。我们的f[i][j]表示的意思是，是否能将j分成i个有趣的数，如果可以，值就是1，否则的话，前n-1个数事0，最后一个数事sum。思路：直接根据题意去判断即可。]]></description><category></category></item><item><title><![CDATA[牛客周赛 Round 107题解]]></title><link>https://blog.youkuaiyun.com/2301_80475191/article/details/151072416</link><guid>https://blog.youkuaiyun.com/2301_80475191/article/details/151072416</guid><author>2301_80475191</author><pubDate>Mon, 01 Sep 2025 19:50:05 +0800</pubDate><description><![CDATA[思路：我们来思考一下这个题目，题目上说，我们每次都都会选取最优操作，这个说明，我们会每次都会尽可能的选择直接减去两个位置上的1，那么我们可以来进行分析了，我们考虑当前对于n个位置，总共有a的血量，最少的攻击次数和最多的攻击次数分别是多少。，那我们就将前n-2个都赋值成1，然后将剩下的值一定是一个偶数平分给最后两个位置，然后我们需要考虑要多做几次操作，也就是少做几次一下减2的操作，我们可以想到应该为k-L;（1）当n是奇数的时候，我们应该将多出来的一个1放到前面的这个位置。2.n和a不是同一个奇偶性，]]></description><category></category></item><item><title><![CDATA[Codeforces Round 1046 (Div. 2)题解]]></title><link>https://blog.youkuaiyun.com/2301_80475191/article/details/150980718</link><guid>https://blog.youkuaiyun.com/2301_80475191/article/details/150980718</guid><author>2301_80475191</author><pubDate>Fri, 29 Aug 2025 12:11:32 +0800</pubDate><description><![CDATA[我们只要让s[i]=1的位置尽可能的小就能让其区间尽可能的不是最大值，我们可以从1到n先给s[i]=1的赋值，然后再去赋值0的，什么时候会出现-1的情况呢？我们只要去算上半场得分和下半场与上半场差值得分，然后分别对这两个种情况的大得分对小得分去进行除法，如果结果大于2，那么就说明出现了一个队伍连拿三分的情况，然后输出NO，如果都没有就输出YES。我们对于这题，我们可以用一个pos数组来统计每个数出现了多少次，然后用一个o数组来确定i位置的数，对于a[i]是第几次出现过的，那我们对于状态转移方程就有了。]]></description><category></category></item><item><title><![CDATA[Codeforces Round 1045 (Div. 2)]]></title><link>https://blog.youkuaiyun.com/2301_80475191/article/details/150930615</link><guid>https://blog.youkuaiyun.com/2301_80475191/article/details/150930615</guid><author>2301_80475191</author><pubDate>Wed, 27 Aug 2025 19:13:52 +0800</pubDate><description><![CDATA[因此对于这题我们不仅可以求出来树的最少操作次数为(n-1)-L（L表示树的直径），然后我们来考虑怎样去设置a，b，c的点位才能够让树的直径+1，通过上面那个图，我们发现b一定会在树的直径上，并且c一定在树的直径外的分支上，因此我们可以知道a其实就是b的父节点，因此我们可以先找到树的直径，如果直径长度为n-1（因为根节点在0深度,所以最长直径深度为n-1)，则直接输出-1，否则我们会去遍历所有节点，首先判断当且节点是否在树的直径，是否有儿子节点不在树的直径，并且其父亲节点的值不为-1，如果有就直接输出即可。]]></description><category></category></item><item><title><![CDATA[AtCoder Beginner Contest 419]]></title><link>https://blog.youkuaiyun.com/2301_80475191/article/details/150560879</link><guid>https://blog.youkuaiyun.com/2301_80475191/article/details/150560879</guid><author>2301_80475191</author><pubDate>Fri, 22 Aug 2025 11:38:59 +0800</pubDate><description><![CDATA[因此我们可以知道对于任意一堆i和i+L的元素，必然会是同余M的，我们可以根据长度L去分组，去分成L组，我们假设c[i],为第i组的余数,我们可以知道(c[0]+c[1]+..+c[l-1])%M=0。然后去跑dp过程，我们的dp[i][j]表示的是对于处理了前i组，最终余数累加和%M=j的情况下最小的操作数，然后我们就可以相出dp转移方程式，yu表示(j+k)%M。思路：我们知道他可以朝着八个方向去移动，我们只需要求出最大的x和y和最小的x和y，然后找出最大的差值除二向上取整就是最终的结果。]]></description><category></category></item><item><title><![CDATA[Codeforces Round 1039 (Div. 2)题解]]></title><link>https://blog.youkuaiyun.com/2301_80475191/article/details/149723444</link><guid>https://blog.youkuaiyun.com/2301_80475191/article/details/149723444</guid><author>2301_80475191</author><pubDate>Mon, 28 Jul 2025 20:13:19 +0800</pubDate><description><![CDATA[思路：我们可以去找到第一个小于等于c的位置，然后从这个位置向前贪心，看最多能0个硬币回收几个垃圾，然后用n-最多零元回收的就是最终答案了。]]></description><category></category></item><item><title><![CDATA[Educational Codeforces Round 181 (Rated for Div. 2)题解]]></title><link>https://blog.youkuaiyun.com/2301_80475191/article/details/149573018</link><guid>https://blog.youkuaiyun.com/2301_80475191/article/details/149573018</guid><author>2301_80475191</author><pubDate>Wed, 23 Jul 2025 17:06:27 +0800</pubDate><description><![CDATA[思路：我们直接去遍历字符串s，如果没有出现FFT和NTT就直接输出原字符串，否则就是将所有T移动到整个字符串的前面思路：我们直接去求dx与dy的gcd，然后用dx和dy都去除以gcd，剩下的就是要走的步数，如果有一个要是大于k，那么就要再额外+1的成本思路：由分解质因数可以知道，一个数可以由p个质数的pi次方组成，因此如果我们想要拆分没有1位数的质数，那么就应当将是1位数质数的倍数去掉，然后直接用容斥原理很容易就做出来了。]]></description><category></category></item><item><title><![CDATA[牛客周赛 Round 101题解]]></title><link>https://blog.youkuaiyun.com/2301_80475191/article/details/149505826</link><guid>https://blog.youkuaiyun.com/2301_80475191/article/details/149505826</guid><author>2301_80475191</author><pubDate>Mon, 21 Jul 2025 16:40:34 +0800</pubDate><description><![CDATA[思路：直接按照题目上说的去计算一下即可。]]></description><category></category></item><item><title><![CDATA[分数规划专题]]></title><link>https://blog.youkuaiyun.com/2301_80475191/article/details/149415736</link><guid>https://blog.youkuaiyun.com/2301_80475191/article/details/149415736</guid><author>2301_80475191</author><pubDate>Thu, 17 Jul 2025 11:30:23 +0800</pubDate><description><![CDATA[思路：我们会发现这题是让求才艺和体重的最大值，我们很明显的发现其有点像分数规划，我们的式子可以转变为ti/wi>=mid,mid是我们的可能最大值，我们可以将wi作为体重，ti-mid*wi作为新的值，我们可以用动态规划来来处理，dp[i]表示体重为i的时候，最大的价值，我们用动态规划+二分就能完美决绝问题了int n, W;int w[255];int t[255];dp[0] = 0;i <= n;i++)j >= 0;i <= n;i++)]]></description><category></category></item><item><title><![CDATA[整除分块练习题]]></title><link>https://blog.youkuaiyun.com/2301_80475191/article/details/149371252</link><guid>https://blog.youkuaiyun.com/2301_80475191/article/details/149371252</guid><author>2301_80475191</author><pubDate>Tue, 15 Jul 2025 22:47:56 +0800</pubDate><description><![CDATA[思路：f[i]表示的是，对于i的因子的个数我们还是可以用整除分块，但是我们遍历的是因子了，我们的最小因子一定是1，最大因子是n，对于当前i这个因子，有n/i个数含有当前因子，直接用整除分块板子，去求出来范围，然后乘上这个范围有当前因子的个数累加和即可这题和上面那一题很像，只是将f(x)的定义改为了x的因子的和思路：我们可以很轻松的想到，其实可以视作。]]></description><category></category></item><item><title><![CDATA[AtCoder Beginner Contest 414（A~E题解）]]></title><link>https://blog.youkuaiyun.com/2301_80475191/article/details/149354988</link><guid>https://blog.youkuaiyun.com/2301_80475191/article/details/149354988</guid><author>2301_80475191</author><pubDate>Tue, 15 Jul 2025 15:44:00 +0800</pubDate><description><![CDATA[思路：直接统计那些观众的x<=L&&y>=R即可思路：我们去统计第i个操作的字符是什么，以及长度，大于100的长度按101来算，然后去累加长度和，大于一百输出"Too Long",否则就是把每次操作的个数以及元素输出。]]></description><category></category></item><item><title><![CDATA[Codeforces Round 1034 (Div. 3)题解]]></title><link>https://blog.youkuaiyun.com/2301_80475191/article/details/149226847</link><guid>https://blog.youkuaiyun.com/2301_80475191/article/details/149226847</guid><author>2301_80475191</author><pubDate>Wed, 09 Jul 2025 16:58:41 +0800</pubDate><description><![CDATA[思路：我们可以对其分情况考虑，我们对k和n的关系去讨论，我们考虑什么时候才能让这个字符串里面的1的个数减少，我们们会发现，当k>=n/2+1的时候，1的个数会在每次操作后-1，直到变成k个，然后全部变成0，这个时候就要输出Alice了，另外一种情况是k<=n/2，这种情况，只有在1的个数小于等于k的时候才能输出Alice，否则就是输出Bob了。在来分析如果右边没有比他大的，但是左边有比他小的，直接后缀跑一遍就可以了，如果右边没有比他大的，但是左边有比他大的，可以先前缀跑一遍，然后在后缀更新成当前值。]]></description><category></category></item><item><title><![CDATA[牛客周赛 Round 99题解]]></title><link>https://blog.youkuaiyun.com/2301_80475191/article/details/149183631</link><guid>https://blog.youkuaiyun.com/2301_80475191/article/details/149183631</guid><author>2301_80475191</author><pubDate>Mon, 07 Jul 2025 23:05:22 +0800</pubDate><description><![CDATA[思路：其实仔细想想这道题，其实会将整个序列分成两部分，左部分，会将当前位置的值都变成下标，右半部分就是不需要变化的，我们只需要枚举从哪个位置开始进行右半部分即可，我们可以知道右半部分的值一定是ai>=i的，并且ai<ai+1的，我们只需要去统计左半部分的数的种类，就是最后的答案了。否则 我们要去看剩下的是否能让当前位后面的全部变成1，如果不能，就直接跳过，如果可以就在这一位补充k个人有即可，我们可以列一个式子。思路：基本上最高位用4或者8，后面全部用8即可，如果是0，就输出1，否则就是按照洞数去构造。]]></description><category></category></item><item><title><![CDATA[Codeforces Round 1035 (Div. 2)题解]]></title><link>https://blog.youkuaiyun.com/2301_80475191/article/details/149177671</link><guid>https://blog.youkuaiyun.com/2301_80475191/article/details/149177671</guid><author>2301_80475191</author><pubDate>Mon, 07 Jul 2025 21:43:08 +0800</pubDate><description><![CDATA[我们来考虑偶数的情况，我们来考虑只有两个数的情况，我们仔细思考一下会发现不论怎样都不肯会产生有效的组合，直接输出-1就行，但是当大于等于4后，我们可以让前n-2个的值都是L，然后最后两个的值设为ans要满足L&ans=0,即可，这样就可以满足与的值等于异或的值，我们只需要找出L的最高位1的位置pos，然后给L+(1<<(pos+1))即可，就是ans的值，但是我们要去判断是否在L和R区间范围内，如果不在就输出-1，否则就是输出第k位的值即可。首先来讲一下题意吧，这个题是真的太晦涩难懂了，看题这一块儿。]]></description><category></category></item><item><title><![CDATA[牛客周赛94]]></title><link>https://blog.youkuaiyun.com/2301_80475191/article/details/148357300</link><guid>https://blog.youkuaiyun.com/2301_80475191/article/details/148357300</guid><author>2301_80475191</author><pubDate>Sat, 31 May 2025 23:46:40 +0800</pubDate><description><![CDATA[随手写一下题解吧，最后一题确实有点烧脑了，一开始没想到，看完题解确实茅塞顿开了思路：n级台阶，每次只能走1或2格，问你最少得步数，那肯定就是每次都走两个，如果是奇数就多走一个，否则就是整除思路：纯暴力把每种情况枚举一遍即可。]]></description><category></category></item><item><title><![CDATA[牛客周赛 Round 91]]></title><link>https://blog.youkuaiyun.com/2301_80475191/article/details/147775769</link><guid>https://blog.youkuaiyun.com/2301_80475191/article/details/147775769</guid><author>2301_80475191</author><pubDate>Wed, 07 May 2025 22:41:59 +0800</pubDate><description><![CDATA[签到题，没什么可说的。]]></description><category></category></item><item><title><![CDATA[概率dp总结]]></title><link>https://blog.youkuaiyun.com/2301_80475191/article/details/147465440</link><guid>https://blog.youkuaiyun.com/2301_80475191/article/details/147465440</guid><author>2301_80475191</author><pubDate>Wed, 23 Apr 2025 23:23:30 +0800</pubDate><description><![CDATA[dp[i][j]+=j/(i+j)*(j-1)/(i+j-1)*(-2)/(i+j-2)*dp[i][j-3]//第四种情况。dp[i][j]+=j/(i+j)*(j-1)/(i+j-1)*i/(i+j-2)*dp[i-1][j-2]//第三种情况。我们这一次博客首先来讲dp去求概率的问题，这种问题一般都是顺序向后推的，主要还是dp的状态转移方程式一般还是比较难找到的。我们首先来想dp表达式表达的是什么，我们的dp[i][j]表示的是剩下i只白鼠，j只黑鼠，公主能够获胜的概率。，树上进行 DP 转移等。]]></description><category></category></item><item><title><![CDATA[AtCoder Beginner Contest 402题解]]></title><link>https://blog.youkuaiyun.com/2301_80475191/article/details/147464547</link><guid>https://blog.youkuaiyun.com/2301_80475191/article/details/147464547</guid><author>2301_80475191</author><pubDate>Wed, 23 Apr 2025 22:56:36 +0800</pubDate><description><![CDATA[思路：仔细看这题其实就发现，我们只需要遍历一遍字符串把大写字母输出即可，很标准的签到题。]]></description><category></category></item></channel></rss>