<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[JCGOODER的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/JCGOODER</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; JCGOODER]]></copyright><item><title><![CDATA[Codeforces Round 893 (Div. 2) D.Trees and Segments]]></title><link>https://blog.youkuaiyun.com/JCGOODER/article/details/132349726</link><guid>https://blog.youkuaiyun.com/JCGOODER/article/details/132349726</guid><author>JCGOODER</author><pubDate>Thu, 17 Aug 2023 21:23:10 +0800</pubDate><description><![CDATA[当然这样子操作的总复杂度是O(n^4)，我们肯定是不能接受的，那么怎么能让它复杂度降下来呢？我们可以利用dp来预处理，用dp[i][j]来表示[i~n]区间，操作数最大为j时，1串的最大长度。可以发现n]]></description><category></category></item><item><title><![CDATA[2023牛客暑期多校训练营8（A/H/I/J）]]></title><link>https://blog.youkuaiyun.com/JCGOODER/article/details/132299249</link><guid>https://blog.youkuaiyun.com/JCGOODER/article/details/132299249</guid><author>JCGOODER</author><pubDate>Tue, 15 Aug 2023 17:08:37 +0800</pubDate><description><![CDATA[根据题意我们可以发现，因为数字是按顺序1,2,3......插，所以若一段区间[l,r]满足条件，那么[l,r'](r']]></description><category></category></item><item><title><![CDATA[2023牛客暑期多校训练营7（C/I/M）]]></title><link>https://blog.youkuaiyun.com/JCGOODER/article/details/132211682</link><guid>https://blog.youkuaiyun.com/JCGOODER/article/details/132211682</guid><author>JCGOODER</author><pubDate>Thu, 10 Aug 2023 17:00:39 +0800</pubDate><description><![CDATA[找f[i]的f[i-1]的从高位到低位，第一个不同的位即可，我们设这个是第k位。此时a[1]的第k位必须和f[i]第k位的值相同，这样子就能让f[i]^a[1]的第k位是0，f[i+1]^a[1]第k位是1，保证了前者小于后者。首先我们先初始化a[1]二进制位为-1，这代表a[1]的这个位可以是0，也可以是1。然后我们再根据a[1]^f[i-1] <= a[1]^f[i]此时我们得到了n个-1的值，我们我们最多能表示第2的n次方大的值，此时我们只需将（k-1）拆分成二进制依次填入-1的位置即可。]]></description><category></category></item><item><title><![CDATA[2023牛客暑期多校训练营2（D/E/F/H/I/K）]]></title><link>https://blog.youkuaiyun.com/JCGOODER/article/details/131919884</link><guid>https://blog.youkuaiyun.com/JCGOODER/article/details/131919884</guid><author>JCGOODER</author><pubDate>Wed, 26 Jul 2023 17:21:17 +0800</pubDate><description><![CDATA[该情况可推广至三个棋子，三个棋子的距离端点距离可以抽象为所有棋子距离端点的距离之和，棋子可以在端点之和为奇数的区间内反复横跳，来保持自己的最终的奇偶性，从而导致先手必胜，反之先手必败。操作A相当于将x变成反码，也就是在取模意义下，操作A会令x=-x-1，而操作B会x=x+1，所以我们先开两个前缀和数组，一个记录前缀A的个数，一个记录前缀的贡献，然后在每次操作中，若l~r的区间内的A的个数为奇数，则原本的贡献要乘上-1，如此模拟即可。所以我们考虑倒着贪心。dp[i][0]表示第i位移动到i-1位的情况。]]></description><category></category></item><item><title><![CDATA[Codeforces Round 888 (Div. 3) A~F]]></title><link>https://blog.youkuaiyun.com/JCGOODER/article/details/131935738</link><guid>https://blog.youkuaiyun.com/JCGOODER/article/details/131935738</guid><author>JCGOODER</author><pubDate>Wed, 26 Jul 2023 12:55:13 +0800</pubDate><description><![CDATA[比如第一个数是0，第二个数是0，用1来异或这两数后，第一个数变1，第二个数变1，他们两相与为1；比如第一个数是1，第二个数是1，用0来异或这两数后，第一个数还是1，第二个数还是1，他们两相与还是1；比如第一个数是0，第二个数是1，用1来异或这两数后，第一个数变0，第二个数变1，他们两相与为0；用0来异或这两数后，第一个数还是0，第二个数还是1，他们两相与还是为0。①1~n之间恰好有两个数的位置上是空的，并且恰好有一个数多余的数，等于这两个位置加起来，这样就能使得1~n填满。]]></description><category></category></item><item><title><![CDATA[2023牛客暑期多校训练营1（D/H/J/K/M）]]></title><link>https://blog.youkuaiyun.com/JCGOODER/article/details/131790993</link><guid>https://blog.youkuaiyun.com/JCGOODER/article/details/131790993</guid><author>JCGOODER</author><pubDate>Tue, 18 Jul 2023 18:08:43 +0800</pubDate><description><![CDATA[每次分治Walk Alone赢的基础概率为1/2，而后面的第x个的0会产生(1/2)^(x+1)的贡献，这表示形成之前x-1情况的概率*1/2，所以每位1的总贡献为1/2+(1/2)^2...(1/2)^(零的个数+1)，最后分块求和就完事了。因为连续的x-1位0对于的答案的贡献为-(2^x-1)，而连续的x-1位0后的第x位1的贡献为2^x次，它们的和即为-(2^x-1)+2^x=1。我们将a[i]>=b[i]的序对称为序1，a[i]]]></description><category></category></item><item><title><![CDATA[The 2022 ICPC Asia Xian Regional Contest（C/E/F/G/J/L）]]></title><link>https://blog.youkuaiyun.com/JCGOODER/article/details/131662339</link><guid>https://blog.youkuaiyun.com/JCGOODER/article/details/131662339</guid><author>JCGOODER</author><pubDate>Tue, 11 Jul 2023 17:14:39 +0800</pubDate><description><![CDATA[若一个单词S满足条件，则它的子串S[1~n-1]和S[2~n]也满足条件，所以我们根据字符串长度从下往上拼出最长的单词，若这个单词S能在比它长度小的set集合中，找到S[1~n-1]和S[2~n]两个字串，说明这个字符合法，放入set，反之continue。总结一下，就是枚举r在三进制上的每一位，然后该位-1，后面的位都变成2，再判断它是否大于l，若合法则答案取min。当我们选择i=n时，我们则可以选择整个区间，所以我们在这个区间内我们可以分别选择最大的2个元素、最大的1个元素、不选，三者取max即可。]]></description><category></category></item><item><title><![CDATA[Codeforces Round 883 (Div. 3) A~G]]></title><link>https://blog.youkuaiyun.com/JCGOODER/article/details/131609163</link><guid>https://blog.youkuaiyun.com/JCGOODER/article/details/131609163</guid><author>JCGOODER</author><pubDate>Sat, 08 Jul 2023 12:53:44 +0800</pubDate><description><![CDATA[当q小于1e6时，直接预处理判断即可，而当q大于1e6时时候，若k等于4，则(1-q^4)/(1-q)>1e18，超过了n范围了，所以当q>1e6时k只可能等于3，此时只需要判断q^2+q+1=n，是否存在整数根即可。给你n个m行的出题时间，比赛在第h分钟罚时结束，每做一个题的罚时会累加到后面，你是第一个人，问你的排名是多少（若有人和你并列，你的排名则在那个人的前面）。给你一个n，问你是否能够找到(1-q^k)/(1-q)（等比数列前n项和）恰好等于n，其中q，k为自定义，q>=2，k>=3。]]></description><category></category></item><item><title><![CDATA[The 2021 ICPC Asia Shenyang Regional Contest (B/E/F/J)]]></title><link>https://blog.youkuaiyun.com/JCGOODER/article/details/131543313</link><guid>https://blog.youkuaiyun.com/JCGOODER/article/details/131543313</guid><author>JCGOODER</author><pubDate>Wed, 05 Jul 2023 14:30:21 +0800</pubDate><description><![CDATA[我们可以先根据起点和终点的位置先得到他们的相对位置，比如起点为“1234”，终点为“2345”，那么他们的相对起点为“0000”，相对终点是“1111”，也就是他们两相减。因为对于二进制来说，每个位数的异或是独立的，是互不影响的，并且若已知一个连通块中某个点权的某个二进制位值，那么其它点权的该二进制位值就都知道了，所以只需枚举各个连通块中随便的一个点权的二进制位即可，并且二进制是0的情况和二进制是1的情况是对称的，取min累加即可，具体实现见代码与注释。给你一个字符串，问该字符串中有多少个“edgnb”。]]></description><category></category></item><item><title><![CDATA[Educational Codeforces Round 151 (Rated for Div. 2) A~D]]></title><link>https://blog.youkuaiyun.com/JCGOODER/article/details/131483648</link><guid>https://blog.youkuaiyun.com/JCGOODER/article/details/131483648</guid><author>JCGOODER</author><pubDate>Sat, 01 Jul 2023 17:12:12 +0800</pubDate><description><![CDATA[首先，对于每一位上数字的数字k，我们从它的范围[li,ri]遍历一遍，在遍历的过程中，若k在字符串中存在，则最优的选法是数字k在未被“删”去的字符串中第一次出现的相同数字的靠后位置。分类讨论，若B点的横坐标和C点的横坐标相对于A点的纵坐标在同一侧，则对于答案的贡献为B点和C点与A的横坐标距离的较小值，也就是“公共横坐标路径”，公共纵坐标路径的贡献的计算同理。给你三个整数n，k，x，你可以使用1~k中除x以外的任意数字，并且能使用无数次，问你能不能从中选出拼出n的数字。若我们选择了数字2，则子序列从111。]]></description><category></category></item><item><title><![CDATA[2020 China Collegiate Programming Contest Qinhuangdao Site（A/E/F/G/K）]]></title><link>https://blog.youkuaiyun.com/JCGOODER/article/details/130181730</link><guid>https://blog.youkuaiyun.com/JCGOODER/article/details/130181730</guid><author>JCGOODER</author><pubDate>Sun, 16 Apr 2023 15:51:23 +0800</pubDate><description><![CDATA[2020CCPC秦皇岛]]></description><category></category></item><item><title><![CDATA[Codeforces Round 859 (Div. 4) A~G]]></title><link>https://blog.youkuaiyun.com/JCGOODER/article/details/129665796</link><guid>https://blog.youkuaiyun.com/JCGOODER/article/details/129665796</guid><author>JCGOODER</author><pubDate>Mon, 20 Mar 2023 14:13:59 +0800</pubDate><description><![CDATA[思路：我们考虑最“坏”的情况，数组为1,1,2,4,8,16......，可以发现它们都是2的幂次，通过二进制的思想可以发现他组成数的范围为1~sum，所以1~sum都能利用前面的数组成，利用前缀和判断下一个数是否大于sum即可。思路：利用前缀和二分判断区间内的总和是否合法，若左区间合法则r=mid，反之l=mid+1，直至l=r。思路：按照题意模拟即可，主要就是判断有没有重复一开始的两步行为，若有则输出-1。思路：把偶数全放前面，把奇数全放后面，这样只用看偶数之和是否严格大于奇数之和。]]></description><category></category></item><item><title><![CDATA[Educational Codeforces Round 144 (Rated for Div. 2) C. Maximum Set]]></title><link>https://blog.youkuaiyun.com/JCGOODER/article/details/129288777</link><guid>https://blog.youkuaiyun.com/JCGOODER/article/details/129288777</guid><author>JCGOODER</author><pubDate>Wed, 01 Mar 2023 21:14:08 +0800</pubDate><description><![CDATA[问在区间[L,R] 中由这个区间某些数内构成的好的集合的最长长度是多少，以及且满足这个长度的好集合有多少个。当然，一开始我们需要特判下l*2>r的情况，此时集合最大长度为1，并且因为集合中的第一个数也就是最后一个数可以取l~r的所有值，所以方案数为r-l+1。PS:最开始左端点为l，并且p*左端点=l并且]]></description><category></category></item><item><title><![CDATA[Codeforces Round #849 (Div. 4) A~G2]]></title><link>https://blog.youkuaiyun.com/JCGOODER/article/details/128886262</link><guid>https://blog.youkuaiyun.com/JCGOODER/article/details/128886262</guid><author>JCGOODER</author><pubDate>Sun, 05 Feb 2023 00:10:26 +0800</pubDate><description><![CDATA[而若t]]></description><category></category></item><item><title><![CDATA[Codeforces Round #847 (Div. 3) A~E]]></title><link>https://blog.youkuaiyun.com/JCGOODER/article/details/128779220</link><guid>https://blog.youkuaiyun.com/JCGOODER/article/details/128779220</guid><author>JCGOODER</author><pubDate>Sat, 28 Jan 2023 16:57:25 +0800</pubDate><description><![CDATA[排列的第一个数在每个数组的第一个位置总共会出现n-1次，由此我们可以确定排列的第一个数为k，然后我们找到那个数组第一个数不是k的数组，这个数组就是排列第2~n的数字，输出第一个数并且输出该数组即可。若一个数前面没连续数字，则该数对于答案的贡献为该数出现的次数，但若该数前一个数出现过了，那么该数的一部分就能合并到前一个数里面，减少了上一个数出现次数的贡献（该数贡献最多减少至0）。已知道所有骰子的数量，骰子的点数总和，以及拿走一个最大值的点数总和，请构造所有骰子的点数。求出一个数字的前几位和 π 相同。]]></description><category></category></item><item><title><![CDATA[Educational Codeforces Round 141 (Rated for Div. 2) C. Yet Another Tournament]]></title><link>https://blog.youkuaiyun.com/JCGOODER/article/details/128608096</link><guid>https://blog.youkuaiyun.com/JCGOODER/article/details/128608096</guid><author>JCGOODER</author><pubDate>Mon, 09 Jan 2023 03:00:11 +0800</pubDate><description><![CDATA[在一开始，第i个人会赢i场，但是你可以选择任意k个不同的a[i]，并且满足这k个a[i]的和小于m，然后你就可以让这k个a[i]对应位置的胜场减一，并且你的胜场为变为k，也就是你选择a[i]的数目。然后你就可以选择i=1，i=3，i=4，因为a[1]+a[3]+a[4]=1+2+1]]></description><category></category></item><item><title><![CDATA[【每日一题】打卡 76]]></title><link>https://blog.youkuaiyun.com/JCGOODER/article/details/128567600</link><guid>https://blog.youkuaiyun.com/JCGOODER/article/details/128567600</guid><author>JCGOODER</author><pubDate>Thu, 05 Jan 2023 19:03:31 +0800</pubDate><description><![CDATA[我们可以发现，若一个结点的子树最左边的编号为l，最右边的编号为r，那么它下一层子树的编号的范围为l*k+1~r*k+k，所以我们利用dfs一层一层累加，判断左右边界即可，具体实现见代码。]]></description><category></category></item><item><title><![CDATA[Hello 2023 D. Boris and His Amazing Haircut]]></title><link>https://blog.youkuaiyun.com/JCGOODER/article/details/128551095</link><guid>https://blog.youkuaiyun.com/JCGOODER/article/details/128551095</guid><author>JCGOODER</author><pubDate>Wed, 04 Jan 2023 17:05:37 +0800</pubDate><description><![CDATA[思路：显然，若存在a[i]]]></description><category></category></item><item><title><![CDATA[Good Bye 2022: 2023 is NEAR D. Koxia and Game]]></title><link>https://blog.youkuaiyun.com/JCGOODER/article/details/128523925</link><guid>https://blog.youkuaiyun.com/JCGOODER/article/details/128523925</guid><author>JCGOODER</author><pubDate>Mon, 02 Jan 2023 21:53:23 +0800</pubDate><description><![CDATA[最后在有解的情况下，若结点a[i]=b[i]，则方案数*n，因为c[i]无论怎么选都不会使得本来有解的情况变成无解，所c[i]可以在1~n中任选。=b[i]，则看a[i]和b[i]是否在一个环中，若在一个环中，就说明我们可以在这个环中逆时针选一次，顺时针选一次，方案数*2。而若a[i]和b[i]原本就一样的话，c[i]可以选任何值，对方案的贡献值为*n，若不一样的话，则c[i]只能等于a[i]或者b[i]。首先我们需要知道，a[i]、b[i]和c[i]中一定要有两个是相同的，并且。可以画成下面这样的图。]]></description><category></category></item><item><title><![CDATA[Good Bye 2022: 2023 is NEAR C. Koxia and Number Theory]]></title><link>https://blog.youkuaiyun.com/JCGOODER/article/details/128512489</link><guid>https://blog.youkuaiyun.com/JCGOODER/article/details/128512489</guid><author>JCGOODER</author><pubDate>Sun, 01 Jan 2023 15:48:02 +0800</pubDate><description><![CDATA[的格子，怎么放都会有一个格子里的物品数小于2（鸽巢原理），所以只需要枚举。给定一个长度为n的数组，请问是否存在一个数 x ，使得任意两个数。即可，最后的最后别忘了判断数组内有数字重复的情况。若是输出 YES ，反之输出 NO。就不为1了，就不符合题意了。好了，现在我们提炼一下上面的规律。中至少要有一个能选，也就是。就没值可以选了（此时若。都不能选），因此若要。]]></description><category></category></item></channel></rss>