<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Merlininice的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Merlininice</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Merlininice]]></copyright><item><title><![CDATA[python]]></title><link>https://blog.youkuaiyun.com/Merlininice/article/details/38132673</link><guid>https://blog.youkuaiyun.com/Merlininice/article/details/38132673</guid><author>Merlininice</author><pubDate>Fri, 25 Jul 2014 23:48:14 +0800</pubDate><description><![CDATA[http://www.lfd.uci.edu/~gohlke/pythonlibs/#pytz]]></description><category></category></item><item><title><![CDATA[SRM 622]]></title><link>https://blog.youkuaiyun.com/Merlininice/article/details/27509971</link><guid>https://blog.youkuaiyun.com/Merlininice/article/details/27509971</guid><author>Merlininice</author><pubDate>Thu, 29 May 2014 11:43:08 +0800</pubDate><description><![CDATA[easy：
先floyd求出两两直接最短路，然后n^2枚举每条路，n^2判断他是不是某两点最短路可以路过的路径即可。


medium：
贪心。
从某点开始dfs。
如果孩子返回的分支长度大于maxdist，那把孩子单独分一块。
剩下孩子返回的分支长度排序，最大+次大>maxdist，最大分支单独分一块，这样一直算知道最大+次大


hard
数位dp。
Fibonacc]]></description><category></category></item><item><title><![CDATA[C#调用Matlab生成的dll方法的详细说明]]></title><link>https://blog.youkuaiyun.com/Merlininice/article/details/25674687</link><guid>https://blog.youkuaiyun.com/Merlininice/article/details/25674687</guid><author>Merlininice</author><pubDate>Tue, 13 May 2014 07:28:01 +0800</pubDate><description><![CDATA[需要的工具：VS2005及以上版本，MATLAB2008B及以上版本，另外非常重要的需要安装一个MATLAB Compiler Runtime，这个文件（MCRInstall.exe）在安装完MATLAB之后就会在安装文件夹下存在，需要搜索一下（因为不同版本的MATLAB可能存放位置不同），把它安装一下就OK了。

　　接下来在MATLAB中写一个m文件，当然是一个函数啦。然后在matlab命]]></description><category></category></item><item><title><![CDATA[SRM 620]]></title><link>https://blog.youkuaiyun.com/Merlininice/article/details/25520025</link><guid>https://blog.youkuaiyun.com/Merlininice/article/details/25520025</guid><author>Merlininice</author><pubDate>Sun, 11 May 2014 02:44:16 +0800</pubDate><description><![CDATA[easy： 两个数要向上还原一步的话，肯定是大减小。]]></description><category></category></item><item><title><![CDATA[SRM 619]]></title><link>https://blog.youkuaiyun.com/Merlininice/article/details/25091349</link><guid>https://blog.youkuaiyun.com/Merlininice/article/details/25091349</guid><author>Merlininice</author><pubDate>Tue, 06 May 2014 04:39:28 +0800</pubDate><description><![CDATA[easy： 
如果每堆石头不全为1，那么每次我们总能取一堆石头分给另外两堆，堆数-1，并且新的局面肯定有一堆的个数大于1。
于是，如果每堆石头数都为1 -> lose，否则的话判断堆数奇偶即可（堆数==1要特判）


medium：
树形dp，dp[i][j]，表示以i为根的子树分配完成，并且i节点会j技能的最小花费。
转移：枚举i点在自己的department所用的技能(k)，然后]]></description><category></category></item><item><title><![CDATA[SRM 614]]></title><link>https://blog.youkuaiyun.com/Merlininice/article/details/25013643</link><guid>https://blog.youkuaiyun.com/Merlininice/article/details/25013643</guid><author>Merlininice</author><pubDate>Mon, 05 May 2014 02:20:56 +0800</pubDate><description><![CDATA[这个矩阵很好构造出来，然后算期望要高斯消元，直接算肯定超时，有神奇的方法]]></description><category></category></item><item><title><![CDATA[SRM 605]]></title><link>https://blog.youkuaiyun.com/Merlininice/article/details/24947869</link><guid>https://blog.youkuaiyun.com/Merlininice/article/details/24947869</guid><author>Merlininice</author><pubDate>Sun, 04 May 2014 03:14:09 +0800</pubDate><description><![CDATA[我觉得这道题不错！
我们先不要管用几次]]></description><category></category></item><item><title><![CDATA[SRM 615]]></title><link>https://blog.youkuaiyun.com/Merlininice/article/details/24921199</link><guid>https://blog.youkuaiyun.com/Merlininice/article/details/24921199</guid><author>Merlininice</author><pubDate>Sat, 03 May 2014 15:41:51 +0800</pubDate><description><![CDATA[dp[5000][50][50]表示到第i个字符，红色的个数除以M的余数是j，红色比蓝色]]></description><category></category></item><item><title><![CDATA[SRM 618]]></title><link>https://blog.youkuaiyun.com/Merlininice/article/details/24744931</link><guid>https://blog.youkuaiyun.com/Merlininice/article/details/24744931</guid><author>Merlininice</author><pubDate>Tue, 29 Apr 2014 23:41:39 +0800</pubDate><description><![CDATA[假设我们从前先后一位一位的变成需要的（我也不知道）]]></description><category></category></item><item><title><![CDATA[SRM  616]]></title><link>https://blog.youkuaiyun.com/Merlininice/article/details/24743139</link><guid>https://blog.youkuaiyun.com/Merlininice/article/details/24743139</guid><author>Merlininice</author><pubDate>Tue, 29 Apr 2014 22:56:19 +0800</pubDate><description><![CDATA[首先枚举每个L的拐点是哪一行，n^3
然后对弈]]></description><category></category></item><item><title><![CDATA[SRM 617]]></title><link>https://blog.youkuaiyun.com/Merlininice/article/details/24384211</link><guid>https://blog.youkuaiyun.com/Merlininice/article/details/24384211</guid><author>Merlininice</author><pubDate>Thu, 24 Apr 2014 13:08:56 +0800</pubDate><description><![CDATA[easy: 注意consecutive这个词，给同一个人要连续的几段啊。。。。尼玛没有看到啊。。。。然后有了这个词，就可以直接暴力标记那些位置要切。]]></description><category></category></item><item><title><![CDATA[SRM 613]]></title><link>https://blog.youkuaiyun.com/Merlininice/article/details/21873449</link><guid>https://blog.youkuaiyun.com/Merlininice/article/details/21873449</guid><author>Merlininice</author><pubDate>Tue, 25 Mar 2014 23:54:53 +0800</pubDate><description><![CDATA[因为博客被奇怪的封掉了两天，于是。。。现在才写


easy：
排序，然后枚举分界位置，分界左边向右走，分界右边向左走


medium：
因为The difference high - low will be less than or equal to 100,000.
所以如果选了两个不同的，gcd肯定小于100000
枚举1-100000，算出gcd是]]></description><category></category></item><item><title><![CDATA[SRM 612]]></title><link>https://blog.youkuaiyun.com/Merlininice/article/details/21493467</link><guid>https://blog.youkuaiyun.com/Merlininice/article/details/21493467</guid><author>Merlininice</author><pubDate>Wed, 19 Mar 2014 01:32:23 +0800</pubDate><description><![CDATA[这道题是要算一个环形，把L都移动到一起的最小代价。


枚举蓝色的分割点，那么它左侧右侧的L都向他靠拢（即箭头所示）可以得到一个最优的分割点（红色）


那么蓝色分割点顺时针移动，红色也会顺时针移动（类似旋转卡壳对冲点）


于是我们在O(n)的时间即可算出每一个蓝色分割点的最优解。




#include 
#include 
#include 
#include ]]></description><category></category></item><item><title><![CDATA[SRM 585]]></title><link>https://blog.youkuaiyun.com/Merlininice/article/details/20304577</link><guid>https://blog.youkuaiyun.com/Merlininice/article/details/20304577</guid><author>Merlininice</author><pubDate>Sun, 02 Mar 2014 20:26:01 +0800</pubDate><description><![CDATA[官网的图感觉很好，我就盗过来了。。。。（无视掉最后一张图


首先求出来每个点它向前向后最远能连到哪里l[i],r[i]
然后枚举a这个点，那么他向前最多能到达C这个点，那么对于他向后到达的b这个点，有很多情况，比如上图是三种情况
对于每种情况，我们可以看得出所形成三角形个数是r[b]-b-(C-1-b),当然r[b]就是图中的f(b)
因为b是连续的
那么对于这个式子，我们可以对r]]></description><category></category></item><item><title><![CDATA[SRM 577]]></title><link>https://blog.youkuaiyun.com/Merlininice/article/details/19492639</link><guid>https://blog.youkuaiyun.com/Merlininice/article/details/19492639</guid><author>Merlininice</author><pubDate>Wed, 19 Feb 2014 16:25:45 +0800</pubDate><description><![CDATA[这题方法很多，我是用的最小割


S -> i -> T
然后S到i边为100，i到T边为100，割左边意思是这个格子的#属于竖着的，右边表示横着的
（为什么选100。。。额，最后还要减去，为了S到i和i到T两条边只被割一条）


如果选的竖着的（i到T的边没被割），那么如果这个格子上面一格不是#，那么要额外花费1的，选横着同理。


如果i在j上面，那么如果i选横的（割右边]]></description><category></category></item><item><title><![CDATA[SRM 578]]></title><link>https://blog.youkuaiyun.com/Merlininice/article/details/19475301</link><guid>https://blog.youkuaiyun.com/Merlininice/article/details/19475301</guid><author>Merlininice</author><pubDate>Wed, 19 Feb 2014 09:45:34 +0800</pubDate><description><![CDATA[先枚举割掉一个边，使得树分成两个树
然后枚举两个树的根，来比较这两个树的最大同构子树大小。
需要加个记忆化：dp[i][ifather][j][jfather]，即以ifather为父亲的i节点为根的子树和jfather为父亲j节点为根的子树的最大同构子树的大小


看上去是个4维的，但其实[i][ifather]这两维合法的只有O(n)，即边的个数。同理，这个数组合法的其实只有n^2级]]></description><category></category></item><item><title><![CDATA[SRM 586]]></title><link>https://blog.youkuaiyun.com/Merlininice/article/details/18996011</link><guid>https://blog.youkuaiyun.com/Merlininice/article/details/18996011</guid><author>Merlininice</author><pubDate>Sat, 08 Feb 2014 22:36:49 +0800</pubDate><description><![CDATA[dp[55][26][26]，三个下标分别表示dp到第i位，用了前k个字母，已经结束了j个字母（后面不会再用）。


为什么这样的状态？首先我们前面用什么字母这个无所谓，然后到了这个位置，哪些字母结束也无所谓。。。所以只要记录当前在用的是几个字母：k-j，已经用过，不能再用的是几个字母：j，就够了


然后枚举当前这个串用多少字母来操作：use、有多少字母在这个串结束：ed
可以算出]]></description><category></category></item><item><title><![CDATA[SRM 608]]></title><link>https://blog.youkuaiyun.com/Merlininice/article/details/18976821</link><guid>https://blog.youkuaiyun.com/Merlininice/article/details/18976821</guid><author>Merlininice</author><pubDate>Sat, 08 Feb 2014 02:16:29 +0800</pubDate><description><![CDATA[看到300,600,900。。。做完300直接奔900了，结果900赛后半小时才搞过。。。。300还resubmit。。。。


300： （1）从大到小枚举low，求和，当大于等于X的时候，更新答案 i （2）从小到大枚举high，求和，当小于等于C-X的时候更新答案 n-i


结果初始值设成10000，枚举的时候又没枚举好，导致选n个的时候更新不到答案。。然后resubmit一发]]></description><category></category></item><item><title><![CDATA[SRM 589]]></title><link>https://blog.youkuaiyun.com/Merlininice/article/details/18919921</link><guid>https://blog.youkuaiyun.com/Merlininice/article/details/18919921</guid><author>Merlininice</author><pubDate>Tue, 04 Feb 2014 05:27:42 +0800</pubDate><description><![CDATA[分M大于17的情况和M小于17两种


M大于17： 成段变化的一共只有N/M


M小于等于17：dp[i][1


#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#]]></description><category></category></item><item><title><![CDATA[SRM 574]]></title><link>https://blog.youkuaiyun.com/Merlininice/article/details/18913309</link><guid>https://blog.youkuaiyun.com/Merlininice/article/details/18913309</guid><author>Merlininice</author><pubDate>Mon, 03 Feb 2014 22:42:32 +0800</pubDate><description><![CDATA[先分联通块，左边或者右边，可以接起来如下图：
XX..
.X..
XX..
....
XX..
.X..
第5行可以接起来第3行，成为一个，这个可以用贪心搞定
.....
XXXXX
.....
XX...
.XXXX
但是上面这种第二行就不知道哪边是头哪边是尾，所以用dp两种决策
dp[i][j][k]，dp到第i行，左边可以有j个接上面的，右边有k个
几个trick：
....
]]></description><category></category></item></channel></rss>