<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[dianer2977的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/dianer2977</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dianer2977]]></copyright><item><title><![CDATA[BZOJ4152 [AMPPZ2014]The Captain[最短路]]]></title><link>https://blog.youkuaiyun.com/dianer2977/article/details/102199915</link><guid>https://blog.youkuaiyun.com/dianer2977/article/details/102199915</guid><author>dianer2977</author><pubDate>Sun, 29 Sep 2019 20:13:00 +0800</pubDate><description><![CDATA[你们都说这题简单可是我想了好久，唉可能还是太菜，泪，拉了下来（悲）┭┮﹏┭┮
由于这题网上全部是一句话题解，我并不能理解个中原因，向hkk神仙请教被以“很显然的做法”驳回。。神仙做题全都是显然吗？
最后自己yy出了一种新做法应该叫新的科学严谨的理解方法，不知道是不是一种正确思路
首先尝试优化建边，对于一个点对，他们连一条$\min(\Delta x,\Delta y)$的边，有没有...]]></description><category></category></item><item><title><![CDATA[BZOJ2763 [JLOI2011]飞行路线[最短路]]]></title><link>https://blog.youkuaiyun.com/dianer2977/article/details/102199913</link><guid>https://blog.youkuaiyun.com/dianer2977/article/details/102199913</guid><author>dianer2977</author><pubDate>Sun, 29 Sep 2019 11:56:00 +0800</pubDate><description><![CDATA[显然分层图裸题，做这题纯粹是为了填坑，不解释。


 1 #include&lt;iostream&gt;
 2 #include&lt;cstdio&gt;
 3 #include&lt;cstring&gt;
 4 #include&lt;algorithm&gt;
 5 #include&lt;cmath&gt;
 6 #include&lt;queue&gt;
...]]></description><category></category></item><item><title><![CDATA[BZOJ2118 墨墨的等式[同余类最短路]]]></title><link>https://blog.youkuaiyun.com/dianer2977/article/details/102199912</link><guid>https://blog.youkuaiyun.com/dianer2977/article/details/102199912</guid><author>dianer2977</author><pubDate>Sun, 29 Sep 2019 09:56:00 +0800</pubDate><description><![CDATA[声明：关于这题的$O(mn)$尚且未深入理解，虽然之前有跟这位神仙聊过做法但并没太懂。。可能要等我问一波yql。。。

$O(mnlogm)$同余最短路做法：
首先不妨抽出最小的$a_i=m$，那么剩余的$a$如果可以表示出$x$，那么$x+km$的所有数都可以表出。所以对于$m$的同一个同余类$i\in[0,m)$，我们希望求出$f_i=\min\{h|h\mod=i\}$其中$...]]></description><category></category></item><item><title><![CDATA[luogu1261 服务器储存信息问题[最短路]]]></title><link>https://blog.youkuaiyun.com/dianer2977/article/details/102199911</link><guid>https://blog.youkuaiyun.com/dianer2977/article/details/102199911</guid><author>dianer2977</author><pubDate>Sat, 28 Sep 2019 20:26:00 +0800</pubDate><description><![CDATA[首先$O(n^2\log n)$暴力很好想，直接每个点出发跑一遍最短路，排$dis$统计一下即可。考虑怎么优化。发现$rank$很小，考虑从$rank$入手。换一种统计方法，看每个点$x$如果作为别的点的兴趣点，可能产生多少贡献。那么别的点$i$到他的最短距离设为$dis_i$，$i$到所有$rank_x+1$的点里面最短的距离是$f_{i,rank_x+1}$，那么肯定只有$dis_i...]]></description><category></category></item><item><title><![CDATA[BZOJ1491 [NOI2007]社交网络[最短路计数]]]></title><link>https://blog.youkuaiyun.com/dianer2977/article/details/102199910</link><guid>https://blog.youkuaiyun.com/dianer2977/article/details/102199910</guid><author>dianer2977</author><pubDate>Sat, 28 Sep 2019 20:26:00 +0800</pubDate><description><![CDATA[$n$非常的小，结合题目计算式可以想到$O(n^3)$暴枚$s,t,v$，看$v$在不在$s\to t$最短路上（$dis_{s,v}+dis_{v,t}=dis_{s,v}$是$v$在两点最短路上的充要条件——很好证），在则统计$\frac{cnt_{s,v}\times cnt_{v,t}}{cnt_{s,t}}$，这个$cnt$就是最短路条数。可以用dij，但是从代码简洁性的角度和...]]></description><category></category></item><item><title><![CDATA[BZOJ5056 OI游戏[最短路树]]]></title><link>https://blog.youkuaiyun.com/dianer2977/article/details/102199909</link><guid>https://blog.youkuaiyun.com/dianer2977/article/details/102199909</guid><author>dianer2977</author><pubDate>Sat, 28 Sep 2019 20:26:00 +0800</pubDate><description><![CDATA[有生以来做过的bzoj比A+B还简单的最水的题。（确信）
不解释。
UPD:据说这题正解应当是矩阵树定理？有生之年会补的。



 1 #include&lt;iostream&gt;
 2 #include&lt;cstdio&gt;
 3 #include&lt;cstring&gt;
 4 #include&lt;algorithm&gt;
 5 #includ...]]></description><category></category></item><item><title><![CDATA[BZOJ1922 [Sdoi2010]大陆争霸[最短路]]]></title><link>https://blog.youkuaiyun.com/dianer2977/article/details/102199908</link><guid>https://blog.youkuaiyun.com/dianer2977/article/details/102199908</guid><author>dianer2977</author><pubDate>Sat, 28 Sep 2019 20:26:00 +0800</pubDate><description><![CDATA[orz极速暴切此题的hkk。

如果没有保护限制，直接跑最短路，现在到达某些点要先经过保护点，那么在跑dijkstra时候每一轮可以先减少这些点保护数量，如果有恰好点没有保护了，说明这个点就可以走了，且这个点$dis$应当是走完所有保护点时间和走到他本身时间的$max$，把他压入堆。这样之后，如果又有其他点可以松弛他，就继续更新$dis$并压入堆。这样可以保证这种点$dis$取出来最...]]></description><category></category></item><item><title><![CDATA[poj1734 Sightseeing trip[最小环]]]></title><link>https://blog.youkuaiyun.com/dianer2977/article/details/102199906</link><guid>https://blog.youkuaiyun.com/dianer2977/article/details/102199906</guid><author>dianer2977</author><pubDate>Sat, 28 Sep 2019 20:26:00 +0800</pubDate><description><![CDATA[一个最小环裸题。最小环的两种求法dijkstra和Floyd直接参见这里我就是从这里学的，不想写了。
注意这里最重要的一个点是利用了Floyd的dp过程中路径上点不超过$k$这一性质，来枚举环上最大编号并枚举连边，这样另外枚举的两个点的最短路肯定不会经过和$k$连的边。
坑点：

平常inf都开0x3f3f3f3f，这题没注意，在求环那里如果三个inf一加，就爆掉了。。所以要改小...]]></description><category></category></item><item><title><![CDATA[loj2314 「NOIP2017」小凯的疑惑[同余最短路or数论]]]></title><link>https://blog.youkuaiyun.com/dianer2977/article/details/102199904</link><guid>https://blog.youkuaiyun.com/dianer2977/article/details/102199904</guid><author>dianer2977</author><pubDate>Fri, 27 Sep 2019 20:55:00 +0800</pubDate><description><![CDATA[这题以前就被灌输了“打表找规律”的思想，所以一直没有好好想这道题，过了一年还不太会qwq。虽然好像确实很简单，但是还是带着感觉会被嘲讽的心态写这个题解。。。而且还有一个log做法不会。。。
法1：（一开始没看懂，后由hkk神仙教导ORZ）
因为$ax+by=k$如果无视$\{x,y\}$非负整数解的条件的话，显然由于$gcd(a,b)=1$，所以所有$k$都可以表出。那么依题意如果有...]]></description><category></category></item><item><title><![CDATA[loj2613 「NOIP2013」华容道[最短路]]]></title><link>https://blog.youkuaiyun.com/dianer2977/article/details/102199907</link><guid>https://blog.youkuaiyun.com/dianer2977/article/details/102199907</guid><author>dianer2977</author><pubDate>Thu, 26 Sep 2019 22:12:00 +0800</pubDate><description><![CDATA[感觉和以前做过的一个推箱子很像，都是可以用bfs解决的，而且都是手玩出结论。
因为起始棋子肯定是要和空格交换的，所以第一件事是先把空格移到棋子旁边。然后讨论怎么设计搜索状态。由于和推箱子实在太像了，所以直接借鉴，发现空格总是要贴着棋子走的要不然就是换个贴的方向继续走（这里的走就是指交换）。于是绑定两者，设计状态$f_{i,j,dir}$表示在棋子在某个格子，空格在上下左右四方位时候的最...]]></description><category></category></item><item><title><![CDATA[luogu3720 [AHOI2017初中组]guide[最短路]]]></title><link>https://blog.youkuaiyun.com/dianer2977/article/details/102199905</link><guid>https://blog.youkuaiyun.com/dianer2977/article/details/102199905</guid><author>dianer2977</author><pubDate>Thu, 26 Sep 2019 22:12:00 +0800</pubDate><description><![CDATA[初中组。。唉
题意有点误解，当前在x点走一步，gps产生代价条件是沿非x到n的最短路走。
直接倒着跑两遍$i\sim n$的两种最短路，然后枚举每条边走的时候是否可以在两种最短路上，不是就产生1个代价，然后以这个代价重新建图正着跑一遍最短路即可。


 1 #include&lt;iostream&gt;
 2 #include&lt;cstdio&gt;
 3 #incl...]]></description><category></category></item><item><title><![CDATA[luogu4366 [Code+#4]最短路[优化建边最短路]]]></title><link>https://blog.youkuaiyun.com/dianer2977/article/details/102199902</link><guid>https://blog.youkuaiyun.com/dianer2977/article/details/102199902</guid><author>dianer2977</author><pubDate>Thu, 26 Sep 2019 22:12:00 +0800</pubDate><description><![CDATA[显然这里的$n^2$级别的边数不能全建出来，于是盯住xor这个关键点去 瞎猜 探究有没有什么特殊性质可以使得一些边没有必要建出来。
发现一个点经过一次xor $x$，花费$x$这么多代价（先不看$C$），到达另一个点$u\text{xor}x$。
结合异或性质，发现其实这个过程完全可以通过把$x$拆成一位一位去分别xor上$u$，也就是说，任何一个点到达另一个点只需要不断走$2^i$...]]></description><category></category></item><item><title><![CDATA[BZOJ2238 Mst[最小生成树+树剖+线段树]]]></title><link>https://blog.youkuaiyun.com/dianer2977/article/details/102199903</link><guid>https://blog.youkuaiyun.com/dianer2977/article/details/102199903</guid><author>dianer2977</author><pubDate>Thu, 26 Sep 2019 10:07:00 +0800</pubDate><description><![CDATA[跑一遍mst。对于非mst上的边，显然删掉不影响。
如果删边在树上，相当于这时剩下两个连通块。可以证明要重新构成mst只需要再加一条连接两个连通块的最小边，不会证，yy一下，因为原来连通块连的边权和已经最小化了，就不要动，如果换用两条以上的边，肯定不会更优。
所以问题就是断掉树边，找最小联通边。可以LCT。`````
这种一颗树断成两截找联通边的题有一个常用思路，要使得联通，必须得...]]></description><category></category></item><item><title><![CDATA[loj2425 「NOIP2015」运输计划[二分答案+树上差分]]]></title><link>https://blog.youkuaiyun.com/dianer2977/article/details/102199901</link><guid>https://blog.youkuaiyun.com/dianer2977/article/details/102199901</guid><author>dianer2977</author><pubDate>Thu, 26 Sep 2019 10:07:00 +0800</pubDate><description><![CDATA[看到题意最小化最长路径，显然二分答案，枚举链长度不超过$\text{mid}$，然后尝试检验。`````
检验是否存在这样一个边置为0后，全部链长$\le\text{mid}$，其最终目标就是、要让所有$&gt;\text{mid}$的链长通过找出一个为0的公共边减掉而全部变为$\le\text{mid}$的。
那么，统计出这$tot$条超出$\text{mid}$的链的路径上覆盖的...]]></description><category></category></item><item><title><![CDATA[BZOJ3589 动态树[树剖/暴力/容斥]]]></title><link>https://blog.youkuaiyun.com/dianer2977/article/details/102199899</link><guid>https://blog.youkuaiyun.com/dianer2977/article/details/102199899</guid><author>dianer2977</author><pubDate>Thu, 26 Sep 2019 10:07:00 +0800</pubDate><description><![CDATA[操作0，显然直接线段树解决。
操作1，瓶颈在于重叠的链只算一次。在线段树上来看，如果一个区间被覆盖了，那么只算这个区间，子树里面也就不管了。
考虑对节点打标记来表示是否覆盖。但是，如果统一打完之后，并不方便计算打上标记的点的和。明确目标，现在希望能覆盖很多小区间的一个大区间被打上标记之后用他来更新答案。`````
可以对每一个点维护$acc_i$表示这个点子树内被覆盖的区间的和。那...]]></description><category></category></item><item><title><![CDATA[李超线段树 学习笔记]]></title><link>https://blog.youkuaiyun.com/dianer2977/article/details/102199897</link><guid>https://blog.youkuaiyun.com/dianer2977/article/details/102199897</guid><author>dianer2977</author><pubDate>Mon, 23 Sep 2019 20:57:00 +0800</pubDate><description><![CDATA[昨天做到了这个题：BZOJ4515 [SDOI2016]游戏。发现自己根本不会做，这线段树怎么维护啊。然后才知道有这么个李超线段树。。
标记永久化
李超线段树里面有一个标记永久化的思想，但是我没写过这种题。。大概看了一下。

树套树以及主席树里，区间操作打标记会显得十分的麻烦
可以将lazytag固定，不下传，不pushup的做法是标记永久化
具体可以参考下面那个网址
个人...]]></description><category></category></item><item><title><![CDATA[BZOJ4353 Play with tree[树剖]]]></title><link>https://blog.youkuaiyun.com/dianer2977/article/details/102199900</link><guid>https://blog.youkuaiyun.com/dianer2977/article/details/102199900</guid><author>dianer2977</author><pubDate>Mon, 23 Sep 2019 18:11:00 +0800</pubDate><description><![CDATA[复习几乎考不到的树剖。维护min以及min个数，打set和add标记即可，注意set优先级优于add。


  1 #include&lt;iostream&gt;
  2 #include&lt;cstdio&gt;
  3 #include&lt;cstring&gt;
  4 #include&lt;algorithm&gt;
  5 #include&lt;cmat...]]></description><category></category></item><item><title><![CDATA[BZOJ2144 跳跳棋[建模+LCA]]]></title><link>https://blog.youkuaiyun.com/dianer2977/article/details/102199895</link><guid>https://blog.youkuaiyun.com/dianer2977/article/details/102199895</guid><author>dianer2977</author><pubDate>Mon, 23 Sep 2019 11:00:00 +0800</pubDate><description><![CDATA[思维题，思路比较神仙。
个人思路过程：个人只想到了只要中间棋子开始向外跳了，以后就不应该向内跳了，这样很蠢。所以应该要么先向内跳一会，要么直接开始中间的向外跳。不知道怎么处理，就卡住了。
20pts：暴力BFS。
事实上，这题的解题关键就在于一次只允许跳过1颗棋子，这表明向内跳只能是距离中间棋子近的那个向内跳，跳法唯一。
再看向外跳是有两种的，中间的子越过左子，或者越过右子。发现...]]></description><category></category></item><item><title><![CDATA[20190922 CSP-S/NOI模拟]]></title><link>https://blog.youkuaiyun.com/dianer2977/article/details/102199898</link><guid>https://blog.youkuaiyun.com/dianer2977/article/details/102199898</guid><author>dianer2977</author><pubDate>Sun, 22 Sep 2019 10:56:00 +0800</pubDate><description><![CDATA[1 CSP-S模拟
显然CSP-J难度。。
这个是USACO 2019 JAN Gold的原题，可能因为过于水，所以我即使八点多才开始做也提前ak。。。来写一篇题解。。
A. Cow Poetry
显然押同一韵的行只需要最后一个词属于一个韵部，前面长度$K-s_i$随便排，DP一下长度$i$的有多少种，类似于背包转移，只是把物品放在内层，容量放在外层枚举，这样保证顺序不同时有不...]]></description><category></category></item><item><title><![CDATA[poj3417 Network/闇の連鎖[树上差分]]]></title><link>https://blog.youkuaiyun.com/dianer2977/article/details/102199893</link><guid>https://blog.youkuaiyun.com/dianer2977/article/details/102199893</guid><author>dianer2977</author><pubDate>Sat, 21 Sep 2019 17:40:00 +0800</pubDate><description><![CDATA[首先隔断一条树边，不计附加边这个树肯定是断成两块了，然后就看附加边有没有连着的两个点在不同的块内。
方法1：BIT乱搞（个人思路）
假设考虑到$x$节点隔断和他父亲的边，要看$x$子树内有没有点连着附加边到子树外的。如果没有，则随便割，有1个，有唯一割法，否则没有。这个可以用dfs序处理好序列后，直接将与一个点附加边牵连的另一个点在BIT里+1，类似晋升者计数那题一样的思路用BIT求...]]></description><category></category></item></channel></rss>