<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[不知]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/EzCUfST</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; EzCUfST]]></copyright><item><title><![CDATA[hdu 5724chess 博弈]]></title><link>https://blog.youkuaiyun.com/EzCUfST/article/details/52116255</link><guid>https://blog.youkuaiyun.com/EzCUfST/article/details/52116255</guid><author>EzCUfST</author><pubDate>Thu, 04 Aug 2016 09:53:21 +0800</pubDate><description><![CDATA[题目大意：有一个n*20的棋盘，每一行有若干个棋子，每个棋子可以移动到它右边离它最近第一个空格里，两个人轮流移动，直到有一方不能移动为输。问是否存在先手必胜策略。
分析：棋盘的各个行之间是相互独立的，预处理出0~（1
#include 
#include 
#include 
#include
#include

using namespace std;

int n;
int sg[1100]]></description><category></category></item><item><title><![CDATA[hdu4003 树形dp+分组背包]]></title><link>https://blog.youkuaiyun.com/EzCUfST/article/details/51918012</link><guid>https://blog.youkuaiyun.com/EzCUfST/article/details/51918012</guid><author>EzCUfST</author><pubDate>Fri, 15 Jul 2016 15:27:43 +0800</pubDate><description><![CDATA[题目传送门：http://acm.hdu.edu.cn/showproblem.php?pid=4003
     题意：给定一棵n个结点的树及树根，树的每条路径有一个权值，现在树根上有k个机器人，用这k个机器人遍历这棵树，求机器人走的权值之和的最小值。
     树形dp的题目还是做的太少了。
     我们用f[i][j]表示在以i为根的子树里有j个机器人遍历这棵子树权值之和的最小值，特]]></description><category></category></item><item><title><![CDATA[hdu 4000 树状数组]]></title><link>https://blog.youkuaiyun.com/EzCUfST/article/details/51901323</link><guid>https://blog.youkuaiyun.com/EzCUfST/article/details/51901323</guid><author>EzCUfST</author><pubDate>Wed, 13 Jul 2016 20:44:27 +0800</pubDate><description><![CDATA[题目链接：http://acm.hdu.edu.cn/showproblem.php?pid=4000
   题意大致为：给一个1-n的序列，求有序数对(x,y,z)其中x
   通过树状数组可以得到a[i]的后面含有的大于a[i]的数的个数，假设个数为high，那么有序数对(x,y,z)其中(x
  对于一个数y,x#include 
#include 
#include 

using ]]></description><category></category></item><item><title><![CDATA[树的直径]]></title><link>https://blog.youkuaiyun.com/EzCUfST/article/details/49231721</link><guid>https://blog.youkuaiyun.com/EzCUfST/article/details/49231721</guid><author>EzCUfST</author><pubDate>Sun, 18 Oct 2015 21:50:10 +0800</pubDate><description><![CDATA[树的直径是指树的最长简单路。求法: 两遍BFS :先任选一个起点BFS找到最长路的终点，再从终点进行BFS，则第二次BFS找到的最长路即为树的直径；
原理: 设起点为u,第一次BFS找到的终点v一定是树的直径的一个端点
证明: 1) 如果u 是直径上的点，则v显然是直径的终点(因为如果v不是的话，则必定存在另一个点w使得u到w的距离更长，则于BFS找到了v矛盾)
2) 如果u不是直径上的点，]]></description><category></category></item><item><title><![CDATA[poj 3041 构图+最小点覆盖]]></title><link>https://blog.youkuaiyun.com/EzCUfST/article/details/47254881</link><guid>https://blog.youkuaiyun.com/EzCUfST/article/details/47254881</guid><author>EzCUfST</author><pubDate>Mon, 03 Aug 2015 13:38:55 +0800</pubDate><description><![CDATA[题意是草地上有若干个泥泞的地方，可以用木板覆盖一行或者一列，求最少需要多少木板。
    这个题的关键在于构图，我们把方格的每一行看成一个结点，每一列看成一个结点，那么容易的看出这是一个二分图，我们在有泥泞的地方连一条边，比如在点i,j处有泥泞，那就在i，j两点连一条边。那么可以容易的看成题目就变成了求二分图的最小点覆盖的问题。代码如下：
#include 
#include 
#includ]]></description><category></category></item><item><title><![CDATA[CodeForces 407B DP]]></title><link>https://blog.youkuaiyun.com/EzCUfST/article/details/47210737</link><guid>https://blog.youkuaiyun.com/EzCUfST/article/details/47210737</guid><author>EzCUfST</author><pubDate>Sun, 02 Aug 2015 20:49:33 +0800</pubDate><description><![CDATA[看到题意要模100000007时就知道这个题要么有规律，要么用DP做，注意到1
    我们用f[i]表示第一次走到该点时所用的步数，由于1
    一个值得注意的地方是：由于DP方程中有减法操作，所以最后得到的结果可能是负数，此时，我们要将它加上若干个1000000007使其变成正数。
#include 
#include 

using namespace std;

#define M]]></description><category></category></item><item><title><![CDATA[poj 2528 线段树+离散化+有颜色的区间覆盖]]></title><link>https://blog.youkuaiyun.com/EzCUfST/article/details/47210039</link><guid>https://blog.youkuaiyun.com/EzCUfST/article/details/47210039</guid><author>EzCUfST</author><pubDate>Sun, 02 Aug 2015 19:39:35 +0800</pubDate><description><![CDATA[区间覆盖，和一般的区间覆盖问题的区别是每个覆盖的区间是有颜色的，最后要输出可见的颜色个数。对于每个区间操作，我们可以采用懒标记的思想，等到有其他区间覆盖过来时，将该区间的颜色向下传递。具体见代码。
#include 
#include 
#include 

using namespace std;

struct node
{
    int l,r;
};
node a[10002];

i]]></description><category></category></item><item><title><![CDATA[poj 3468 线段树+懒标记]]></title><link>https://blog.youkuaiyun.com/EzCUfST/article/details/47209989</link><guid>https://blog.youkuaiyun.com/EzCUfST/article/details/47209989</guid><author>EzCUfST</author><pubDate>Sun, 02 Aug 2015 19:29:46 +0800</pubDate><description><![CDATA[简单的线段树区间求和问题，每次改变区间值得时候采用懒标记的操作，等到下次经过这个区间的时候再将懒标记向下传递。#include 
#include 

using namespace std;

int n,q;
int a[100005];
long long sum[500005],lazy[500005];

void build(int l,int r,int k)
{
    lazy[]]></description><category></category></item><item><title><![CDATA[CodeForces 19D 离散化+线段树+set]]></title><link>https://blog.youkuaiyun.com/EzCUfST/article/details/47204779</link><guid>https://blog.youkuaiyun.com/EzCUfST/article/details/47204779</guid><author>EzCUfST</author><pubDate>Sun, 02 Aug 2015 10:05:49 +0800</pubDate><description><![CDATA[题意给出三种操作1.add x y将点(x,y)加入坐标系,2.remove x y将x y移出坐标系,3.find x y找到坐标系中在(x,y)的右上方且最近的点。
    我们首先记录下每一步操作，进行离线处理。将横坐标进行离散化，这样的话我们可以利用lower_bound找到x对应离散化后的位置pos，对于每一个位置pos我们建立一个set，add操作时，我们将set中加入y即x[pos]]></description><category></category></item><item><title><![CDATA[hdu 1542 扫描线+线段树求矩阵面积并]]></title><link>https://blog.youkuaiyun.com/EzCUfST/article/details/47189211</link><guid>https://blog.youkuaiyun.com/EzCUfST/article/details/47189211</guid><author>EzCUfST</author><pubDate>Sat, 01 Aug 2015 19:54:26 +0800</pubDate><description><![CDATA[这几天想啃啃树，无意中找到了这个题，一方面练习一下线段树，另一方面学习一下离散化和扫描线的技巧。
      首先，离散化是必要的，因为x,y
      显然，离散化的数据不会有重复，这里要介绍一个函数unique,如果现在有一个长度为n的数组unique(a,a+n)返回一个迭代器（也就是指针），它的作用是将a数组中相同的元素都只出现一次,unique(a,a+n)-a就是a中不相同元素的]]></description><category></category></item><item><title><![CDATA[网络流初步]]></title><link>https://blog.youkuaiyun.com/EzCUfST/article/details/47132193</link><guid>https://blog.youkuaiyun.com/EzCUfST/article/details/47132193</guid><author>EzCUfST</author><pubDate>Wed, 29 Jul 2015 19:19:03 +0800</pubDate><description><![CDATA[最大流问题：如下图所示，有一个管道系统，源点是1，汇点是4，顶点之间的边表示有一条容量为权值的管道。问汇点可以接受的最大流量。这就是一个最大流问题。

  流网络：假设G(V,E)
 是一个有限的有向图，它的每条边(u,v)∈E都有一个非负值实数的容量c(u,v)
 。如果(u,v)不属于E，我们假设c(u,v)
 = 0 。我们区别两个顶点：一个源点s和一个汇点t。一道网络流是一个对于]]></description><category></category></item><item><title><![CDATA[hdu 1029 Ignatius and the Princess IV]]></title><link>https://blog.youkuaiyun.com/EzCUfST/article/details/47128227</link><guid>https://blog.youkuaiyun.com/EzCUfST/article/details/47128227</guid><author>EzCUfST</author><pubDate>Wed, 29 Jul 2015 15:13:58 +0800</pubDate><description><![CDATA[这倒题挺简单的，容易想到的一个办法是直接排序做，但是网上有一种更加巧妙的做法：
      由于所求的数的个数大于等于(n+1)/2，所以所求数出现的次数减去其他数出现的次数的差大于等于1.我们先假设读入的第一个数是所求数，它出现的次数是1，然后依次读入数据，每当读入数据和当前数相同时，出现的次数加一否则减一，当出现的次数减为0的时候，这个数就一定不可能是所求的数，此时，将当前的数作为所求数进行]]></description><category></category></item><item><title><![CDATA[hdu 1532 网络流]]></title><link>https://blog.youkuaiyun.com/EzCUfST/article/details/47123309</link><guid>https://blog.youkuaiyun.com/EzCUfST/article/details/47123309</guid><author>EzCUfST</author><pubDate>Wed, 29 Jul 2015 10:29:13 +0800</pubDate><description><![CDATA[这道题算是网络流最基础的一道题了吧，我是直接用的EK算法做的，直接套用模板就好了。
  有一定值得注意的就是，如果数据有重边的话，边的容量是读入的这条边的容量之和。
#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;

int n,m;                //n个顶点，m]]></description><category></category></item><item><title><![CDATA[hdu 1028 母函数]]></title><link>https://blog.youkuaiyun.com/EzCUfST/article/details/47121815</link><guid>https://blog.youkuaiyun.com/EzCUfST/article/details/47121815</guid><author>EzCUfST</author><pubDate>Wed, 29 Jul 2015 09:03:51 +0800</pubDate><description><![CDATA[这道题比较简单，可以说是母函数的模板题，直接套用模板就可以解了。
#include 
#include 

using namespace std;

int n;

int main()
{
    while (scanf("%d",&n)!=EOF)
    {
        int c1[150],c2[150];
        for (int i=0;i<=n;i++)
    ]]></description><category></category></item><item><title><![CDATA[母函数及其应用]]></title><link>https://blog.youkuaiyun.com/EzCUfST/article/details/47106573</link><guid>https://blog.youkuaiyun.com/EzCUfST/article/details/47106573</guid><author>EzCUfST</author><pubDate>Tue, 28 Jul 2015 15:59:13 +0800</pubDate><description><![CDATA[转自http://blog.youkuaiyun.com/ydykl/article/details/6655142


网上找的一篇讲组合数学的文章，讲的很不错

 

 先来说一说母函数，今天是第一次学。杭电关于母函数的PPT感觉不错，挺适合入门看看的。



什么是母函数？对于序列a0，a1，a2，…构造一函数：G(x)=a0+a1*x+a2*x^2+...G(x)就是序列a0,a]]></description><category></category></item><item><title><![CDATA[hdu 1027 康托展开求全排列]]></title><link>https://blog.youkuaiyun.com/EzCUfST/article/details/47105693</link><guid>https://blog.youkuaiyun.com/EzCUfST/article/details/47105693</guid><author>EzCUfST</author><pubDate>Tue, 28 Jul 2015 15:13:11 +0800</pubDate><description><![CDATA[{1,2,3,4,...,n}表示1,2,3,...,n的排列如 {1,2,3} 按从小到大排列一共6个。123 132 213 231 312 321 。

代表的数字 1 2 3 4 5 6 也就是把10进制数与一个排列对应起来。

他们间的对应关系可由康托展开来找到。

如我想知道321是{1,2,3}中第几个小的数可以这样考虑 ：

第一位是3，当第一位的数小于3时，那排列]]></description><category></category></item><item><title><![CDATA[二分图的最大匹配]]></title><link>https://blog.youkuaiyun.com/EzCUfST/article/details/47085617</link><guid>https://blog.youkuaiyun.com/EzCUfST/article/details/47085617</guid><author>EzCUfST</author><pubDate>Mon, 27 Jul 2015 16:35:13 +0800</pubDate><description><![CDATA[首先，介绍一些概念：
          二分图：二分图又称作二部图，是图论中的一种特殊模型。设G=(V,E)是一个无向图，如果顶点V可分割为两个互不相交的子集（A,B），并且图中的每条边（i,j）所关联的两个顶点i和j分别属于这两个不同的顶点集（i in A,j in B），则称图G为一个二分图。下图就是一个二分图：]]></description><category></category></item><item><title><![CDATA[hdu 1150 最小点覆盖]]></title><link>https://blog.youkuaiyun.com/EzCUfST/article/details/47085489</link><guid>https://blog.youkuaiyun.com/EzCUfST/article/details/47085489</guid><author>EzCUfST</author><pubDate>Mon, 27 Jul 2015 15:21:26 +0800</pubDate><description><![CDATA[题意大致是：有AB两台机器，A机器有n个模式，B机器有m个模式，k个任务，每个任务可以由AB其中一台机器完成，但需要不同的模式。机器每转换一次模式就要重启一次，机器初始时的模式是0，求重启的最小次数。
     我们首先将AB的不同模式看作一个二分图，对于每一个任务i，如果它可以由A机器的j模式或者B机器的k模式完成，就在j，k之间连一条边，那么，我们只需要找到最少的点，使这些点可以覆盖所有的边]]></description><category></category></item><item><title><![CDATA[hdu 1026 BFS+优先队列]]></title><link>https://blog.youkuaiyun.com/EzCUfST/article/details/47060433</link><guid>https://blog.youkuaiyun.com/EzCUfST/article/details/47060433</guid><author>EzCUfST</author><pubDate>Sat, 25 Jul 2015 21:55:04 +0800</pubDate><description><![CDATA[初看这道题就有一种感觉：这道题是搜索，但是普通的搜索绝对会TLE，但是又实在想不到什么好的方法做。百度了一下解题报告才知道这道题要加上优先队列的优化，先从时间小的结点开始扩展，这样的话保证每个结点只被搜索一次，并且被搜索到的时候对于这个结点来说，时间是最少的，所以我们只需扩展到右下角就停止搜索，这样的话时间复杂度就可以接受了。
     这道题由于要输出路径，所以采用一个数组标记，最后用递归的方]]></description><category></category></item><item><title><![CDATA[STL中栈、队列和优先队列的使用]]></title><link>https://blog.youkuaiyun.com/EzCUfST/article/details/47046249</link><guid>https://blog.youkuaiyun.com/EzCUfST/article/details/47046249</guid><author>EzCUfST</author><pubDate>Fri, 24 Jul 2015 20:48:49 +0800</pubDate><description><![CDATA[STL = Standard Template Library，即标准模板库，STL可分为容器(containers)、迭代器(iterators)、空间配置器(allocator)、配接器(adapters)、算法(algorithms)、仿函数(functors)六个部分。
      其中，容器分为三类：序列式容器，容器适配器和关联式容器。
      这里要说的栈、队列和优先队列属于容]]></description><category></category></item></channel></rss>