<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[rootial的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/rootial</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; rootial]]></copyright><item><title><![CDATA[TopCoder 603 div1 & div2]]></title><link>https://blog.youkuaiyun.com/rootial/article/details/43939195</link><guid>https://blog.youkuaiyun.com/rootial/article/details/43939195</guid><author>rootial</author><pubDate>Wed, 25 Feb 2015 18:10:04 +0800</pubDate><description><![CDATA[div2

250pts MiddleCode

题意：s串长度为奇数时，将中间字符取掉并添加到t末尾；长度为偶数时，将中间两个较小的字符取掉并添加到末尾。

分析：直接做，学习了一下substr(s, pos, len)返回s中从pos开始的长度为len的字串。

代码：
class MiddleCode {
public:
    void Remove(string &s,]]></description><category></category></item><item><title><![CDATA[FFT初步学习小结]]></title><link>https://blog.youkuaiyun.com/rootial/article/details/38851219</link><guid>https://blog.youkuaiyun.com/rootial/article/details/38851219</guid><author>rootial</author><pubDate>Tue, 26 Aug 2014 17:44:12 +0800</pubDate><description><![CDATA[FFT其实没什么需要特别了解的，了解下原理，（特别推荐算法导论上面的讲解），模板理解就行了。重在运用吧。
处理过程中要特别注意精度。
 
先上个练习的地址吧：
http://vjudge.net/vjudge/contest/view.action?cid=53596#overview
Problem A A * B Problem Plus
A*B的大数乘法，似乎大数模拟乘法不行的，]]></description><category></category></item><item><title><![CDATA[MemSQL Start[c]UP 2.0 - Round 2]]></title><link>https://blog.youkuaiyun.com/rootial/article/details/38851217</link><guid>https://blog.youkuaiyun.com/rootial/article/details/38851217</guid><author>rootial</author><pubDate>Tue, 26 Aug 2014 17:44:09 +0800</pubDate><description><![CDATA[反正晚上睡不着，熬到1点开始做比赛，6个题目只做了2个题目，而且手速还比较慢，待提升空间还很大呢。
A题：给定两个0，1串(len
分析：q的长度很大，即使用大数似乎也不怎么合理，其实我写了半天大数，用最大长度数据测试发现根本出不了结果，也许我写的太挫了，也学时间就耗在上面了。
最终只能另想方法，而且题目中也说明了q^2 = q+1,所以很容易想到利用这个来做这个题， 观察到对于一个串中连续]]></description><category></category></item><item><title><![CDATA[NEERC 2010, Eastern subregional contest]]></title><link>https://blog.youkuaiyun.com/rootial/article/details/38851213</link><guid>https://blog.youkuaiyun.com/rootial/article/details/38851213</guid><author>rootial</author><pubDate>Tue, 26 Aug 2014 17:44:07 +0800</pubDate><description><![CDATA[只能把补了的题目放这儿了，先留个坑，怕忘记。
Problem G URAL 1806 Mobile Telegraphs
题意是:给定n个电话号码，每个号码是一个长度为10的仅含'0'~'9'的字符串，每两个电话号码a，b之间能通信，需要满足一下条件之一：
1.b能通过改变a中某一个数字的值获得；
2.b能通过交换a中两个数字获得。
n个电话号码不相同，且相互通信的费用由之间的最长公共前]]></description><category></category></item><item><title><![CDATA[bitset学习小记]]></title><link>https://blog.youkuaiyun.com/rootial/article/details/38851211</link><guid>https://blog.youkuaiyun.com/rootial/article/details/38851211</guid><author>rootial</author><pubDate>Tue, 26 Aug 2014 17:44:05 +0800</pubDate><description><![CDATA[Cplusplus官网的资料：
http://www.cplusplus.com/reference/bitset/bitset/
http://www.cplusplus.com/reference/bitset/bitset/bitset/
 
bitset作为STL中一个位集，主要在涉及二进制位存储，操作时比较方便。
定义及基本操作：
bitset b，定义一个包含n个二进制位的]]></description><category></category></item><item><title><![CDATA[HDOJ多校联合第五场]]></title><link>https://blog.youkuaiyun.com/rootial/article/details/38851209</link><guid>https://blog.youkuaiyun.com/rootial/article/details/38851209</guid><author>rootial</author><pubDate>Tue, 26 Aug 2014 17:44:03 +0800</pubDate><description><![CDATA[1001 题意：求逆序对，然后交换k次相邻的两个数，使得剩下的逆序对最少。
分析：题目用到的结论是：数组中存在一对逆序对，那么可以通过交换相邻两个数使得逆序对减少1，交换k次，可以最多减少k个。
嘉定ai>aj,i 
考虑ak,k = j-1;
#11:ak > aj,那么ak,aj构成逆序对，交换后逆序对减少1；
#12:ak
考虑ak,k = i+1;
#21:ak
#22:a]]></description><category></category></item><item><title><![CDATA[HDOJ多校联合第四场]]></title><link>https://blog.youkuaiyun.com/rootial/article/details/38851207</link><guid>https://blog.youkuaiyun.com/rootial/article/details/38851207</guid><author>rootial</author><pubDate>Tue, 26 Aug 2014 17:44:01 +0800</pubDate><description><![CDATA[B题：
 
C题：仅由'A','G','C','T',4个字母组成，给定一个字符串S，|S|
分析：dp+状态压缩
反正我不会这题，也是看了羊神的代码之后才明白这题的思路
下面说说我的理解吧：
 
由于|S|长度最大为15，所以用一个二进制编码表示是哪些位置上的字母构成LCS，并求相应的数目。
dp[0][st],dp[1][st]记录的是相应字母构成LCS时，T可能的数目，然后一]]></description><category></category></item><item><title><![CDATA[HDOJ多校联合第六场]]></title><link>https://blog.youkuaiyun.com/rootial/article/details/38851205</link><guid>https://blog.youkuaiyun.com/rootial/article/details/38851205</guid><author>rootial</author><pubDate>Tue, 26 Aug 2014 17:43:59 +0800</pubDate><description><![CDATA[先一道一道题慢慢补上，
1009.题意，一棵N(N
分析：对于每次询问需要知道其LCA，设w = LCA(u, v),可以用tarjan处理出来，或者倍增法也行。然后w会将S0分成两部分，记做S1，S2，然后分别考虑S1在u->w的路径出现次数，以及S2在v->w出现的次数。
S1(x) = S0[1....x]，1
以S1为例，需要预处理出来u到根节点的路径上对应S0[i,j]序列出现的]]></description><category></category></item><item><title><![CDATA[MemSQL Start[c]UP 2.0 - Round 1]]></title><link>https://blog.youkuaiyun.com/rootial/article/details/38851203</link><guid>https://blog.youkuaiyun.com/rootial/article/details/38851203</guid><author>rootial</author><pubDate>Tue, 26 Aug 2014 17:43:57 +0800</pubDate><description><![CDATA[搞了好久才把大部分题目题解看完了，真是太弱了。
A题简单暴力题一个一个匹配，对应位置字母要么相同，要么是'.'.
B题给定一个矩阵，左下角(0,0)，右上角(n, m)，取4个不同的点连成一段折线，要有最长的折线长度。
排除n == 0 和m == 0 ，剩下的情况中总共由4中情况：
枚举一下就可以了
1. (0,0)->(n,m)->(0, m)->(n, 0)
2. (0,0)->]]></description><category></category></item><item><title><![CDATA[HDOJ  4893 Wow! Such Sequence!]]></title><link>https://blog.youkuaiyun.com/rootial/article/details/38851201</link><guid>https://blog.youkuaiyun.com/rootial/article/details/38851201</guid><author>rootial</author><pubDate>Tue, 26 Aug 2014 17:43:55 +0800</pubDate><description><![CDATA[题意是这样的，给定一个n个元素的数组，初始值为0，3种操作：
1 k d将第k个数增加d；
2 l r 询问区间l...r范围内数之和；
3 l r 表示将区间l...r内的数变成离他最近的斐波那契数，要求尽量小。
线段树操作题目，其中对于第三种操作用一个懒惰标记一下，表示l...r内的数是不是已经变成斐波那契数，如果是的话，求和就是其相应数的斐波那契数之和。
代码：


  1 ]]></description><category></category></item><item><title><![CDATA[TC Asia Competition]]></title><link>https://blog.youkuaiyun.com/rootial/article/details/38851199</link><guid>https://blog.youkuaiyun.com/rootial/article/details/38851199</guid><author>rootial</author><pubDate>Tue, 26 Aug 2014 17:43:52 +0800</pubDate><description><![CDATA[250PT不说了。很水得一题。
500PT
给定n(
最后判断一下剩余的是不是完全平方。
1000PT
一个排列组合题，一个中心出发有k条路，路与路之间有且仅有中心这个交点。现在要建n个城市，编号1~n,使得中心有一个城市，每条路末端有一个城市，然后其余城市就放在各条路的中间。首先保证中心和末端处各建设1个城市，问
总共有多少种安排方式。两种安排方式不同，表示至少存在一个城市他的邻居集]]></description><category></category></item><item><title><![CDATA[Codeforces  258 Div2]]></title><link>https://blog.youkuaiyun.com/rootial/article/details/38851195</link><guid>https://blog.youkuaiyun.com/rootial/article/details/38851195</guid><author>rootial</author><pubDate>Tue, 26 Aug 2014 17:43:50 +0800</pubDate><description><![CDATA[A题，n*m根木棍，相交放置，轮流取走相交的两根，最后谁不能行动，则输掉。
min(n,m)&1 为1则先取者赢。
B题，给定一个长度为n，且各不相同的数组，问能否通过交换连续一段L....R使得变成单调递增。
如果一开始就是递增的，那么直接输出L。。。R就是1 1，交换一个就行了；否则判断中间是否有且一段单调递减，且两端交换后使得数组递增。
代码：


  1 //Template]]></description><category></category></item><item><title><![CDATA[斯坦纳树]]></title><link>https://blog.youkuaiyun.com/rootial/article/details/38851193</link><guid>https://blog.youkuaiyun.com/rootial/article/details/38851193</guid><author>rootial</author><pubDate>Tue, 26 Aug 2014 17:43:48 +0800</pubDate><description><![CDATA[斯坦纳树是一类比较特殊的DP吧，主要针对点集连通问题，通常dp[i][s]表示以i为根的，连通状态为s的一棵树的最小权值，有两种转移方式，
其中state[i]表示点i的二进制标号，通常无关的点state值为0，
dp[i][s] = min{dp[i][s], dp[i][j] + dp[i][k]},这里是针对state[i]非0
dp[i][s] = min{dp[j][s] + di]]></description><category></category></item><item><title><![CDATA[&lt;算法竞赛入门经典&gt; 第8章 贪心+递归+分治总结]]></title><link>https://blog.youkuaiyun.com/rootial/article/details/38851191</link><guid>https://blog.youkuaiyun.com/rootial/article/details/38851191</guid><author>rootial</author><pubDate>Tue, 26 Aug 2014 17:43:46 +0800</pubDate><description><![CDATA[虽然都是算法基础，不过做了之后还是感觉有长进的，前期基础不打好后面学得很艰难的，现在才慢慢明白这个道理。  闲话少说，上VOJ上的专题训练吧：http://acm.hust.edu.cn/vjudge/contest/view.action?cid=40741#overview  1. A UVA 10602 Editor Nottoobad  好像是俄罗斯NOI的题目，题意是给定n个字符串，然后]]></description><category></category></item><item><title><![CDATA[UVALive 6602 Counting Lattice Squares]]></title><link>https://blog.youkuaiyun.com/rootial/article/details/38851189</link><guid>https://blog.youkuaiyun.com/rootial/article/details/38851189</guid><author>rootial</author><pubDate>Tue, 26 Aug 2014 17:43:44 +0800</pubDate><description><![CDATA[给定一个n*m的网格，求面积为奇数的正方形有多少个.
首先是n*m个面积为1的，然后剩下的要么是边长为奇数，要么被这样一个奇数边长所包围。
原因如下：

对于一个边长不平行于坐标抽的正方形，其边长一定是某个长方形的对角线，而且长方形长宽a,b一定是一奇数，一偶数，这样area = a^2+b^2才是奇数。
所以可以对任何奇数i 
注意对于一个奇数例如5，被包围的正方形可以是以1和4的对]]></description><category></category></item><item><title><![CDATA[UVALive 6609 Minimal Subarray Length （查找+构建排序数组）]]></title><link>https://blog.youkuaiyun.com/rootial/article/details/38851187</link><guid>https://blog.youkuaiyun.com/rootial/article/details/38851187</guid><author>rootial</author><pubDate>Tue, 26 Aug 2014 17:43:42 +0800</pubDate><description><![CDATA[描述：给定n个整数元素，求出长度最小的一段连续元素，使得这段元素的和sum >= X.  对整个数组先求出sum[i]，表示前i个元素的和，然后依次求出以a[i]为起点的，总和>= X的最小长度，  每次考虑新元素a[i]时，将a[i]加入数组, pa[—q] = mp(sum[i], i),这样pa[q……….p]形成一段总和递增的序列，下标也是逐渐增大。  最后利用lower_bound函数求]]></description><category></category></item><item><title><![CDATA[TC  SRM 607 DIV2]]></title><link>https://blog.youkuaiyun.com/rootial/article/details/38851185</link><guid>https://blog.youkuaiyun.com/rootial/article/details/38851185</guid><author>rootial</author><pubDate>Tue, 26 Aug 2014 17:43:40 +0800</pubDate><description><![CDATA[求拼接完成后的字符串包含的子回文串的数目，一开始还用暴力去做，想都不用想 肯定超时了。  复习了一下求最长子回文串的算法，发现可以类似解决。  给相邻字符之间添加一个‘@’字符，这样所有的回文串都是奇数长度，然后从左到右，统计以每个字符为中心的回文串的数目就行了，长度逐渐递增，一旦遇到不是回文串的情况，就马上结束，开始对下一个字符为中心的回文串的统计。  Orz…这个回文串算法不久前学过，最近搞前]]></description><category></category></item><item><title><![CDATA[UVALive - 3401 Colored Cubes]]></title><link>https://blog.youkuaiyun.com/rootial/article/details/38851183</link><guid>https://blog.youkuaiyun.com/rootial/article/details/38851183</guid><author>rootial</author><pubDate>Tue, 26 Aug 2014 17:43:38 +0800</pubDate><description><![CDATA[好久没写解题回顾了。主要是没什么时间，但是还是一直在刷题，图论刷了70%的知识点，不过感觉长进不是很大，所以觉得还是得一步步来，最近还是先从刘汝佳大白书把前面基础章节刷完然后再决定以后的训练方式吧。  这个题目还算是理解了。重点在于各种姿态的的表示，顶部在上共有6种放置方法，然后正面对应4种，这样每个魔方对应24种方式放置。利用一个数组p[6]保存旋转后各个面对应的标准姿态的编号。然后将第一个魔方]]></description><category></category></item><item><title><![CDATA[UVA 11090 Going in Cycle!!]]></title><link>https://blog.youkuaiyun.com/rootial/article/details/38851179</link><guid>https://blog.youkuaiyun.com/rootial/article/details/38851179</guid><author>rootial</author><pubDate>Tue, 26 Aug 2014 17:43:35 +0800</pubDate><description><![CDATA[要求给定的图的中平均权值最小的环，注意处理自环的情况就能过了。
按照w1+w2+w3+….wn 
代码：

#include 
#include 
#include 
#include 
#include 
#include 
#include string>
#include 
#include 
#include 
#include 
#include 
#in]]></description><category></category></item><item><title><![CDATA[CodeChef   A]]></title><link>https://blog.youkuaiyun.com/rootial/article/details/38851175</link><guid>https://blog.youkuaiyun.com/rootial/article/details/38851175</guid><author>rootial</author><pubDate>Tue, 26 Aug 2014 17:43:33 +0800</pubDate><description><![CDATA[问题是求出斐波那契数列的第n个，这里要用大数加法预处理，然后就可以了
代码：


 1 #include 
 2 #include 
 3 #include 
 4 #include 
 5 #include 
 6 #include 
 7 #include string>
 8 #include 
 9 #include 
10 #include 
11 #incl]]></description><category></category></item></channel></rss>