<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[MyWorld]]></title><description><![CDATA[做记录]]></description><link>https://blog.youkuaiyun.com/kopyh</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; kopyh]]></copyright><item><title><![CDATA[HDU5956 The Elder(树上斜率DP)]]></title><link>https://blog.youkuaiyun.com/kopyh/article/details/52980451</link><guid>https://blog.youkuaiyun.com/kopyh/article/details/52980451</guid><author>kopyh</author><pubDate>Mon, 31 Oct 2016 10:57:47 +0800</pubDate><description><![CDATA[题目：
Once upon a time, in the mystical continent, there is a frog kingdom, ruled by the oldest frog, the Elder. The kingdom consists of N cities, numbered from east to west. The
 1-th city, which is ]]></description><category></category></item><item><title><![CDATA[HDU5943 Kingdom of Obsession(匹配问题)]]></title><link>https://blog.youkuaiyun.com/kopyh/article/details/52965898</link><guid>https://blog.youkuaiyun.com/kopyh/article/details/52965898</guid><author>kopyh</author><pubDate>Sat, 29 Oct 2016 18:37:28 +0800</pubDate><description><![CDATA[题目：
acm.split.hdu.edu.cn/showproblem.php?pid=5943

题意：
有n个人，每个人的标号以此是s+1到s+n，要求将所有人重新排序之后满足每个人的位置y能够保证被他的标号整除，就是数组重排之后满足每一位的a[i]%i==0。
思路：
首先很容易想到一定区间之内最多只有一个质数，所以多于一个质数的直接NO，那么这段区间不会很长，考虑直接二分图匹]]></description><category></category></item><item><title><![CDATA[POJ1155 TELE(树DP)]]></title><link>https://blog.youkuaiyun.com/kopyh/article/details/52948621</link><guid>https://blog.youkuaiyun.com/kopyh/article/details/52948621</guid><author>kopyh</author><pubDate>Thu, 27 Oct 2016 19:05:11 +0800</pubDate><description><![CDATA[题目：
poj.org/problem?id=1155

题意：
有N个节点的一棵树，上面前n-m个节点是信号站，后m个节点是用户，每个节点之间传输有消耗，每个用户有费用，总信号从1节点传输出来，求在不赔本的情况下能够最多传输给多少个用户。
思路：
明显是树DP，考虑3000个节点，dp[i][j]就是第i个节点在传输给j个用户的情况下的最小花费是多少，记录每个节点取得的可能最大用户数]]></description><category></category></item><item><title><![CDATA[HDU5874 Friends and Enemies]]></title><link>https://blog.youkuaiyun.com/kopyh/article/details/52496723</link><guid>https://blog.youkuaiyun.com/kopyh/article/details/52496723</guid><author>kopyh</author><pubDate>Sat, 10 Sep 2016 20:08:25 +0800</pubDate><description><![CDATA[题目：
http://acm.split.hdu.edu.cn/showproblem.php?pid=5874

题意：
M个人互相之间不是朋友就是敌人，朋友有至少一个颜色一样的石头，敌人不能有任何颜色一样的石头。求N个石头是否满足情况。
思路：
就是M个节点的图是朋友就建边那么每条边代表有一样的石头，边越多石头颜色就越多，但是如果存在子图是完全图，这个子图中的所有边可以是一个颜色的]]></description><category></category></item><item><title><![CDATA[HDU5873 Football Games]]></title><link>https://blog.youkuaiyun.com/kopyh/article/details/52496667</link><guid>https://blog.youkuaiyun.com/kopyh/article/details/52496667</guid><author>kopyh</author><pubDate>Sat, 10 Sep 2016 19:59:58 +0800</pubDate><description><![CDATA[题目：
http://acm.split.hdu.edu.cn/showproblem.php?pid=5873

题意：
求M个队伍的小组赛每个队伍最后的得分是否合法
思路：
就是小组赛积分啦，看球都知道啦，这题抢到了一血，great。
首先总分一定是m*(m-1)，然后每x个队伍的分数之和一定不小于x*(x-1)，就酱紫。
排个序随便判断下，输入真脑残。
代码：
//kop]]></description><category></category></item><item><title><![CDATA[HDU5872 Seats]]></title><link>https://blog.youkuaiyun.com/kopyh/article/details/52496579</link><guid>https://blog.youkuaiyun.com/kopyh/article/details/52496579</guid><author>kopyh</author><pubDate>Sat, 10 Sep 2016 19:49:04 +0800</pubDate><description><![CDATA[题目：
http://acm.split.hdu.edu.cn/showproblem.php?pid=5872

题意：
这题题意很乱，大致是说有M个部门但是M是多少不一定，每个部门最多h个人，但是到底多少人也不一定，知道总人数是L人，以及每排有k个座位。每个部门的人必须坐在同一排，求至少多少排能满足坐下所有人，呃，大致是这个样子。
思路：
考虑至少多少排那就是找到每一排尽可能多做人]]></description><category></category></item><item><title><![CDATA[HDU5869 Different GCD Subarray Query(线段树&&离线处理)]]></title><link>https://blog.youkuaiyun.com/kopyh/article/details/52496525</link><guid>https://blog.youkuaiyun.com/kopyh/article/details/52496525</guid><author>kopyh</author><pubDate>Sat, 10 Sep 2016 19:25:48 +0800</pubDate><description><![CDATA[题目：
http://acm.split.hdu.edu.cn/showproblem.php?pid=5869

题意：
找区间内所有子串GCD的个数
思路：
线段树离线搞搞，区间GCD收敛的很快，所以直接暴力预处理出到每个数字截至的后缀串有哪些GCD以及它们的位置，就是每个数字向前看有哪些GCD出现，这个数量是很少的。扫一遍然后离线询问，对于每个询问按照右端点排序。找到每个位置的时]]></description><category></category></item><item><title><![CDATA[HDU5792 World is Exploding (线段树&&逆序数)]]></title><link>https://blog.youkuaiyun.com/kopyh/article/details/52097814</link><guid>https://blog.youkuaiyun.com/kopyh/article/details/52097814</guid><author>kopyh</author><pubDate>Tue, 02 Aug 2016 20:58:22 +0800</pubDate><description><![CDATA[题目：
http://acm.hdu.edu.cn/showproblem.php?pid=5792

题意：
找到数列中所有满足： a≠b≠c≠d,1≤ab≤n,1≤cd≤n,AaAb,Ac>Ad.
的四元组个数。
思路：
明显只要线段树处理出每个数字前后比它大比它小的数字个数，类似求逆序数，然后直接计算即可把所有的升序对和逆序对乘积，然后减去每个数字重复出现的对数，就是减去它左边]]></description><category></category></item><item><title><![CDATA[HDU5785 Interesting(回文串&&前缀和)]]></title><link>https://blog.youkuaiyun.com/kopyh/article/details/52096942</link><guid>https://blog.youkuaiyun.com/kopyh/article/details/52096942</guid><author>kopyh</author><pubDate>Tue, 02 Aug 2016 18:52:57 +0800</pubDate><description><![CDATA[题目：
http://acm.hdu.edu.cn/showproblem.php?pid=5787

题意：
找出所有相邻的回文串，将它们最外侧的端点坐标乘积都加起来，(i,j),(j+1,k) 两个回文串，将所有的i*k加和。
思路：
回文串直接用Manacher求解，然后对于所有的回文串都包含许多小的回文串，例如(i,j)回文串同时代表(i+1,j-1)等许多回文串，所以需要将更]]></description><category></category></item><item><title><![CDATA[HDU5787 K-wolf Number(数位DP)]]></title><link>https://blog.youkuaiyun.com/kopyh/article/details/52096895</link><guid>https://blog.youkuaiyun.com/kopyh/article/details/52096895</guid><author>kopyh</author><pubDate>Tue, 02 Aug 2016 18:45:52 +0800</pubDate><description><![CDATA[题目：
http://acm.hdu.edu.cn/showproblem.php?pid=5787

题意：
计算区间内满足：相邻k个数位不重复的数的个数。
思路：
明显的数位DP，注意储存时存后缀4位就行了。
代码：
//kopyh
#include 
#define N 19
using namespace std;
int n,m,sum,res,flag;
long lo]]></description><category></category></item><item><title><![CDATA[HDU-5754 Life Winner Bo (博弈论)]]></title><link>https://blog.youkuaiyun.com/kopyh/article/details/52046436</link><guid>https://blog.youkuaiyun.com/kopyh/article/details/52046436</guid><author>kopyh</author><pubDate>Wed, 27 Jul 2016 16:24:58 +0800</pubDate><description><![CDATA[题目：
http://acm.hdu.edu.cn/showproblem.php?pid=5754

题意：
n*m的棋盘，一枚棋子要从左上到右下，两个人轮流移动，只能向包含当前行列的左下移动，谁移动到最后一步谁胜利，有四种棋子：
1 king 向周围八个方向移动一步
2 castle 向2*3的矩阵的另一个角移动
3 knight 移动到同一行或者同一列的任意位置
4 quee]]></description><category></category></item><item><title><![CDATA[十四届北师大校赛题解]]></title><link>https://blog.youkuaiyun.com/kopyh/article/details/51626794</link><guid>https://blog.youkuaiyun.com/kopyh/article/details/51626794</guid><author>kopyh</author><pubDate>Fri, 10 Jun 2016 12:33:32 +0800</pubDate><description><![CDATA[A.Check In
题目：
https://www.bnuoj.com/v3/problem_show.php?pid=51635

题意：

找到所有是bnu的账号数量
思路：
所有是bnu的账号加入map中判重就行了
代码：
//kopyh
#include 
using namespace std;
int n,m,sum,res,flag;
mapmp;
string]]></description><category></category></item><item><title><![CDATA[2016"百度之星" - 初赛（Astar Round2A）]]></title><link>https://blog.youkuaiyun.com/kopyh/article/details/51510537</link><guid>https://blog.youkuaiyun.com/kopyh/article/details/51510537</guid><author>kopyh</author><pubDate>Thu, 26 May 2016 22:02:45 +0800</pubDate><description><![CDATA[A.All X
题目：
http://acm.hdu.edu.cn/showproblem.php?pid=5690

题意：

F(x,m) 代表一个全是由数字x组成的m位数字。请计算，以下式子是否成立：
F(x,m) mod k ≡ c
思路：
k小于1e4，所以取模得到的结果不会多，直接暴力出循环节判断就行了。
代码：
//kopyh
#include 
#define]]></description><category></category></item><item><title><![CDATA[Lightoj-1347 Aladdin and the Magical Lamp(后缀数组&&线段树)]]></title><link>https://blog.youkuaiyun.com/kopyh/article/details/51245403</link><guid>https://blog.youkuaiyun.com/kopyh/article/details/51245403</guid><author>kopyh</author><pubDate>Mon, 25 Apr 2016 21:13:15 +0800</pubDate><description><![CDATA[题目：
http://lightoj.com/volume_showproblem.php?problem=1347

题意：
求三个字符串的最长公共子串
思路：
三个字符串的总长度不超过150000所以可以用后缀数组把他们看作一个字符串来处理。
把三个字符串连接成一个字符串然后跑一遍后缀数组，按rank[]排序后找到某个区间包含三个串的子串这个区间的height[]数组的最小值就是]]></description><category></category></item><item><title><![CDATA[Lightoj-1314 Names for Babies(后缀数组)]]></title><link>https://blog.youkuaiyun.com/kopyh/article/details/51244902</link><guid>https://blog.youkuaiyun.com/kopyh/article/details/51244902</guid><author>kopyh</author><pubDate>Mon, 25 Apr 2016 20:12:00 +0800</pubDate><description><![CDATA[题目：
http://lightoj.com/volume_showproblem.php?problem=1314

题意：
求母串中长度在p到q之间的不相同子串的个数。
思路：
求不相同子串个数和明显用后缀数组可以搞，对于每个后缀能够取得子串个数就是min(q,n-sa[i])-max(p,height[i]+1)+1 很好理解就是能够取得的最大长度减去重复或者是最小长度，因为要去]]></description><category></category></item><item><title><![CDATA[Lightoj-1428 Melody Comparison(kmp&&后缀数组)]]></title><link>https://blog.youkuaiyun.com/kopyh/article/details/51244445</link><guid>https://blog.youkuaiyun.com/kopyh/article/details/51244445</guid><author>kopyh</author><pubDate>Mon, 25 Apr 2016 18:58:32 +0800</pubDate><description><![CDATA[题目：
http://lightoj.com/volume_showproblem.php?problem=1428
题意：
求母串中的不相同的并且不包含匹配串的子串个数。


思路：
求不相同子串个数和明显用后缀数组可以搞，然后处理不包含匹配串的情况只要kmp跑一遍找到所有包含的位置，然后从而确定母串中所有位置能够匹配的最远距离。
具体就是找到所有的匹配位置之后可以确定这些位置的]]></description><category></category></item><item><title><![CDATA[Lightoj-1334 Genes in DNA(kmp)]]></title><link>https://blog.youkuaiyun.com/kopyh/article/details/51219949</link><guid>https://blog.youkuaiyun.com/kopyh/article/details/51219949</guid><author>kopyh</author><pubDate>Fri, 22 Apr 2016 14:35:04 +0800</pubDate><description><![CDATA[题目：
http://lightoj.com/volume_showproblem.php?problem=1334
题意：
给出一个母串和一个匹配串，求匹配串的所有的前后缀组合在母串中有多少个子串与之相同。前后缀长度不能超过len-1。


思路：
通过kmp加上一个dp[]递推数组求出母串中所有位置能够匹配匹配串的几个前缀，然后倒置求出能够匹配的后缀数，把所有相邻位置的前后缀匹配]]></description><category></category></item><item><title><![CDATA[Lightoj-1268 Unlucky Strings(kmp&&矩阵快速幂)]]></title><link>https://blog.youkuaiyun.com/kopyh/article/details/51179617</link><guid>https://blog.youkuaiyun.com/kopyh/article/details/51179617</guid><author>kopyh</author><pubDate>Mon, 18 Apr 2016 15:43:39 +0800</pubDate><description><![CDATA[题目：
http://lightoj.com/volume_showproblem.php?problem=1268
题意：
给出a个字符，求用这a个字符组成的长度为n的字符串中不包含子串s的个数。


思路：
首先知道矩阵可以解决这样一类经典问题：

给定一个有向图，问从A点恰好走k步（允许重复经过边）到达B点的方案数mod
 p的值
把给定的图转为邻接矩阵，即A(i,j)]]></description><category></category></item><item><title><![CDATA[HDU-5667 Sequence (矩阵快速幂)]]></title><link>https://blog.youkuaiyun.com/kopyh/article/details/51174669</link><guid>https://blog.youkuaiyun.com/kopyh/article/details/51174669</guid><author>kopyh</author><pubDate>Sun, 17 Apr 2016 19:26:52 +0800</pubDate><description><![CDATA[题目：
http://acm.hdu.edu.cn/showproblem.php?pid=5667
题意：
fn=⎧⎩⎨⎪⎪1,ab,abfcn−1fn−2,n=1n=2otherwise
按这个表达式求出某一位的数字
思路：
公式整理一下如果只看指数的话就是f(n) = c*f(n-1)+f(n-2)+1,直接求出这个递推关系式就行了，矩阵快速幂直接求。
c  1  1     ]]></description><category></category></item><item><title><![CDATA[Lightoj-1258 Making Huge Palindromes(kmp||回文串)]]></title><link>https://blog.youkuaiyun.com/kopyh/article/details/51169444</link><guid>https://blog.youkuaiyun.com/kopyh/article/details/51169444</guid><author>kopyh</author><pubDate>Sat, 16 Apr 2016 18:41:13 +0800</pubDate><description><![CDATA[题目：
http://lightoj.com/volume_showproblem.php?problem=1258
题意：
给出一个串，求在这个串后面最少加上几个字符能够构成回文串。

思路：
可以用Manacher直接求回文串，然后找到最大的后缀回文串就是了。
也可以用kmp匹配正反串的最大匹配，前后缀最大匹配就是最长公共部分。
代码：
Manacher：
//kopyh]]></description><category></category></item></channel></rss>