<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[West___wind的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/West___wind</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; West___wind]]></copyright><item><title><![CDATA[codeforces 731C（DFS）]]></title><link>https://blog.youkuaiyun.com/West___wind/article/details/52837348</link><guid>https://blog.youkuaiyun.com/West___wind/article/details/52837348</guid><author>West___wind</author><pubDate>Mon, 17 Oct 2016 11:44:04 +0800</pubDate><description><![CDATA[题目链接：http://codeforces.com/contest/731/problem/C
题意：有n只袜子（1~n），k种颜色（1~k），在m天中，左脚穿下标为l，右脚穿下标为r的袜子，问最少修改几只袜子的颜色，可以使每天穿的袜子左右两只都同颜色。

好恶心的袜子，一会儿看成改袜子的颜色，一会儿看成改l，r的颜色，一会下标看混......不过，菜是原罪=_=
思路：先建图，在每个连]]></description><category></category></item><item><title><![CDATA[codeforces 651C（map、去重）]]></title><link>https://blog.youkuaiyun.com/West___wind/article/details/52740582</link><guid>https://blog.youkuaiyun.com/West___wind/article/details/52740582</guid><author>West___wind</author><pubDate>Wed, 05 Oct 2016 21:03:32 +0800</pubDate><description><![CDATA[题目链接：http://codeforces.com/contest/651/problem/C
思路：结果就是计算同一横坐标、纵坐标上有多少点，再减去可能重复的数量（用map，pair存一下就OK了）。
#include
using namespace std;
typedef long long ll;
typedef pair  pii;
const int N = 2e5 + 5;
m]]></description><category></category></item><item><title><![CDATA[HDU5920（字符串模拟）]]></title><link>https://blog.youkuaiyun.com/West___wind/article/details/52736010</link><guid>https://blog.youkuaiyun.com/West___wind/article/details/52736010</guid><author>West___wind</author><pubDate>Tue, 04 Oct 2016 23:24:05 +0800</pubDate><description><![CDATA[题目链接：http://acm.hdu.edu.cn/showproblem.php?pid=5920
题意：将一个数字分成不超过50个回文数字，只要不超过50个就行，不一定要最小。

思路：一道算是比较简单的题被我越搞越复杂。从中间开始向两边遍历并逐位赋值给b，找到不对称的地方时取较小的数，每次找到的b都是小于a的较大回文数字。如a = 123345，则第一个回文数字b = 123321；]]></description><category></category></item><item><title><![CDATA[codeforces 723D（DFS）]]></title><link>https://blog.youkuaiyun.com/West___wind/article/details/52729987</link><guid>https://blog.youkuaiyun.com/West___wind/article/details/52729987</guid><author>West___wind</author><pubDate>Mon, 03 Oct 2016 23:21:16 +0800</pubDate><description><![CDATA[题目链接：http://codeforces.com/problemset/problem/723/D
题意：n*m的矩阵中，'*'代表陆地，'.'代表水，连在一起且不沿海的水形成湖泊。问最少填多少块water能使湖泊数量降到k个。

思路：本来最有把握的一次CF，D题小错误一直RE，C题最后也FST了......
先DFS出各湖泊的大小并用其中一个点存在结构体中，最后有num0个湖泊，再]]></description><category></category></item><item><title><![CDATA[codeforces 721C （拓排 + DP）]]></title><link>https://blog.youkuaiyun.com/West___wind/article/details/52724647</link><guid>https://blog.youkuaiyun.com/West___wind/article/details/52724647</guid><author>West___wind</author><pubDate>Sun, 02 Oct 2016 19:41:16 +0800</pubDate><description><![CDATA[题目链接：http://codeforces.com/contest/721/problem/C
题意：从1走到n，问在时间T内最多经过多少个点，按路径顺序输出。
思路：比赛的时候只想到拓排然后就不知道怎么办了......先拓扑排序，再按照拓扑的顺序进行DP，dp[to][j]（到i点走过j个点最短时间） = min(dp[to][j], dp[i][j] + dis)

#include]]></description><category></category></item><item><title><![CDATA[codeforces 722C （并查集）]]></title><link>https://blog.youkuaiyun.com/West___wind/article/details/52723689</link><guid>https://blog.youkuaiyun.com/West___wind/article/details/52723689</guid><author>West___wind</author><pubDate>Sun, 02 Oct 2016 14:26:33 +0800</pubDate><description><![CDATA[题目链接：http://codeforces.com/contest/722/problem/C
题意：每次破坏一个数，求每次操作后的最大连续子串和。
思路：并查集逆向操作



#include
using namespace std;
typedef long long ll;
const int N = 1e5 + 10;
ll sum[N], ans[N];
int n, a[]]></description><category></category></item><item><title><![CDATA[北京网赛I题 hiho1391  （树状数组、区间覆盖最大值问题）]]></title><link>https://blog.youkuaiyun.com/West___wind/article/details/52665399</link><guid>https://blog.youkuaiyun.com/West___wind/article/details/52665399</guid><author>West___wind</author><pubDate>Sun, 25 Sep 2016 23:50:30 +0800</pubDate><description><![CDATA[题目链接：http://hihocoder.com/problemset/problem/1391
题意：A国和B国向对方分别投射N枚和M枚导弹（发射时间，飞行时间，伤害值），同时两国各自都有防御系统，导弹碰到防御系统会发生反弹。B国防御时间固定，求A国受到的最小伤害。
思路：对于从A国发射的导弹，判断到达B时（a+b）是否在B国防御区间[x , x + Tb]内，如果不在就不用管了，在的话计]]></description><category></category></item><item><title><![CDATA[HDU5883（青岛网赛1006）（欧拉路）]]></title><link>https://blog.youkuaiyun.com/West___wind/article/details/52629485</link><guid>https://blog.youkuaiyun.com/West___wind/article/details/52629485</guid><author>West___wind</author><pubDate>Thu, 22 Sep 2016 23:30:32 +0800</pubDate><description><![CDATA[题目链接：http://acm.hdu.edu.cn/showproblem.php?pid=5883
思路：
欧拉路的性质：经过每条边一次且仅一次，奇度定点个数为0（欧拉回路）或2（欧拉路）。
度数为x的顶点，贡献为(x+1)/2%2，首先当然需要先判断是否存在欧拉路，再分是否为欧拉回路两种情况讨论。
#include
#include
#include
using namespace ]]></description><category></category></item><item><title><![CDATA[HDU5898、 HDU 2089（数位DP）]]></title><link>https://blog.youkuaiyun.com/West___wind/article/details/52628169</link><guid>https://blog.youkuaiyun.com/West___wind/article/details/52628169</guid><author>West___wind</author><pubDate>Thu, 22 Sep 2016 22:06:38 +0800</pubDate><description><![CDATA[题目链接：http://acm.hdu.edu.cn/showproblem.php?pid=5898
题意：很明确，找出区间[l , r]中符合连续奇数为偶数，连续偶数为奇数的个数。
思路：dp[i][j][1]表示i位数j开头符合条件的数，dp[i][j][0]表示i位数j开头（之后）可能符合条件的数。
#include
#include
using namespace std;
typ]]></description><category></category></item><item><title><![CDATA[区间DP合集]]></title><link>https://blog.youkuaiyun.com/West___wind/article/details/52556007</link><guid>https://blog.youkuaiyun.com/West___wind/article/details/52556007</guid><author>West___wind</author><pubDate>Fri, 16 Sep 2016 15:29:52 +0800</pubDate><description><![CDATA[①HDU5115：http://acm.hdu.edu.cn/showproblem.php?pid=5115
题意：每只狼有自身攻击和额外攻击两个属性，杀手杀死它时受到它自身攻击(ai)和相邻两只（一只）狼的额外攻击(b(i-1) , b(i+1))之和，杀死之后相邻关系会对应调整，
求杀手杀死全部狼受到的最少伤害。
思路：一开始一直想贪心，结果还是放弃了.....
区间DP，dp[i]]]></description><category></category></item><item><title><![CDATA[HDU5120（几何）]]></title><link>https://blog.youkuaiyun.com/West___wind/article/details/52551524</link><guid>https://blog.youkuaiyun.com/West___wind/article/details/52551524</guid><author>West___wind</author><pubDate>Thu, 15 Sep 2016 23:00:22 +0800</pubDate><description><![CDATA[题目链接：http://acm.hdu.edu.cn/showproblem.php?pid=5120
题意：求两圆环相交面积，模板题。
#include
#include
#include
using namespace std;
const double eps = 1e-8;
const double pi = acos(-1.0);
int sgn(double x)
{
    if]]></description><category></category></item><item><title><![CDATA[HDU 5876 （大连网赛1009）（BFS + set）]]></title><link>https://blog.youkuaiyun.com/West___wind/article/details/52538401</link><guid>https://blog.youkuaiyun.com/West___wind/article/details/52538401</guid><author>West___wind</author><pubDate>Wed, 14 Sep 2016 15:31:59 +0800</pubDate><description><![CDATA[题目链接：http://acm.hdu.edu.cn/showproblem.php?pid=5876
题意：给定一个图（n个顶点m条边），求其补图最短路
思路：集合a表示当前还未寻找到的点，集合b表示本次bfs之后仍未寻找到的点
#include
#include
#include
#include
using namespace std;
const int N = 2e5 + 5;
s]]></description><category></category></item><item><title><![CDATA[codeforces 682D（DP）]]></title><link>https://blog.youkuaiyun.com/West___wind/article/details/52518619</link><guid>https://blog.youkuaiyun.com/West___wind/article/details/52518619</guid><author>West___wind</author><pubDate>Mon, 12 Sep 2016 23:29:46 +0800</pubDate><description><![CDATA[题目链接：http://codeforces.com/contest/682/problem/D
思路：dp[i][j][l][0]表示a串前i和b串前j利用a[i] == b[j]所得到的最长子序列，
    dp[i][j][l][1]表示a串前i和b串前j不利用a[i] == b[j]所得到的最长子序列，
所以，dp[i][j][l][0] = max(dp[i-1][j-1][l][]]></description><category></category></item><item><title><![CDATA[HDU5875 - 大连网赛1008（单调栈）]]></title><link>https://blog.youkuaiyun.com/West___wind/article/details/52506092</link><guid>https://blog.youkuaiyun.com/West___wind/article/details/52506092</guid><author>West___wind</author><pubDate>Sun, 11 Sep 2016 20:25:59 +0800</pubDate><description><![CDATA[题目链接：http://acm.hdu.edu.cn/showproblem.php?pid=5875
思路：显然F(l , r) = Al % A(l+1) % ***Ar，大于当前数的直接跳过。
#include
#include
#include
using namespace std;
const int N = 1e5 + 10;
int a[N] ,Next[N];
stack s]]></description><category></category></item><item><title><![CDATA[codeforces 666A （DP）]]></title><link>https://blog.youkuaiyun.com/West___wind/article/details/52491230</link><guid>https://blog.youkuaiyun.com/West___wind/article/details/52491230</guid><author>West___wind</author><pubDate>Fri, 09 Sep 2016 23:24:07 +0800</pubDate><description><![CDATA[题目链接：http://codeforces.com/problemset/problem/666/A
思路：dp[i][0]表示第a[i-1]~a[i]组成的字符串是否可行，dp[i][1]表示第a[i-2]~a[i]组成的字符串是否可行，显然dp[len-2][0(1)]必定不可行。
转移方程：

dp[i][0] = dp[i+3][1] || dp[i+2][0] && (tmp1]]></description><category></category></item><item><title><![CDATA[codeforces 706D （字典树）]]></title><link>https://blog.youkuaiyun.com/West___wind/article/details/52480158</link><guid>https://blog.youkuaiyun.com/West___wind/article/details/52480158</guid><author>West___wind</author><pubDate>Fri, 09 Sep 2016 00:32:04 +0800</pubDate><description><![CDATA[题目链接：http://codeforces.com/problemset/problem/706/D
题意：q次操作，可以向多重集中增添，删除，询问异或最大值。
思路：转化为二进制用字典树存储，数字从高位开始，并全部固定位30位。
#include
using namespace std;
const int N=2e5 + 5;
int now = 1 ,Trie[N<<5][2] ,n]]></description><category></category></item><item><title><![CDATA[codeforces 675C Money Transfers（贪心）]]></title><link>https://blog.youkuaiyun.com/West___wind/article/details/52443022</link><guid>https://blog.youkuaiyun.com/West___wind/article/details/52443022</guid><author>West___wind</author><pubDate>Mon, 05 Sep 2016 19:59:28 +0800</pubDate><description><![CDATA[题目链接：http://codeforces.com/contest/675/problem/C
题意：有n个银行围成一圈，相邻的银行可以相互转账，问最少操作次数使得余额均为0。
思路：从1-n扫一遍，处理前缀和，如果有一段长为l的子序列和为0，则操作次数可以减少一次。结果即n-出现次数最多的前缀和的值。


#include
using namespace std;
typedef l]]></description><category></category></item><item><title><![CDATA[codeforces 675D Tree Construction （map）]]></title><link>https://blog.youkuaiyun.com/West___wind/article/details/52434059</link><guid>https://blog.youkuaiyun.com/West___wind/article/details/52434059</guid><author>West___wind</author><pubDate>Sun, 04 Sep 2016 19:11:02 +0800</pubDate><description><![CDATA[题目链接：http://codeforces.com/contest/675/problem/D


题意：建立一棵二叉搜索树，比当前节点小的放左边，否则放右边。问编号2~n的节点的父节点数值是多少。


思路：如果用普通的建树方法来做，在遇到深度较深的树时会超时。map的lower_bound(t)返回第一个key大于等于t的位置it，所以t必定在(it.second,it.firs]]></description><category></category></item><item><title><![CDATA[codeforces 682C  Alyona and the Tree（DFS）]]></title><link>https://blog.youkuaiyun.com/West___wind/article/details/52423888</link><guid>https://blog.youkuaiyun.com/West___wind/article/details/52423888</guid><author>West___wind</author><pubDate>Sat, 03 Sep 2016 16:37:39 +0800</pubDate><description><![CDATA[题目链接：http://codeforces.com/problemset/problem/682/C
题意：如果点v在点u的子树上且dist(u,v)>a[v]则u和其整个子树都将被删去，求被删去的点数。
思路：1为根节点，从1开始DFS遍历，记录距离dis为到祖宗节点的最大距离。

#include
using namespace std;
typedef long long ll;
]]></description><category></category></item><item><title><![CDATA[HDU1005（矩阵快速幂）]]></title><link>https://blog.youkuaiyun.com/West___wind/article/details/52422692</link><guid>https://blog.youkuaiyun.com/West___wind/article/details/52422692</guid><author>West___wind</author><pubDate>Sat, 03 Sep 2016 13:29:26 +0800</pubDate><description><![CDATA[Description

A number sequence is defined as follows: 

f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. 

Given A, B, and n, you are to calculate the value of f(n). 




Inp]]></description><category></category></item></channel></rss>