<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[L&J COME!!!!]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lishiming030</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lishiming030]]></copyright><item><title><![CDATA[一篇关于A*的文章相当好]]></title><link>https://blog.youkuaiyun.com/lishiming030/article/details/13276349</link><guid>https://blog.youkuaiyun.com/lishiming030/article/details/13276349</guid><author>lishiming030</author><pubDate>Sun, 27 Oct 2013 21:53:17 +0800</pubDate><description><![CDATA[http://theory.stanford.edu/~amitp/GameProgramming/]]></description><category></category></item><item><title><![CDATA[后缀数组模板]]></title><link>https://blog.youkuaiyun.com/lishiming030/article/details/12617305</link><guid>https://blog.youkuaiyun.com/lishiming030/article/details/12617305</guid><author>lishiming030</author><pubDate>Fri, 11 Oct 2013 15:10:44 +0800</pubDate><description><![CDATA[/*   suffix array
   倍增算法   O(n*lgn)   
   build_sa( ,n+1, )   注意n+1
   getHeight( , n)

 n        =  8 ；
 num[]    = { 1, 1, 2, 1, 1, 1, 1, 2, $ }.   注意num数组最后一位值为0，其它位须大于0!
 rank[]   = { 4, 6, 8, 1,]]></description><category></category></item><item><title><![CDATA[poj 2392]]></title><link>https://blog.youkuaiyun.com/lishiming030/article/details/11789323</link><guid>https://blog.youkuaiyun.com/lishiming030/article/details/11789323</guid><author>lishiming030</author><pubDate>Tue, 17 Sep 2013 23:54:42 +0800</pubDate><description><![CDATA[对于m的容量的背包，对于n个物品所能得到的最大值，最优解中a值最大的物品，放到背包的他所能放置的最上方，并且有多少放多少到最上面（最优解中a值小于他的还是可以放），可知这样做不会丢失最优解。所以对于前n个物品，先决策a值最大的物品放多少个，并且放置在他所能放置的最上方，再决策于剩下的容量和剩下的物品的最优解。所以先对物品按a值排序，即f[i[j]=max(f[i-1][j-k*h[i]]+h[i]]]></description><category></category></item><item><title><![CDATA[poj 3225]]></title><link>https://blog.youkuaiyun.com/lishiming030/article/details/11781203</link><guid>https://blog.youkuaiyun.com/lishiming030/article/details/11781203</guid><author>lishiming030</author><pubDate>Tue, 17 Sep 2013 18:34:52 +0800</pubDate><description><![CDATA[这道题目纠结死了，想了各种实现终于A了。还有没看清题意，空集的时候没输出“empty set”,wa到吐。

线段树成段更新。
U:把区间[l,r]覆盖成1
 I:把[-∞,l)(r,∞]覆盖成0
 D:把区间[l,r]覆盖成0
 C:把[-∞,l)(r,∞]覆盖成0 , 且[l,r]区间0/1互换

开闭区间的问题可以把（i,i+1）抽象为一个点，最后得到2*65535+1个点，]]></description><category></category></item><item><title><![CDATA[hdu 4734]]></title><link>https://blog.youkuaiyun.com/lishiming030/article/details/11772291</link><guid>https://blog.youkuaiyun.com/lishiming030/article/details/11772291</guid><author>lishiming030</author><pubDate>Tue, 17 Sep 2013 15:02:02 +0800</pubDate><description><![CDATA[简单数位DP，f[i][j]表示i位的数字有多少个数权值小于j,i位的数是实际意义的i位数，就是是以1--9开头，不包括0、

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define eps 1e-8
#define LL long l]]></description><category></category></item><item><title><![CDATA[hdu 4406]]></title><link>https://blog.youkuaiyun.com/lishiming030/article/details/11578975</link><guid>https://blog.youkuaiyun.com/lishiming030/article/details/11578975</guid><author>lishiming030</author><pubDate>Wed, 11 Sep 2013 20:38:55 +0800</pubDate><description><![CDATA[最大费用流，就是流量不固定的最大费用流。不一定是最大流。
就是经典的费用与流量平方成正比的最小流（白书上有）模型的应用。
一个流，代表一个分配。如果所有科目都及格的话，直接拆边就可以了。
这里要考虑的就是如果科目不及格的情况。考虑如何加边能够使最大费用流是保证所有的不及格的科目都及格这一条件下的最大费用流，向s和表示各个不及格科目的节点之间连一条费用足够大（这个”大“大于所有科目（不及格的定]]></description><category></category></item><item><title><![CDATA[HDU 3535]]></title><link>https://blog.youkuaiyun.com/lishiming030/article/details/10421171</link><guid>https://blog.youkuaiyun.com/lishiming030/article/details/10421171</guid><author>lishiming030</author><pubDate>Wed, 28 Aug 2013 00:39:58 +0800</pubDate><description><![CDATA[定义f[i][j][k]为对于前i个组，前j个物品，容量为k，所有的选择都满足相应组的要求的最大值。
混合了三种情况。求解每个状态时，根据相应组的要求，分别进行不同的转移。状态转移方程，三种情况分别讨论，比较好想，具体代码。
可以滚动数组优化，不想优化了。今晚不想刷题T_T
#include 
#include 
#include 
#include 
#include 
#include]]></description><category></category></item><item><title><![CDATA[BNU 16225]]></title><link>https://blog.youkuaiyun.com/lishiming030/article/details/10368437</link><guid>https://blog.youkuaiyun.com/lishiming030/article/details/10368437</guid><author>lishiming030</author><pubDate>Tue, 27 Aug 2013 01:02:32 +0800</pubDate><description><![CDATA[#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define LL long long
#define myabs(x) ((x)>0?(x):(-(x)))
using namespace std;
const int inf=0x3f3f3f3f;
int main()
{
	LL]]></description><category></category></item><item><title><![CDATA[HDU 3033]]></title><link>https://blog.youkuaiyun.com/lishiming030/article/details/10362751</link><guid>https://blog.youkuaiyun.com/lishiming030/article/details/10362751</guid><author>lishiming030</author><pubDate>Mon, 26 Aug 2013 20:42:47 +0800</pubDate><description><![CDATA[如果枚举每组中选出的情况，情况太多，不行。后来又想对、先01背包求出每个组中每个容量至少选一个的最大值，再对整体进行01背包。容量太大，会超时。
后来想，直接对整体进行01背包就可以了，就和多重背包的01背包解法类似。但是为了保证最后的结果是没个组的至少选一个，所以状态f[]i[j]k][定义对于前i组，前j个物品，容量为k的每组至少选一个的最大值。可知f[i][j][k]=max(f[i-1]]]></description><category></category></item><item><title><![CDATA[poj 2923]]></title><link>https://blog.youkuaiyun.com/lishiming030/article/details/10303207</link><guid>https://blog.youkuaiyun.com/lishiming030/article/details/10303207</guid><author>lishiming030</author><pubDate>Sun, 25 Aug 2013 16:14:42 +0800</pubDate><description><![CDATA[思路看了http://blog.youkuaiyun.com/woshi250hua/article/details/7636061
不过是用记忆化搜索写的
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define LL long long
#define myabs(x) ((x)>0?]]></description><category></category></item><item><title><![CDATA[POJ 3686]]></title><link>https://blog.youkuaiyun.com/lishiming030/article/details/10219709</link><guid>https://blog.youkuaiyun.com/lishiming030/article/details/10219709</guid><author>lishiming030</author><pubDate>Fri, 23 Aug 2013 16:27:25 +0800</pubDate><description><![CDATA[尝试着用二分图最大完美匹配来求解此题。
把每个商品店j拆成n个点，分别代表倒数第p次在商品店加工，把每个order向每个点连线，权值为p*zij。然后用km求解。
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define LL long long
#define myabs(x]]></description><category></category></item><item><title><![CDATA[POJ 2516]]></title><link>https://blog.youkuaiyun.com/lishiming030/article/details/10183631</link><guid>https://blog.youkuaiyun.com/lishiming030/article/details/10183631</guid><author>lishiming030</author><pubDate>Thu, 22 Aug 2013 21:34:44 +0800</pubDate><description><![CDATA[还是不会建模。。。每个商定所需的物品可能来自不同的仓库，细化就是每一类物品可能来自不同的仓库，再细化就是每一个物品在最后的结果中都有一个在某个仓库中的物品与其匹配。所以对于每一个物品建点，商店的为x集合，仓库的为y集合。在相同的物品见连线，最后用KM求解。其实题目已经给出了提示，k很小0~3，直接对每个物品建图即可。]]></description><category></category></item><item><title><![CDATA[poj 2226]]></title><link>https://blog.youkuaiyun.com/lishiming030/article/details/10160897</link><guid>https://blog.youkuaiyun.com/lishiming030/article/details/10160897</guid><author>lishiming030</author><pubDate>Wed, 21 Aug 2013 21:39:58 +0800</pubDate><description><![CDATA[板子可以横着或竖着放。最后就是求用最少的横着放的或竖着放的板子覆盖所有的‘*’。可知，如果要放一个板子，因为板子可以重叠，所以要放就要把连续的一整块都覆盖。一个‘*’可以被其所在的横着的板子和竖着的板子所覆盖。找出所有可供选择的横着放和竖着放的板子，问题就转化为了从中选取一些板子能覆盖所有的‘*’，二分图最小覆盖解决，横着的板子为点集x，竖着的板子为点集y。
#include 
#include]]></description><category></category></item><item><title><![CDATA[POJ 2594]]></title><link>https://blog.youkuaiyun.com/lishiming030/article/details/10134869</link><guid>https://blog.youkuaiyun.com/lishiming030/article/details/10134869</guid><author>lishiming030</author><pubDate>Wed, 21 Aug 2013 10:20:27 +0800</pubDate><description><![CDATA[还是DAG上的最少路径覆盖，此题说有的点可以重复走，最后的选择结果，一个点所在路径的下一个点不管是怎么到达的，只要可达就可以。用二分匹配求最少路径覆盖，二分图中边的含义就是i下一个点可走j，所以建二分图时，只要两点可达就连边。floyd求是否可达。
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#inc]]></description><category></category></item><item><title><![CDATA[POJ 2060]]></title><link>https://blog.youkuaiyun.com/lishiming030/article/details/10129483</link><guid>https://blog.youkuaiyun.com/lishiming030/article/details/10129483</guid><author>lishiming030</author><pubDate>Wed, 21 Aug 2013 00:58:33 +0800</pubDate><description><![CDATA[DAG最少路径覆盖、
忽略了从一个点到另一个点也要算时间，检查了一晚上，~~~~~
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define LL long long
#define myabs(x) ((x)>0?(x):(-(x)))
using namespace std]]></description><category></category></item><item><title><![CDATA[2-SAT模板]]></title><link>https://blog.youkuaiyun.com/lishiming030/article/details/10125119</link><guid>https://blog.youkuaiyun.com/lishiming030/article/details/10125119</guid><author>lishiming030</author><pubDate>Tue, 20 Aug 2013 21:51:43 +0800</pubDate><description><![CDATA[int dfs(int u)
	{
		if(mark[u]) return 1;
		if(mark[u^1]) return 0;
		mark[u]=1;
		S[top++]=u;
		int i,v;
		for(i=head[u];i!=-1;i=e[i].next)
		{
			v=e[i].v;
			if(!dfs(v)) return 0;
		}
		return 1;]]></description><category></category></item><item><title><![CDATA[强连通分量模板]]></title><link>https://blog.youkuaiyun.com/lishiming030/article/details/10125079</link><guid>https://blog.youkuaiyun.com/lishiming030/article/details/10125079</guid><author>lishiming030</author><pubDate>Tue, 20 Aug 2013 21:48:12 +0800</pubDate><description><![CDATA[#include 
                        #include 
                        #include 
                        #include 
                        #include 
                        #include 
                    ]]></description><category></category></item><item><title><![CDATA[边双联通及其缩点]]></title><link>https://blog.youkuaiyun.com/lishiming030/article/details/10124949</link><guid>https://blog.youkuaiyun.com/lishiming030/article/details/10124949</guid><author>lishiming030</author><pubDate>Tue, 20 Aug 2013 21:41:44 +0800</pubDate><description><![CDATA[#include 
    #include 
    #include 
    #include 
    #include 
    #include 
    #define LL long long
    using namespace std;
    const int maxm=1000*2+10;
    const int maxn=1000+10;
    struct n]]></description><category></category></item><item><title><![CDATA[点双联通和二分图着色(二分图判定)模板]]></title><link>https://blog.youkuaiyun.com/lishiming030/article/details/10124229</link><guid>https://blog.youkuaiyun.com/lishiming030/article/details/10124229</guid><author>lishiming030</author><pubDate>Tue, 20 Aug 2013 21:12:55 +0800</pubDate><description><![CDATA[void dfs(int u,int fa)
        {
            pre[u]=low[u]=++dfs_clock;//不想改了，ow不用定义成数组，直接定义一个变量 lowu就行了            int i,j;
            node tem;
            for(i=1;i<=n;i++)  //
            {]]></description><category></category></item><item><title><![CDATA[hdu 1059]]></title><link>https://blog.youkuaiyun.com/lishiming030/article/details/10121891</link><guid>https://blog.youkuaiyun.com/lishiming030/article/details/10121891</guid><author>lishiming030</author><pubDate>Tue, 20 Aug 2013 19:43:08 +0800</pubDate><description><![CDATA[多重背包二进制拆分思想
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define LL long long
#define myabs(x) ((x)>0?(x):(-(x)))
using namespace std;
const int inf=0x3f3f3f3f;
int]]></description><category></category></item></channel></rss>