<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[x_1023的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/x_1023</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; x_1023]]></copyright><item><title><![CDATA[洛谷 P3941 入阵曲 - 前缀和]]></title><link>https://blog.youkuaiyun.com/x_1023/article/details/78432258</link><guid>https://blog.youkuaiyun.com/x_1023/article/details/78432258</guid><author>x_1023</author><pubDate>Fri, 03 Nov 2017 10:18:34 +0800</pubDate><description><![CDATA[为啥这么一道弱题难了我好久。。。 
考虑一维的情况，维护前缀和，其中余数用一个桶来维护，前缀和相等的其差的余数一定相等，于是在桶里搜就好。 
二维把每一个竖列的线段区间压成一维即可。一维转二维啊#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<set>
#include<algorithm]]></description><category></category></item><item><title><![CDATA[BZOJ 1880 [Sdoi2009]Elaxia的路线 - SPFA+拓扑排序]]></title><link>https://blog.youkuaiyun.com/x_1023/article/details/78392638</link><guid>https://blog.youkuaiyun.com/x_1023/article/details/78392638</guid><author>x_1023</author><pubDate>Mon, 30 Oct 2017 14:25:01 +0800</pubDate><description><![CDATA[大家都说这是一道大水题。。。想打dyx应该了解到拓扑排序的功能，类比于食物链那道题，拓扑排序可以dp求出最长链。而在这道题只需求出可以重复的部分搞一个拓扑排序即可。而怎样求重复的部分呢？有一个思想很好：将一条线路拆分成起点到此的距离和终点到此的距离，跑两遍单源最短路，然后类似地枚举求出一些可以重复的路径，Topo一下就好了（尝试新代码风格2333，bz会卡空间，实测将边的数量开小一半就可以过了）#i]]></description><category></category></item><item><title><![CDATA[BZOJ 4027 [HEOI2015]兔子与樱花 - 贪心]]></title><link>https://blog.youkuaiyun.com/x_1023/article/details/78390979</link><guid>https://blog.youkuaiyun.com/x_1023/article/details/78390979</guid><author>x_1023</author><pubDate>Mon, 30 Oct 2017 10:55:25 +0800</pubDate><description><![CDATA[可能做了假题。。。一开始想二维树形dp，结果发现nm乘起来肯定会挂，然后继续膜hzwer学长的代码，发现是道瓜题。。。考虑这样一个结论，下面删点肯定不上面删点优： 
如果一个节点x其子节点可以被删去，那么至少可以删去一个点，贡献至少为1，而对于x的父节点毫无影响；而若删去x节点，从对答案的贡献上来讲也是1，不会更优，而会让父节点的剩余空间更小，一定不如删去x子节点优。 
由是从下向上贪心，每次将子节]]></description><category></category></item><item><title><![CDATA[BZOJ 1875 [SDOI2009]HH去散步 - 矩阵快速幂]]></title><link>https://blog.youkuaiyun.com/x_1023/article/details/78390905</link><guid>https://blog.youkuaiyun.com/x_1023/article/details/78390905</guid><author>x_1023</author><pubDate>Mon, 30 Oct 2017 10:48:25 +0800</pubDate><description><![CDATA[大概是矩阵快速幂的一道裸题。。。然后做着做着发现不对。。。好像条件还有限制，两次边不能重。然后苦思冥想好一阵决定抄题解。发现是把点的转移改为了边的转移，思路还是一样的。其实这道题莫名其妙给出m的范围就已经很可疑了，下次应该注意…#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<vector]]></description><category></category></item><item><title><![CDATA[BZOJ 1999 [Noip2007]树网的核（2282 [Sdoi2011]消防） - 树的直径+单调队列]]></title><link>https://blog.youkuaiyun.com/x_1023/article/details/78389333</link><guid>https://blog.youkuaiyun.com/x_1023/article/details/78389333</guid><author>x_1023</author><pubDate>Sun, 29 Oct 2017 23:59:28 +0800</pubDate><description><![CDATA[首先贴出一篇我认为讲的最好的： 
http://blog.youkuaiyun.com/vmurder/article/details/44627469首先证明结论： 
证明一：树的核必在直径上 
1.选定的核与直径无交集 
显然选的核在直径的一个分支上，如图，肯定不如核与直径相接的那段直径优 
 
2.选定的核与直径有一部分交集 
 
如图若选红色部分为核，那么不在直径的一部分相当于优化了BC段的长度，然而如]]></description><category></category></item><item><title><![CDATA[BZOJ 1079 [SCOI2008]着色方案 - 花式DP]]></title><link>https://blog.youkuaiyun.com/x_1023/article/details/78380990</link><guid>https://blog.youkuaiyun.com/x_1023/article/details/78380990</guid><author>x_1023</author><pubDate>Sun, 29 Oct 2017 00:28:17 +0800</pubDate><description><![CDATA[从未见过DP还可以这样玩的，一开始以为是数学，C+容斥，后来觉得不对，哪有数学题长成这个样的，然后各种dp，15维的dp实在是没敢写，于是膜了hzwer的代码。。。真长见识。考虑到c[i]的范围不超过5，其中必有玄机，于是可以用5维表示还可以涂i块木块的颜色种数。因为对于两种均可以涂i块的颜色，除了考虑与上一状态不能重复以外，是完全等价的。排除上一状态影响，则将当前状态的转移的贡献减去一份即可。考虑]]></description><category></category></item><item><title><![CDATA[POJ 3613 Cow Relays - 倍增Floyd（矩阵加速幂）]]></title><link>https://blog.youkuaiyun.com/x_1023/article/details/78380405</link><guid>https://blog.youkuaiyun.com/x_1023/article/details/78380405</guid><author>x_1023</author><pubDate>Sat, 28 Oct 2017 22:58:05 +0800</pubDate><description><![CDATA[大概是倍增Floyd的模板题。Floyd的原理是一个一个点向图中加，k表示已经加了k个点，并且加点可以累加。（可以参考上篇博文）而这道题恰是强制加入T个点，那么我们可以将T利用一种类似于加速幂的思想向其中加点。而需要注意的是，两个数组的合并需要第三个辅助数组维护，辅助数组初值应设为无限大，用已知的两个数组去更新辅助数组，最后将辅助数组中的值赋给答案数组。 
还需要注意，答案数组一开始除了自己到自己，]]></description><category></category></item><item><title><![CDATA[BZOJ 1491 [NOI2007]社交网络 - Floyd(相关的DP思想)]]></title><link>https://blog.youkuaiyun.com/x_1023/article/details/78375595</link><guid>https://blog.youkuaiyun.com/x_1023/article/details/78375595</guid><author>x_1023</author><pubDate>Sat, 28 Oct 2017 14:30:22 +0800</pubDate><description><![CDATA[首先关于Floyd的理解，有一篇博客讲的很详细： 
http://www.cnblogs.com/chenying99/p/3932877.htmlFloyd从本质上来讲是一种DP+滚动数组优化，省去了一维k，即对于已用几条边的讨论，而在这道题中，所求的是两点之间经过k点的最短路径条数，那么在dp时加上用乘法原理实现的路径条数统计即可。最后经过k点的条数统计一下即可。这道题还要注意一个问题，最后统计]]></description><category></category></item><item><title><![CDATA[BZOJ 1307 [ZJOI2008]生日聚会Party - DP]]></title><link>https://blog.youkuaiyun.com/x_1023/article/details/78366350</link><guid>https://blog.youkuaiyun.com/x_1023/article/details/78366350</guid><author>x_1023</author><pubDate>Fri, 27 Oct 2017 16:28:31 +0800</pubDate><description><![CDATA[为啥机房的巨佬都说这是一个水题。。。绝望ing 
/一个尴尬而不失友好的微笑想到解法了，关键不知如何递推，其实很好递推啊，是我太愚蠢了。。。 
开始想法：dp[i][j][k][l]其中i为男生数，j为女生数，k为所有后缀中女生-男生的最大值，l为所有后缀中男生-女生的最大值。后来发现一件事情就是，设男生人数和女生人数的话循环变量不好写，dp方程中同时出现i-1和j-1，得写记忆化搜索（原谅我的菜）]]></description><category></category></item><item><title><![CDATA[BZOJ 2763 [JLOI2011]飞行路线 - Dijkstra+分层图/DP]]></title><link>https://blog.youkuaiyun.com/x_1023/article/details/78361283</link><guid>https://blog.youkuaiyun.com/x_1023/article/details/78361283</guid><author>x_1023</author><pubDate>Fri, 27 Oct 2017 09:43:51 +0800</pubDate><description><![CDATA[一道分层图的水题，觉得分层图这个玩意非常妙，于是就水了一波。。。记记好是无向图。。。向图。。。图。。。#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<queue>
#include<algorithm>using namespace std;const int maxn=1000005;]]></description><category></category></item><item><title><![CDATA[BZOJ 1912 [Apio2010]patrol 巡逻 - 树形DP(树的直径)]]></title><link>https://blog.youkuaiyun.com/x_1023/article/details/78360365</link><guid>https://blog.youkuaiyun.com/x_1023/article/details/78360365</guid><author>x_1023</author><pubDate>Fri, 27 Oct 2017 00:58:28 +0800</pubDate><description><![CDATA[一眼看出了是求树的直径，然而没学过可怎么破。。。然后百度自学了一波 
http://www.cnblogs.com/wuyiqi/archive/2012/04/08/2437424.html大概方法就是任找一个点，找离他最远的点，此点必为直径的端点，然后以此为基准再找一个离他最远的点，连成的链即树的直径。（证明见上地址）k=0，观察到每条边必走两遍，无关于出发点k=1即一个裸的树的直径，原因是图中]]></description><category></category></item><item><title><![CDATA[BZOJ 1922 [Sdoi2010]大陆争霸 - Dijkstra]]></title><link>https://blog.youkuaiyun.com/x_1023/article/details/78360325</link><guid>https://blog.youkuaiyun.com/x_1023/article/details/78360325</guid><author>x_1023</author><pubDate>Fri, 27 Oct 2017 00:39:58 +0800</pubDate><description><![CDATA[一遇到图论就一脸懵逼，二脸惶恐，三脸放弃。。。Dijkstra都不会写了，还是退役好了大概就是就是类似于拓扑排序那样，对于有限制的点，其父节点遍历完成后，该节点入度–，等到入度为0即可扔进队列。需要维护两个东西，一个是实际路程，另一个是其父节点的限制，二者取个max即可。图省事用pair一定要设为小顶堆啊啊啊，调了一个小时。。。 
为什么会这么菜。。。#include<iostream>
#incl]]></description><category></category></item><item><title><![CDATA[BZOJ 1177 [Apio2009]Oil - 花式枚举+乱搞]]></title><link>https://blog.youkuaiyun.com/x_1023/article/details/78339211</link><guid>https://blog.youkuaiyun.com/x_1023/article/details/78339211</guid><author>x_1023</author><pubDate>Wed, 25 Oct 2017 11:22:01 +0800</pubDate><description><![CDATA[原来以为是什么神题。。。结果。。。我的三观。。。 
大概是一道码农题，所有三种情况的分类如下 
（图源Galaxies：http://www.cnblogs.com/galaxies/p/bzoj1177.html） 
先前缀和乱搞，然后计算一个点的四个方位的k*k的正方形中的总贡献，左上右上左下右下分别为abcd，然后大力枚举讨论每种情况就好了。。。（真是一道练习写数组下标的码农好题）#inclu]]></description><category></category></item><item><title><![CDATA[BZOJ 2004 [Hnoi2010]Bus 公交线路 - 状压DP+矩阵快速幂]]></title><link>https://blog.youkuaiyun.com/x_1023/article/details/78336698</link><guid>https://blog.youkuaiyun.com/x_1023/article/details/78336698</guid><author>x_1023</author><pubDate>Wed, 25 Oct 2017 08:05:37 +0800</pubDate><description><![CDATA[看数据范围，算法一目了然，然而。。。并不会啊由于p位的限制，所有车一定在p位的限制内转移，于是考虑这样的状压： 
设一个p位的二进制码，以第一辆车作为视角向后p位，要求p位之内有k辆车。而且由于是以第一辆车作为视角，于是第一位一定是1。设立dp数组dp i j，表示第一辆车在坐标i处，其后的状态为j，dp转移方程为：dp[i][S]=∑dp[i−1][S′]⋅r[S′][S]dp[i][S]=\su]]></description><category></category></item><item><title><![CDATA[BZOJ 1025 [SCOI2009]游戏 - 筛法+DP]]></title><link>https://blog.youkuaiyun.com/x_1023/article/details/78334458</link><guid>https://blog.youkuaiyun.com/x_1023/article/details/78334458</guid><author>x_1023</author><pubDate>Tue, 24 Oct 2017 20:50:31 +0800</pubDate><description><![CDATA[一眼就能看出来这道题的规律，找循环节的lcm，然后。。。然后就不会了。。。 
这道题已经转化为了：求一堆和比n小的数，且构成的不同lcm的个数lcm(a1,...,an)=px11⋅px22⋅...⋅pxnn其中∑i=1nai<=nlcm(a_1,...,a_n)=p_1^{x_1}·p_2^{x_2}·...·p_n^{x_n}其中\sum_{i=1}^{n}a_i<=n 
题意中求的是lcm的可]]></description><category></category></item><item><title><![CDATA[BZOJ 1084  [SCOI2005]最大子矩阵 - DP]]></title><link>https://blog.youkuaiyun.com/x_1023/article/details/78326363</link><guid>https://blog.youkuaiyun.com/x_1023/article/details/78326363</guid><author>x_1023</author><pubDate>Tue, 24 Oct 2017 10:00:34 +0800</pubDate><description><![CDATA[一开始被这道题吓到了，k个是什么操作。。。 
然后看到数据范围。。。发现就是一道暴力讨论题（当然我是这么想的） 
m=1很简单 
对于m=2，每行设了5个状态： 
0：此行不选 
1：只选左边格子 
2：只选右边格子 
3：左右均选，且左右均与其上下构成矩形 
4：左右均选，且左右横着构成矩形恶心死我了，是怎样的一种勇气支持我写完的它，还在WA了无数次之后依然坚持调试。。。然后暴力讨论。。。注意赋初]]></description><category></category></item><item><title><![CDATA[BZOJ 2186 [Sdoi2008]沙拉公主的困惑 - 筛法+线性求逆元]]></title><link>https://blog.youkuaiyun.com/x_1023/article/details/78323901</link><guid>https://blog.youkuaiyun.com/x_1023/article/details/78323901</guid><author>x_1023</author><pubDate>Mon, 23 Oct 2017 21:53:22 +0800</pubDate><description><![CDATA[首先有一个很好玩的线性递推求逆元的方法： 
http://blog.youkuaiyun.com/whyorwhnt/article/details/19169035对于这道题，若设gcd(a,b)=1，则必然有gcd(a+kb,b)=1，因在mod b系中，加b对于余数无影响。 
下面需要对此题证明一个结论，即：在1~n!中有phi(m!)n!m!phi(m!)\frac {n!}{m!}个数与m!互质。]]></description><category></category></item><item><title><![CDATA[BZOJ 1296 [SCOI2009]粉刷匠 - DP]]></title><link>https://blog.youkuaiyun.com/x_1023/article/details/78322422</link><guid>https://blog.youkuaiyun.com/x_1023/article/details/78322422</guid><author>x_1023</author><pubDate>Mon, 23 Oct 2017 19:47:28 +0800</pubDate><description><![CDATA[一开始看错数据范围，搞了一个O(Tn2m2)O(Tn^2m^2)的，然后就GG了。 
这种做法的思路是，枚举当前状态，可以继续涂此层剩余，也可以涂他层，一分类讨论即可。后来发现这种做法肯定有大量重复，而且每行之间独立，不必将每行的状态混在一起，于是每行dp搞用cost最多的得分，然后行与行之间分组dp就好了。TLE：#include<iostream>
#include<cstdlib>
#incl]]></description><category></category></item><item><title><![CDATA[BZOJ 1042 [HAOI2008]硬币购物 - 容斥+DP]]></title><link>https://blog.youkuaiyun.com/x_1023/article/details/78322334</link><guid>https://blog.youkuaiyun.com/x_1023/article/details/78322334</guid><author>x_1023</author><pubDate>Mon, 23 Oct 2017 19:38:29 +0800</pubDate><description><![CDATA[首先假设每种硬币没有个数限制，每种硬币都dp搞一搞，算出来一种币值有多少种组成方式，然后考虑这样一个思路：答案是总数减去不合法情况，而不合法有四种硬币可以选择，于容斥搞一搞就好了。。。我连容斥都不会了。。。真是菜。。。#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<algorithm>u]]></description><category></category></item><item><title><![CDATA[树状数组的玄学功效]]></title><link>https://blog.youkuaiyun.com/x_1023/article/details/78314708</link><guid>https://blog.youkuaiyun.com/x_1023/article/details/78314708</guid><author>x_1023</author><pubDate>Mon, 23 Oct 2017 00:21:20 +0800</pubDate><description><![CDATA[坑1.单点修改区间最值详情请见 
->blog.youkuaiyun.com/u010598215/article/details/48206959裸题模板：HDU1745#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<algorithm>using namespace std;const int]]></description><category></category></item></channel></rss>