<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[浅空之下]]></title><description><![CDATA[ichirin|我的软件之路]]></description><link>https://blog.youkuaiyun.com/lencle</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lencle]]></copyright><item><title><![CDATA[7.23]]></title><link>https://blog.youkuaiyun.com/lencle/article/details/9456071</link><guid>https://blog.youkuaiyun.com/lencle/article/details/9456071</guid><author>lencle</author><pubDate>Wed, 24 Jul 2013 21:47:10 +0800</pubDate><description><![CDATA[今天本打算搞带通配符的KMP，按照自己的想法写了一下，死活不对，后来发现带"?"时，next是不对的，kmp应该解不了。
     性质类似的AC自动机应许能解。又重温了一遍，将动态写成静态，过了hdu两道题（2222，2896）。感触：AC自动机的Fail比kmp的next直观多了。
       最后，弄了弄昨天多校没过的DEQUE，现在思路就清晰多了，可能当时对自己想的算法的正确性始终保]]></description><category></category></item><item><title><![CDATA[poj4047 线段树]]></title><link>https://blog.youkuaiyun.com/lencle/article/details/7606007</link><guid>https://blog.youkuaiyun.com/lencle/article/details/7606007</guid><author>lencle</author><pubDate>Sun, 27 May 2012 09:23:37 +0800</pubDate><description><![CDATA[//poj4047 
#include 
using namespace std;
#define maxn 200100
#define LL(x) (x<<1)
#define RR(x) (x<<1|1)
struct Seg {
       int l,r,v,c;
       int len() {return (r-l+1);}
}a[maxn*3];
void buildtree]]></description><category></category></item><item><title><![CDATA[poj4044 白开水~]]></title><link>https://blog.youkuaiyun.com/lencle/article/details/7562882</link><guid>https://blog.youkuaiyun.com/lencle/article/details/7562882</guid><author>lencle</author><pubDate>Sun, 13 May 2012 20:12:36 +0800</pubDate><description><![CDATA[好久没刷题了，也好久没更新了。碰巧A了到新出的水题，便把题解放这吧。题意很简单，因此代码也很渣的= =
#include 
#include 
using namespace std;
int n,m,p1,p2,t,tmp,l,maxl,a[110],b[110],c[110];
bool v[110];
bool cmp1(int a,int b) {
     return a>b;
}]]></description><category></category></item><item><title><![CDATA[poj2034 dfs]]></title><link>https://blog.youkuaiyun.com/lencle/article/details/7475378</link><guid>https://blog.youkuaiyun.com/lencle/article/details/7475378</guid><author>lencle</author><pubDate>Wed, 18 Apr 2012 21:50:50 +0800</pubDate><description><![CDATA[冯如杯完了，有时间可以惬意的刷几道了。
这题是求n到m的一个排列，满足相邻的2个，3个……d个数的和都不为素数（都要满足）。
然后上代码，挺简单，是所以发代码，是觉得自己写得比较漂亮。（呵呵，不要喷我）
#include 
using namespace std;
bool ans,p[10010],h[1010];
int n,m,d,a[1010],sum[11];
void dfs(i]]></description><category></category></item><item><title><![CDATA[poj3026 bfs mst]]></title><link>https://blog.youkuaiyun.com/lencle/article/details/7350513</link><guid>https://blog.youkuaiyun.com/lencle/article/details/7350513</guid><author>lencle</author><pubDate>Tue, 13 Mar 2012 20:54:50 +0800</pubDate><description><![CDATA[挺综合的一题，就是空格有些无语，多亏discuss前辈们的指点。
渣代码抛砖引玉。
#include 
#include 
using namespace std;
#define maxn 1010
#define maxm 100010
#define INF 100000000
int cas,n,m;
char s[110][110];
struct edge {
       int]]></description><category></category></item><item><title><![CDATA[poj3682 概率]]></title><link>https://blog.youkuaiyun.com/lencle/article/details/7325245</link><guid>https://blog.youkuaiyun.com/lencle/article/details/7325245</guid><author>lencle</author><pubDate>Tue, 06 Mar 2012 16:07:07 +0800</pubDate><description><![CDATA[几何分布:在第n次伯努利试验，才得到第一次成功的机率。详细的说，是：n次伯努利试验，前n-1次皆失败，第n次才成功的概率。
P(X=k)=p*(1-p)^(k-1)
EX=1/p
DX=(1-p)/(p^2)
巴斯卡分布可视作k个几何分布，如题意。
EX=k/p
DX=k*(1-p)/(p^2)]]></description><category></category></item><item><title><![CDATA[poj2002 数正方形 hash]]></title><link>https://blog.youkuaiyun.com/lencle/article/details/7317366</link><guid>https://blog.youkuaiyun.com/lencle/article/details/7317366</guid><author>lencle</author><pubDate>Sun, 04 Mar 2012 10:38:02 +0800</pubDate><description><![CDATA[直接上渣代码了
#include 
using namespace std;
struct gtype {
       int x,y,next;
}g[3000];
int first[1000100],tot,n,x[3010],y[3010],ans,h,tx,ty;
int hash(int x,int y) {
    return (40000*x+y+800040000)%999]]></description><category></category></item><item><title><![CDATA[poj3003&2397 DP 记录路径]]></title><link>https://blog.youkuaiyun.com/lencle/article/details/7311563</link><guid>https://blog.youkuaiyun.com/lencle/article/details/7311563</guid><author>lencle</author><pubDate>Fri, 02 Mar 2012 11:01:43 +0800</pubDate><description><![CDATA[这两题是一模一样的
最近做了好多这种背包的题，但是这题需弄清的地方还是不少，有些绕
f[][]数组其实是可以省的
#include 
#define oo 10000000
using namespace std;
int cas,n,a[1010],p,q,dp[2][1010],pre[41][1010];
bool f[2][1010],ans[41];
int main() {]]></description><category></category></item><item><title><![CDATA[poj1717 DP]]></title><link>https://blog.youkuaiyun.com/lencle/article/details/7299520</link><guid>https://blog.youkuaiyun.com/lencle/article/details/7299520</guid><author>lencle</author><pubDate>Mon, 27 Feb 2012 19:31:04 +0800</pubDate><description><![CDATA[A得很艰辛啊，虽然看上去很简单，但还是要整理好思路，而且有很多地方要注意细节！
#include 
#include 
using namespace std;
#define oo 10000000
int gap,x,y,a[1010],dp[12010][2],p,q,j,jl,n;
int main() {
    while (~scanf("%d",&n)) {]]></description><category></category></item><item><title><![CDATA[poj 1570 floyd]]></title><link>https://blog.youkuaiyun.com/lencle/article/details/7294238</link><guid>https://blog.youkuaiyun.com/lencle/article/details/7294238</guid><author>lencle</author><pubDate>Sat, 25 Feb 2012 20:38:46 +0800</pubDate><description><![CDATA[这题过的人很少，却意外的很水呢
#include 
#include 
#include 
using namespace std;
char ch;
int k1,k2,a[201][201][2],tot,g;
string s,ss;
map ma;
int gcd(int a,int b) {
    if (b==0) return a;
    else return gcd(b,a]]></description><category></category></item><item><title><![CDATA[poj1293 DP背包]]></title><link>https://blog.youkuaiyun.com/lencle/article/details/7293780</link><guid>https://blog.youkuaiyun.com/lencle/article/details/7293780</guid><author>lencle</author><pubDate>Sat, 25 Feb 2012 16:41:57 +0800</pubDate><description><![CDATA[两种物品，放到n个盒子，要求所有盒子放满，且每个盒子只有一种物品，物品可以有剩余
解法：将盒子视为物品，第一种物品为背包大小，进行DP并且记录路径，回溯可得放第一种物品的最优方案（目的是为了是放第二种物品的盒子总容积尽可能小），最后在判断一下就行了。
#include 
using namespace std;
int M,L,c[1010],dp[1010],n,pre[1010],sum,]]></description><category></category></item><item><title><![CDATA[poj3314 堆木块 模拟]]></title><link>https://blog.youkuaiyun.com/lencle/article/details/7278178</link><guid>https://blog.youkuaiyun.com/lencle/article/details/7278178</guid><author>lencle</author><pubDate>Tue, 21 Feb 2012 09:44:41 +0800</pubDate><description><![CDATA[往箱子里堆木块，放满一个箱子（比它的高度高），则接着从一个新箱子开始放，求每个箱子木块的高度。
#include 
using namespace std;
struct data {
       int up[11],down[11],h;
}a[101];
int n,w,b,t,now,tot,tmp,ans[101];
bool empty;
char s[101][11];
int]]></description><category></category></item><item><title><![CDATA[poj3311 状态压缩]]></title><link>https://blog.youkuaiyun.com/lencle/article/details/7272978</link><guid>https://blog.youkuaiyun.com/lencle/article/details/7272978</guid><author>lencle</author><pubDate>Sun, 19 Feb 2012 20:04:37 +0800</pubDate><description><![CDATA[和2817很像
虽然短小，但是很典型，故作文以记之。
求全排列后的最优值。
dp[i][j]表示状态为j时，第i个为最后添加的 时的最优值
#include 
using namespace std;
#define oo 10000000
int p[11]={1,2,4,8,16,32,64,128,256,512,1024};
int g[11][11],dp[11][1026],n]]></description><category></category></item><item><title><![CDATA[poj1703 并查集]]></title><link>https://blog.youkuaiyun.com/lencle/article/details/7221538</link><guid>https://blog.youkuaiyun.com/lencle/article/details/7221538</guid><author>lencle</author><pubDate>Tue, 31 Jan 2012 11:15:25 +0800</pubDate><description><![CDATA[我真的是太弱了，想得很复杂，最后网上一看，原来这么简单的想法就搞定了……
#include 
using namespace std;
int f[200001],n,m,x,y,cas;
char c;
int find(int x) {
    if (x!=f[x]) f[x] = find(f[x]);
    return f[x]; 
}
void Union(int x,int y]]></description><category></category></item><item><title><![CDATA[poj1042 贪心]]></title><link>https://blog.youkuaiyun.com/lencle/article/details/7213438</link><guid>https://blog.youkuaiyun.com/lencle/article/details/7213438</guid><author>lencle</author><pubDate>Sat, 21 Jan 2012 16:06:09 +0800</pubDate><description><![CDATA[整个一挫题。
我用优先队列贪心，需注意的是排序，以及湖的鱼数小于等于零时为零。
#include 
#include 
using namespace std;
struct data {
       int f,d,id;
}a[30],b;
int n,t,tran[30],x,ans,maxi,save[30],tmp[30],tt;
priority_queue  q;
bool o]]></description><category></category></item><item><title><![CDATA[poj1037 DP]]></title><link>https://blog.youkuaiyun.com/lencle/article/details/7211941</link><guid>https://blog.youkuaiyun.com/lencle/article/details/7211941</guid><author>lencle</author><pubDate>Fri, 20 Jan 2012 11:14:28 +0800</pubDate><description><![CDATA[转载：http://archive.cnblogs.com/a/2122079/
up[n][k]         长度为n以k开始的，前两个数呈上升趋势的数列的个数
down[n][k]     长度为n以k开始的，前两个数呈下降趋势的数列的个数
up[n][k] = sigma(down[n-1][i])      k
down[n][k]= sigma(up[n-1][i])]]></description><category></category></item><item><title><![CDATA[poj1033 磁盘碎片]]></title><link>https://blog.youkuaiyun.com/lencle/article/details/7208690</link><guid>https://blog.youkuaiyun.com/lencle/article/details/7208690</guid><author>lencle</author><pubDate>Wed, 18 Jan 2012 11:00:34 +0800</pubDate><description><![CDATA[模拟磁盘碎片整理，写的晕了~
方法：能移就移，不然处理其所在链或环
#include 
using namespace std;
int v[10010],id[10010],m,n,k,tot,x,r;
bool loop,f;
int main() {
    while (~scanf("%d%d",&m,&n)) {
          tot = 0;
          memse]]></description><category></category></item><item><title><![CDATA[poj1027 模拟]]></title><link>https://blog.youkuaiyun.com/lencle/article/details/7208012</link><guid>https://blog.youkuaiyun.com/lencle/article/details/7208012</guid><author>lencle</author><pubDate>Tue, 17 Jan 2012 21:51:12 +0800</pubDate><description><![CDATA[虽然不长，但仍写了很长时间……
#include 
#include 
using namespace std;
int cas,tmp,ans,tot,sum,k,x,y;
bool v[11][16];
string a[11];
char c;
int dx[4] = {0,1,0,-1};
int dy[4] = {1,0,-1,0};
void clear(int x,int y) {]]></description><category></category></item><item><title><![CDATA[poj1021 概率，最小表示]]></title><link>https://blog.youkuaiyun.com/lencle/article/details/7206072</link><guid>https://blog.youkuaiyun.com/lencle/article/details/7206072</guid><author>lencle</author><pubDate>Mon, 16 Jan 2012 23:59:53 +0800</pubDate><description><![CDATA[这个真的很强！网上找的：
唯一的难点是，怎么判断连成一片的棋子形状相同？ 一个基于概率的算法是：给每一颗棋子计算一个值，根据这个值是否相等来推测它所在的一片棋子的形状是否相等。计算出每颗棋子的值后对其进行排序，若两副棋盘生成的序列完全相等则推测其等价。
   
至于这个值如何定，我的设计为：每颗棋子在其水平方向和垂直方向与其相连的棋子总数+1（自己）。比如左图的C，这个值为水平相连2颗(AB]]></description><category></category></item><item><title><![CDATA[poj1024 bfs]]></title><link>https://blog.youkuaiyun.com/lencle/article/details/7205911</link><guid>https://blog.youkuaiyun.com/lencle/article/details/7205911</guid><author>lencle</author><pubDate>Mon, 16 Jan 2012 21:50:45 +0800</pubDate><description><![CDATA[这题写的很苦手啊，详解见poj discuss.
#include 
#include 
#include 
using namespace std;
struct point{
       int x,y;
};
int g[101][101][5],cas,n,m,k,x1[1010],x2[1010],y1[1010],y2[1010];
int a[101][101],b[101][1]]></description><category></category></item></channel></rss>