<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[学习笔记]]></title><description><![CDATA[每一天，每一步，回头看看，希望脚印始终没有淡去。]]></description><link>https://blog.youkuaiyun.com/dmx9208</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dmx9208]]></copyright><item><title><![CDATA[poj1088(记忆化搜索)]]></title><link>https://blog.youkuaiyun.com/dmx9208/article/details/7637662</link><guid>https://blog.youkuaiyun.com/dmx9208/article/details/7637662</guid><author>dmx9208</author><pubDate>Wed, 06 Jun 2012 12:42:08 +0800</pubDate><description><![CDATA[题意:中文题,不解释.
分析:应该是很典型的DP吧,用记忆化搜索实现,因为每个map[i][j]的dp[i][j]都是相同的值,也就是重叠子问题,所以只要每个点都搜索出最长路径,也就是dp[i][j].最后双重循环暴力找到最长的路径输出就行了.
wa的原因:题意的情况想少了,写代码的时候忘记了判断与四周相等的情况.
AC的代码:#include
#include
using namespac]]></description><category></category></item><item><title><![CDATA[poj1961(2406的推广)]]></title><link>https://blog.youkuaiyun.com/dmx9208/article/details/7632205</link><guid>https://blog.youkuaiyun.com/dmx9208/article/details/7632205</guid><author>dmx9208</author><pubDate>Mon, 04 Jun 2012 21:32:35 +0800</pubDate><description><![CDATA[题意:求前i个字符中重复的个数k(如果可以的话)
分析:完全就是2406,只不过2406是判断全部的
AC代码:

#include
#include
using namespace std;
char t[1000005];
int next[1000005];
int m;
void get_next(){
	next[0]=-1;
	int i,j=-1;
	for(i=1;i<m;]]></description><category></category></item><item><title><![CDATA[poj2406(next数组理解)]]></title><link>https://blog.youkuaiyun.com/dmx9208/article/details/7632078</link><guid>https://blog.youkuaiyun.com/dmx9208/article/details/7632078</guid><author>dmx9208</author><pubDate>Mon, 04 Jun 2012 20:53:40 +0800</pubDate><description><![CDATA[题意:能用最长子串重复得到原串,问重复多少次.
分析:需要考虑这种特殊情况azazaza,正确答案应该是1,所以说,需要判断len%(len-next[len])?=0.别的就是直接输出len/(len-next[len])就行,因为next[len]代表着后缀与前缀多少位是相同的,所以说,最长的肯定是len/(len-next[len]).
wa的原因:1A
AC代码:#include]]></description><category></category></item><item><title><![CDATA[poj2752(对next数组理解)]]></title><link>https://blog.youkuaiyun.com/dmx9208/article/details/7632029</link><guid>https://blog.youkuaiyun.com/dmx9208/article/details/7632029</guid><author>dmx9208</author><pubDate>Mon, 04 Jun 2012 20:35:02 +0800</pubDate><description><![CDATA[题意:求出串中所有前缀和后缀相同的情况的相同字串的长度.
分析:因为要找后缀与前缀相同,只需判断next中最后一个的值,因为next[len]代表的是s[0~next[len]-1]与s[len-next[len]~len-1]两个串相同,所以如果存在,则继续向前找,如果最后以为就不匹配说明只有当长度为len时才会发生前缀与后缀相同.也就是说原串全选,前缀和后缀肯定是相同的.
wa的原因:1A]]></description><category></category></item><item><title><![CDATA[poj3461(kmp模版题)]]></title><link>https://blog.youkuaiyun.com/dmx9208/article/details/7632001</link><guid>https://blog.youkuaiyun.com/dmx9208/article/details/7632001</guid><author>dmx9208</author><pubDate>Mon, 04 Jun 2012 20:23:06 +0800</pubDate><description><![CDATA[题意:求短串在长串中有几个.
分析:直接kmp模版.因为next是指短串对自身的匹配,其中的数字next[i]一定满足s[0~next[i]-1]与s[i-next[i]+1~i]是相同的串,所以很显然可以用此方法求出在长串对短串的匹配,如果j==lenb,则证明有该串.
wa的原因:1A
AC代码:
#include
#include
#include
using namespace s]]></description><category></category></item><item><title><![CDATA[程序员技术练级攻略(转自http://coolshell.cn)]]></title><link>https://blog.youkuaiyun.com/dmx9208/article/details/7624247</link><guid>https://blog.youkuaiyun.com/dmx9208/article/details/7624247</guid><author>dmx9208</author><pubDate>Fri, 01 Jun 2012 17:52:47 +0800</pubDate><description><![CDATA[月光博客6月12日发表了《写给新手程序员的一封信》，翻译自《An
 open letter to those who want to start programming》，我的朋友（他在本站的id是Mailper）告诉我，他希望在酷壳上看到一篇更具操作性的文章。因为他也是喜欢编程和技术的家伙，于是，我让他把他的一些学习Python和Web编程的一些点滴总结一下。于是他给我发来了一些他的心得和经历]]></description><category></category></item><item><title><![CDATA[poj1226(字符串)]]></title><link>https://blog.youkuaiyun.com/dmx9208/article/details/7623265</link><guid>https://blog.youkuaiyun.com/dmx9208/article/details/7623265</guid><author>dmx9208</author><pubDate>Fri, 01 Jun 2012 14:03:33 +0800</pubDate><description><![CDATA[题意：找出给出的n个串中的最长的公共字串，输出其长度。
分析：这道题比较水，KMP，string，strstr应该是都能过的，暴力就行。
wa的原因：这题比较颠覆我的世界观，一模一样的代码，scanf无限TLE，全改成cin AC。不理解是为什么，求大牛指点。
AC的代码：#include
#include
#include
#include
using namespace std;
cha]]></description><category></category></item><item><title><![CDATA[KMP算法详解]]></title><link>https://blog.youkuaiyun.com/dmx9208/article/details/7623011</link><guid>https://blog.youkuaiyun.com/dmx9208/article/details/7623011</guid><author>dmx9208</author><pubDate>Fri, 01 Jun 2012 12:39:32 +0800</pubDate><description><![CDATA[kmp模板：#include
#include
using namespace std;

string a,b;
int p[10000];
int i,j,m,n;

int main(){
    cin>>a;
    cin>>b;
    n=a.length();
    m=b.length();
    p[0]=-1;
    j=-1;
    for(i=1;i<=b.le]]></description><category></category></item><item><title><![CDATA[poj2121(简单模拟题)]]></title><link>https://blog.youkuaiyun.com/dmx9208/article/details/7622122</link><guid>https://blog.youkuaiyun.com/dmx9208/article/details/7622122</guid><author>dmx9208</author><pubDate>Fri, 01 Jun 2012 07:49:52 +0800</pubDate><description><![CDATA[题意：给出英文，翻译成数字形式。
分析：运用sscanf函数将每个数字提取出来，用num[i]存这些数字，数字中有100,1000,1000000是位权，因为如果像普通的比如twenty two的话，只要简单的相加。那么碰到关键词我是这么想的，我建立四个int型变量hsum，tsum，msum和sum。看名字可以看出hsum就是用来存碰到关键词hundred时的和，其他依此类推，sum就存没有关]]></description><category></category></item><item><title><![CDATA[poj1067(经典博弈问题)]]></title><link>https://blog.youkuaiyun.com/dmx9208/article/details/7617695</link><guid>https://blog.youkuaiyun.com/dmx9208/article/details/7617695</guid><author>dmx9208</author><pubDate>Wed, 30 May 2012 20:29:35 +0800</pubDate><description><![CDATA[题意：有两堆石子，数量任意，可以不同。游戏开始由两个人轮流取石子。游戏规定，每次有两种不同的取法，一是可以在任意的一堆中取走任意多的石子；二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目，如果轮到你先取，假设双方都采取最好的策略，问最后你是胜者还是败者。
分析：不明原理，通过画二维图，可以发现（0,0）（1,2）（3,5）（4,7）（6,9）……于]]></description><category></category></item><item><title><![CDATA[poj3628(01背包问题)]]></title><link>https://blog.youkuaiyun.com/dmx9208/article/details/7617645</link><guid>https://blog.youkuaiyun.com/dmx9208/article/details/7617645</guid><author>dmx9208</author><pubDate>Wed, 30 May 2012 20:05:15 +0800</pubDate><description><![CDATA[题意：就是给出n和b，然后给出n个数，用这n个数中的某些，求出一个和，这个和是>=b的最小值，输出最小值与b的差。
分析：这道题很简单，是很明显的01背包问题，这里的n个物品，每个物品的重量为c[i]，价值为w[i]并且c[i]==w[i]，，容量为所有c[i]的和sum。只要在f[]中从头开始找，找到一个最小>=b的就是题目要的解
wa的原因：最开始把b当成了容量。
AC的代码：

#]]></description><category></category></item><item><title><![CDATA[poj2419]]></title><link>https://blog.youkuaiyun.com/dmx9208/article/details/7613893</link><guid>https://blog.youkuaiyun.com/dmx9208/article/details/7613893</guid><author>dmx9208</author><pubDate>Tue, 29 May 2012 19:33:05 +0800</pubDate><description><![CDATA[题意：个人认为此题主要就是读题，读题明白了就没啥了。题意就是说每个人都听到有树倒下，如果两个人听到的倒下的树都一样，则他们是一个想法，否则就不是一个想法。题目让求一共有多少种不同的想法。
分析：非常暴力的模拟了，开一个二维数组[i][j],i表示人的编号，j表示该人听到的数编号。初始想法数为人数，暴力对比，如果两人所有j相同，则想法数n--;全都循环过输出。
wa的原因：1A。
AC代码：]]></description><category></category></item><item><title><![CDATA[poj1363]]></title><link>https://blog.youkuaiyun.com/dmx9208/article/details/7613123</link><guid>https://blog.youkuaiyun.com/dmx9208/article/details/7613123</guid><author>dmx9208</author><pubDate>Tue, 29 May 2012 16:07:43 +0800</pubDate><description><![CDATA[题意：给出数据，如果进栈的方式为1……N，判断该数据能否是出栈的顺序。
分析：用栈的知识模拟就可以A掉，用x表示进栈的数，y表示出栈的下一个需要的序号，用数组模拟栈，比较x，y是否相等，若等，则等于进栈再直接出栈;若不等，则x进栈，再比较y和栈顶是否相等，若等，出栈，否则进行下一次循环，追后若y都能出来， 则有该序列，否则输出No。
wa的原因：代码实现的时候少写了一条语句。
AC代码:]]></description><category></category></item></channel></rss>