<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Prgl的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Lznw_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Lznw_]]></copyright><item><title><![CDATA[Codeforces Round #773 (Div. 2)D，E]]></title><link>https://blog.youkuaiyun.com/Lznw_/article/details/123113738</link><guid>https://blog.youkuaiyun.com/Lznw_/article/details/123113738</guid><author>Lznw_</author><pubDate>Thu, 24 Feb 2022 16:09:13 +0800</pubDate><description><![CDATA[传送门
题目大意：
一个长为n(n2≤250000)n(n^2\leq250000)n(n2≤250000)的序列，每个元素ai(1≤ai≤109)a_{i}(1\leq a_{i}\leq 10^9)ai​(1≤ai​≤109)
可以执行若干次操作，每次在序列中的某个位置插入两个相同的数字，给出一组操作序列，使得操作后的序列可以划分为若干个长为偶数的段，每段长度为kik_{i}ki​，在该段内满足aj=aj+ki2a_{j}=a_{j+\frac {k_{i}}{2}}aj​=aj+2ki​​​，并给出最]]></description><category></category></item><item><title><![CDATA[Codeforces Round #770 (Div. 2)D]]></title><link>https://blog.youkuaiyun.com/Lznw_/article/details/122810839</link><guid>https://blog.youkuaiyun.com/Lznw_/article/details/122810839</guid><author>Lznw_</author><pubDate>Mon, 07 Feb 2022 19:07:14 +0800</pubDate><description><![CDATA[传送门
题目大意：
交互题，n(4≤n≤1000)n(4\leq n\leq1000)n(4≤n≤1000)个数字组成的数列a1,a2,…,an(0≤ai≤109)a_{1},a_{2},…,a_{n}(0\leq a_{i}\leq10^9)a1​,a2​,…,an​(0≤ai​≤109)，有且仅有111个000，每次询问i,j,ki,j,ki,j,k，会给出max(ai,aj,ak)−min(ai,aj,ak)max(a_{i},a{j},a{k})-min(a_{i},a_{j},a_{k})max(]]></description><category></category></item><item><title><![CDATA[Codeforces Round #769 (Div. 2)D,E]]></title><link>https://blog.youkuaiyun.com/Lznw_/article/details/122760010</link><guid>https://blog.youkuaiyun.com/Lznw_/article/details/122760010</guid><author>Lznw_</author><pubDate>Mon, 31 Jan 2022 15:32:47 +0800</pubDate><description><![CDATA[D.New Year Concert
传送门
题目大意：
一个长为N(1≤N≤2×105)N(1\leq N\leq2\times 10^5)N(1≤N≤2×105)的序列AAA，对于[l,r][l,r][l,r]，如果gcd(Al,Al+1,...,Ar)=r−l+1gcd(A_{l},A_{l+1},...,A_{r})=r-l+1gcd(Al​,Al+1​,...,Ar​)=r−l+1，称这一段不好，每次操作可以将数列上任意一个位置上的数字替换为任意一个正整数。对序列的每个前缀，求出最少操作多少次可以]]></description><category></category></item><item><title><![CDATA[AHUACM寒假集训VI（网络流）]]></title><link>https://blog.youkuaiyun.com/Lznw_/article/details/122734005</link><guid>https://blog.youkuaiyun.com/Lznw_/article/details/122734005</guid><author>Lznw_</author><pubDate>Fri, 28 Jan 2022 17:19:48 +0800</pubDate><description><![CDATA[luoguP4174.最大获利
传送门
题目大意：
N(N≤5000)N(N\leq 5000)N(N≤5000)个基站，每个基站建设成本Pi(0≤Pi≤100)P_{i}(0\leq P_{i}\leq 100)Pi​(0≤Pi​≤100)，M(M≤50000)M(M\leq50000)M(M≤50000)个用户，第iii个用户希望使用AiA_{i}Ai​，BiB_{i}Bi​两个基站，给使用费Ci(0≤Ci≤100)C_{i}(0\leq C_{i}\leq 100)Ci​(0≤Ci​≤100)。可以选]]></description><category></category></item><item><title><![CDATA[AHUACM寒假集训I（基础数据结构+串串）]]></title><link>https://blog.youkuaiyun.com/Lznw_/article/details/122491878</link><guid>https://blog.youkuaiyun.com/Lznw_/article/details/122491878</guid><author>Lznw_</author><pubDate>Fri, 14 Jan 2022 13:01:53 +0800</pubDate><description><![CDATA[H.超级钢琴
luoguP2048
题目大意：求出一个长N序列中所有长度在L到R的子序列中序列和最大的K个，并求这K个的和
思路：暴力的话可以求出所有满足要求的子序列然后排序，然后显然会T。
所以我们可以考虑对最大值一个个求解，求出一个最大值后删去之，继续求剩下的里面的最大值，总共求出K个即可。
我们先做一个前缀和，然后枚举左端点S[i]S[i]S[i]，右端点S[j]S[j]S[j]在一个区间内，我们可以求出右端点的最大值也就能求出当前左端点下的最大值，我们把每个左端点这样求出的值加入堆内，然后我们弹出了]]></description><category></category></item><item><title><![CDATA[AHUACM寒假集训II（线段树）]]></title><link>https://blog.youkuaiyun.com/Lznw_/article/details/122476781</link><guid>https://blog.youkuaiyun.com/Lznw_/article/details/122476781</guid><author>Lznw_</author><pubDate>Thu, 13 Jan 2022 17:26:20 +0800</pubDate><description><![CDATA[AHUACM寒假集训II（线段树）
B.Mayor’s posters
POJ2528
题目大意：
D.Count Color
POJ2777
题目大意：长为L(L≤105)L(	L\leq10^5)L(L≤105)的序列，每个点上可以有T(T≤30)T(T\leq30)T(T≤30)种颜色以供染色（整个序列最开始都为颜色1），O(O≤105)O(O\leq10^5)O(O≤105)次操作：
CCC aaa bbb ccc：[a,b][a,b][a,b]染上颜色ccc
PPP aaa bbb：查询[a,b]]]></description><category></category></item><item><title><![CDATA[AcWing 215. 破译密码]]></title><link>https://blog.youkuaiyun.com/Lznw_/article/details/121545934</link><guid>https://blog.youkuaiyun.com/Lznw_/article/details/121545934</guid><author>Lznw_</author><pubDate>Thu, 25 Nov 2021 20:08:25 +0800</pubDate><description><![CDATA[传送门



思路：gcd(a,b)=k&lt;=&gt;gcd(a/k,b/k)=1，令x=a/k,y=b/k，则问题变为问x&lt;=a/d,y&lt;=b/d有多少(x,y)满足gcd(x,y)=1。

这个问题可以用容斥原理求解，令全集为所有(x,y),性质为p[i]|gcd(x,y),p[i]为质数，那么答案就是所有p[i]|gcd(x,y)的并集的补集，显然全集为x*y，计算补集时就是满足的（x,y)个数，容易发现这一项在最终的式子中的系数就是

而满足k|gcd(x,y)的(x,y)数量为(.]]></description><category></category></item><item><title><![CDATA[洛谷P1450.硬币购物]]></title><link>https://blog.youkuaiyun.com/Lznw_/article/details/121520598</link><guid>https://blog.youkuaiyun.com/Lznw_/article/details/121520598</guid><author>Lznw_</author><pubDate>Wed, 24 Nov 2021 18:00:14 +0800</pubDate><description><![CDATA[传送门 

题目大意：4种面值的硬币，每种硬币持有


#include&lt;bits/stdc++.h&gt;
#include&lt;unordered_map&gt;
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair&lt;int, int&gt; PII;
typedef pair&lt;double, double&gt; PDD;
//#define int LL
#d]]></description><category></category></item><item><title><![CDATA[2020ICPC上海站 C. Sum of Log]]></title><link>https://blog.youkuaiyun.com/Lznw_/article/details/121087800</link><guid>https://blog.youkuaiyun.com/Lznw_/article/details/121087800</guid><author>Lznw_</author><pubDate>Mon, 01 Nov 2021 21:05:03 +0800</pubDate><description><![CDATA[题目大意：

给定T组X,Y，对于每组X,Y，求上面式子的值，其中当x为真时等于1，其他情况等于0.其中。

思路：

对X,Y一起进行数位DP，我们把每一位枚举数字的上限以及数字之前是否有前导零（当X,Y枚举到这一位二者都有前导零时才为true）都直接记录到这一位的状态里面，然后在枚举每一位的时候，枚举X，Y在这一位上面所有可能的组合（i，j)。如果i&amp;j为1，那么X&amp;Y就一定不为0，便不会对答案产生贡献，这种情况下的后面若干位就不用枚举了。否则，对答案产生了贡献，由于在X&a...]]></description><category></category></item><item><title><![CDATA[AcWing 207. 球形空间产生器]]></title><link>https://blog.youkuaiyun.com/Lznw_/article/details/121042075</link><guid>https://blog.youkuaiyun.com/Lznw_/article/details/121042075</guid><author>Lznw_</author><pubDate>Fri, 29 Oct 2021 20:32:52 +0800</pubDate><description><![CDATA[传送门



思路：

    设球心坐标为（x1，x2，...，xn），有，由此我们可以列出N+1个二次方程，我们可以对前后两个方程做差，来得到N个一次方程，同时可以消掉常数C，那么我们就可以直接采用高斯消元，解出圆心的坐标。

代码：


#include&lt;bits/stdc++.h&gt;
#include&lt;unordered_map&gt;
using namespace std;
typedef long long LL;
typedef unsigned long lon...]]></description><category></category></item><item><title><![CDATA[Codeforces Round #750 (Div. 2) E. Pchelyonok and Segments]]></title><link>https://blog.youkuaiyun.com/Lznw_/article/details/121025289</link><guid>https://blog.youkuaiyun.com/Lznw_/article/details/121025289</guid><author>Lznw_</author><pubDate>Thu, 28 Oct 2021 23:20:38 +0800</pubDate><description><![CDATA[传送门

题目大意：

给一个序列，可以在这个序列中从左至右选若干个段，第i段的长度为i，对于任意的段i，段内元素和S[i]&lt;S[i+1]，求在该序列中最多可以选出几段。

思路：设dp[i][j]为从Ai个到第An个数中可以取j段满足条件时能达到的第一段sum的最大值

我们从后往前dp，一开始dp[N][1]=A[N],其他初始为0，当j=1时，显然有，dp[i][1]=max(A[i]，dp[i+1][1])。

对于其他情况，设sum=A[i]+A[i+1]+...+A[i+j-1]，如果dp]]></description><category></category></item><item><title><![CDATA[AcWing 289. 环路运输]]></title><link>https://blog.youkuaiyun.com/Lznw_/article/details/121024117</link><guid>https://blog.youkuaiyun.com/Lznw_/article/details/121024117</guid><author>Lznw_</author><pubDate>Thu, 28 Oct 2021 21:57:12 +0800</pubDate><description><![CDATA[传送门



思路：

一个环路上的问题，考虑拆环为链然后复制一倍接在后面。那么对于Ai与Aj，不妨设j&lt;i，如果i-j&gt;N/2则两者距离在新的链上就是i-j，而如果i-j&lt;=N/2那么两者之间的距离就是j+N-i=N-(i-j)，而这个值&lt;=N/2，所以二者的距离在新的链上一定不超过N/2。设新的链上两个物品为Ax与Ay,设y&lt;x，可能的答案为Ax+Ay+x-y=Ax+x+Ay-y，所以我们可以枚举x，用单调队列维护一下Ay-y，其在队列内单调递减，就可以求出答案了。

代.]]></description><category></category></item><item><title><![CDATA[AcWing 288. 休息时间]]></title><link>https://blog.youkuaiyun.com/Lznw_/article/details/121021046</link><guid>https://blog.youkuaiyun.com/Lznw_/article/details/121021046</guid><author>Lznw_</author><pubDate>Thu, 28 Oct 2021 19:47:05 +0800</pubDate><description><![CDATA[传送门



思路：

考虑DP，设dp[i][j][1]为牛在前小时休息j个小时且第i个小时休息时，回复的最多体力；dp[i][j][0]为牛在前小时休息j个小时且第i个小时没有休息时，回复的最多体力。

可以把问题分为两部分，首先考虑当牛不能跨天休息时，在第一个小时休息必然无法恢复体力，有dp[1][1][1]=0，dp[i][0][0]=0,其他皆初始为-inf。于是有dp[i][j][0]=max(dp[i-1][j][0],dp[i-1][j][1]),dp[i][j][1]=max(dp[i-1]]></description><category></category></item><item><title><![CDATA[2020ICPC济南站 J.Tree Constructer]]></title><link>https://blog.youkuaiyun.com/Lznw_/article/details/121019620</link><guid>https://blog.youkuaiyun.com/Lznw_/article/details/121019620</guid><author>Lznw_</author><pubDate>Thu, 28 Oct 2021 18:00:25 +0800</pubDate><description><![CDATA[题目大意：给定一棵N个顶点的树，顶点为1~N，对于一个序列A1，A2，…，An，若Ai | Aj == 2^60-1，则会连一条边（i,j）。要求求出一个序列，可以唯一确定所给定的树。

思路：考虑到树是一个二分图，可以考虑将二分图左侧顶点对应的值的二进制位后两位设置为01,而右部分对应设置为10，这样可以使得二分图同侧不会出现连边。接下来不妨把左侧顶点的其余二进制位都设为1，之后对于左侧的每个顶点，各从前面若干个1中选择一个不同的设为0，之后对于树中每个从左侧连接到右侧顶点的边，只要把右侧顶点二进制位中对]]></description><category></category></item><item><title><![CDATA[AcWing 325. 计算机]]></title><link>https://blog.youkuaiyun.com/Lznw_/article/details/120981904</link><guid>https://blog.youkuaiyun.com/Lznw_/article/details/120981904</guid><author>Lznw_</author><pubDate>Tue, 26 Oct 2021 21:48:06 +0800</pubDate><description><![CDATA[传送门

题目大意：

一棵无根树，每条边有一个距离，求每个顶点到距离其最远的顶点的距离。

思路：

考虑树形DP+换根。

令D[x]x到以x为根的子树当中的最长距离,d[x]为次长距离,U[x]为x向上走的最长距离，F[x]为x的答案。

第一次dfs以1为根可以很容易求出D[x]与d[x]。

之后第二次dfs对每个顶点去求最终的答案。

令p为父节点，v为当前节点，l为p到v的距离，于是有

F[x]=max(D[x],U[x])

对于D[p] == D[v] + l的情况，说明p向下的最长距离]]></description><category></category></item><item><title><![CDATA[AcWing 324. 贿赂FIPA]]></title><link>https://blog.youkuaiyun.com/Lznw_/article/details/120937361</link><guid>https://blog.youkuaiyun.com/Lznw_/article/details/120937361</guid><author>Lznw_</author><pubDate>Sun, 24 Oct 2021 17:54:23 +0800</pubDate><description><![CDATA[思路：

先由附庸关系建树，额外建一个花费为0的节点为树根。考虑树形DP，设dp[i][j]为在以i为根的子树中，得到不少于j张票的最小花费。于是可以从每个子节点向根节点转移，参考分组背包的转移方式，设当前节点为v，子节点为u，size[v]为以v为根的子树大小，开始处理v时dp[v][0]=0,其余dp[v][i]=inf,于是可以得到dp[v][j]=min{dp[v][j-k]+dp[u][k]}(j&lt;=size[v],k&lt;=size[u],j&gt;=k)。

此外还要注意，因为...]]></description><category></category></item><item><title><![CDATA[POJ2112题解]]></title><link>https://blog.youkuaiyun.com/Lznw_/article/details/118181310</link><guid>https://blog.youkuaiyun.com/Lznw_/article/details/118181310</guid><author>Lznw_</author><pubDate>Thu, 24 Jun 2021 11:16:28 +0800</pubDate><description><![CDATA[题目大意：K个挤奶机，C头牛，每个挤奶机最多可以接待M头牛，各个K，C之间可能有道路连接，要让每个牛都找到挤奶机，求最小的走的路程最远的牛所需走的距离。

思路：首先看到要最小化最大值，所以需要二分。可以先用Floyd-Warshall算法预处理出个点之间最短距离。之后来进行二分的判断，对于每个牛都要匹配到一个挤奶机，而每个挤奶机可以匹配多头牛，所以可以用二分图匹配，建立源汇点S,T，S与每个牛连一条cap为1的边，而每台挤奶机要与T连一条cap为2的边。对于每个要判断的距离，如果牛-挤奶机之间的距离小..]]></description><category></category></item><item><title><![CDATA[POJ3368题解]]></title><link>https://blog.youkuaiyun.com/Lznw_/article/details/118093698</link><guid>https://blog.youkuaiyun.com/Lznw_/article/details/118093698</guid><author>Lznw_</author><pubDate>Mon, 21 Jun 2021 22:53:03 +0800</pubDate><description><![CDATA[.
]]></description><category></category></item><item><title><![CDATA[Codeforces Round #726 (Div.2) A-E1 题解]]></title><link>https://blog.youkuaiyun.com/Lznw_/article/details/118056130</link><guid>https://blog.youkuaiyun.com/Lznw_/article/details/118056130</guid><author>Lznw_</author><pubDate>Sat, 19 Jun 2021 20:38:33 +0800</pubDate><description><![CDATA[。
]]></description><category></category></item><item><title><![CDATA[POJ2663，3420题解]]></title><link>https://blog.youkuaiyun.com/Lznw_/article/details/117887029</link><guid>https://blog.youkuaiyun.com/Lznw_/article/details/117887029</guid><author>Lznw_</author><pubDate>Wed, 16 Jun 2021 22:52:53 +0800</pubDate><description><![CDATA[两道非常像的题，放到一起来写

题目大意：用若干2x1的砖去铺一个3xN的空间（POJ3420为4xN），问总共有多少种不同的铺法。

思路：找规律。对于3xN的空间，显然N
]]></description><category></category></item></channel></rss>