<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[birdforever的专栏]]></title><description><![CDATA[人之所以痛苦，在于追求错误的东西。]]></description><link>https://blog.youkuaiyun.com/birdforever</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; birdforever]]></copyright><item><title><![CDATA[Git的一些小技巧]]></title><link>https://blog.youkuaiyun.com/birdforever/article/details/6916915</link><guid>https://blog.youkuaiyun.com/birdforever/article/details/6916915</guid><author>birdforever</author><pubDate>Sat, 29 Oct 2011 15:39:54 +0800</pubDate><description><![CDATA[git 是我接触比较多的一个源代码管理工具，个人感觉非常灵活，虽然命令体系很庞大，但常用的就那么几个。
现将工作中常常遇到的一些问题的解决技巧贴上。算是备忘吧。
先上几个常用的配套工具：
gitk / tig : gitk是一个图形化的git，可以看到代码的整个分支树，查看每个分支的DIFF等详细信息，tig实现同样功能，只是能在终端里直观地显示，对终端控来说是个不错的选择！
tree:]]></description><category></category></item><item><title><![CDATA[我与Android的故事之- MM应用市场游戏开发]]></title><link>https://blog.youkuaiyun.com/birdforever/article/details/6580154</link><guid>https://blog.youkuaiyun.com/birdforever/article/details/6580154</guid><author>birdforever</author><pubDate>Sat, 02 Jul 2011 11:45:32 +0800</pubDate><description><![CDATA[ PainterBee-接下来就是见证创意的时刻没有想过，在自己的手机上跑着自己参与创作的游戏。。。      2010年9月份，也就是大三刚开学的时候，我应同学之邀加入了一个移动开发团队，主打Android开发，并参加了一些比赛。刚接触Android开发就爱上了这个平台，不逊色于iphone的酷炫界面，强大的传感器功能，让我目不瑕接。那时除了上课就看Android开发的书，心里一直想开发一个属于]]></description><category></category></item><item><title><![CDATA[poj 1141 Brackets Sequence]]></title><link>https://blog.youkuaiyun.com/birdforever/article/details/6001235</link><guid>https://blog.youkuaiyun.com/birdforever/article/details/6001235</guid><author>birdforever</author><pubDate>Wed, 10 Nov 2010 21:09:00 +0800</pubDate><description><![CDATA[<br />// source code of submission 343733, Zhongshan University Online Judge System
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
#include <stack>
using namespace]]></description><category></category></item><item><title><![CDATA[poj 2762 Going from u to v or from v to u?]]></title><link>https://blog.youkuaiyun.com/birdforever/article/details/5957023</link><guid>https://blog.youkuaiyun.com/birdforever/article/details/5957023</guid><author>birdforever</author><pubDate>Thu, 21 Oct 2010 16:51:00 +0800</pubDate><description><![CDATA[<br />// poj 2762 Going from u to v or from v to u?
/*
题意： 判断一个有向图中是否任意两点都至少满足一点到另一点可达
题解： Robert Sedgewick著《C++算法--图算法》P179
PS: 由于作业比较多，做题时间有限，未做太多优化，望见谅
*/
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

int n,m;]]></description><category></category></item><item><title><![CDATA[poj 2299 Ultra-QuickSort]]></title><link>https://blog.youkuaiyun.com/birdforever/article/details/5900139</link><guid>https://blog.youkuaiyun.com/birdforever/article/details/5900139</guid><author>birdforever</author><pubDate>Tue, 21 Sep 2010 21:39:00 +0800</pubDate><description><![CDATA[<br />////poj 2299 Ultra-QuickSort  归并排序
/*
题解：逆序数，仅此而已。。
PS: 水题，还是写了半个小时。
*/
#include <iostream>
#include <algorithm>
using namespace std;
const int inf = 1<<28;
int n,m;

int a[500010],temp[500010],ans;

void Merge_Sort(int a[],int l,int r)]]></description><category></category></item><item><title><![CDATA[usaco 3.3.5(博弈/DP)]]></title><link>https://blog.youkuaiyun.com/birdforever/article/details/5879236</link><guid>https://blog.youkuaiyun.com/birdforever/article/details/5879236</guid><author>birdforever</author><pubDate>Sun, 12 Sep 2010 16:00:00 +0800</pubDate><description><![CDATA[<br />/* 
   ID: majunch2
   LANG: C++
   PROG: game1
*/
// usaco 3.3.5
/*
设 F1[I，J] 为第一个人（先行者） 从I  取到 J 的最大分数 
F2[I，J] 为第二个人（先行者） 从I  取到 J 的最大分数
  S[I] 为 第 I 张牌的分数..... Sum[I] 为第 1 到第 I 张牌的分数总和.... 

 F1[I，J]=max{ F2[I+1,J]+S[I] , F2[I,J-1]+S[J]]></description><category></category></item><item><title><![CDATA[usaco 4.3(经典LIS模板)]]></title><link>https://blog.youkuaiyun.com/birdforever/article/details/5879231</link><guid>https://blog.youkuaiyun.com/birdforever/article/details/5879231</guid><author>birdforever</author><pubDate>Sun, 12 Sep 2010 15:58:00 +0800</pubDate><description><![CDATA[<br />/* 
   ID: majunch2
   LANG: C++
   PROG: buylow
*/
//usaco 4.3
//很经典的O(nlogn)LIS问题，还可以求序列方案数

#include <cstdio>
#include <cstdlib>
#include <cstring>
//#include <cmath>
#include <algorithm>
//#include <ctime>
using  namespace std;
con]]></description><category></category></item><item><title><![CDATA[poj 1179 Polygon]]></title><link>https://blog.youkuaiyun.com/birdforever/article/details/5877588</link><guid>https://blog.youkuaiyun.com/birdforever/article/details/5877588</guid><author>birdforever</author><pubDate>Sat, 11 Sep 2010 14:50:00 +0800</pubDate><description><![CDATA[<br />//poj 1179 Polygon (DP)
/*
题解：矩阵链乘法变型，不过要注意负负得正，两个最小子结果相乘会得到最大正值。
PS: 这种题初始化比较烦，所以写得比较简单粗糙，好在数据量不大，16MS。。。
*/
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
const int inf = 1<<28;
int n,m;
int a[110];
char ]]></description><category></category></item><item><title><![CDATA[sap(邻接表)模板]]></title><link>https://blog.youkuaiyun.com/birdforever/article/details/5877314</link><guid>https://blog.youkuaiyun.com/birdforever/article/details/5877314</guid><author>birdforever</author><pubDate>Sat, 11 Sep 2010 11:08:00 +0800</pubDate><description><![CDATA[<br />const int null = -1;
const int VMAX = 500;
const int EMAX = 300000;

struct Edge
{
	int adj,next,re;    //指向的点，下一边的下标，逆边的下标
	int r;          //余留网边的容量
}h[EMAX+10];  //用下标模拟指针构邻接表
int p[VMAX+10],c;
int n,m,s,t;
int gap[VMAX+10],pre[VMAX+10]]]></description><category></category></item><item><title><![CDATA[sap(邻接阵)模板]]></title><link>https://blog.youkuaiyun.com/birdforever/article/details/5874781</link><guid>https://blog.youkuaiyun.com/birdforever/article/details/5874781</guid><author>birdforever</author><pubDate>Fri, 10 Sep 2010 01:45:00 +0800</pubDate><description><![CDATA[<br />//EK,SAP,DINIC三种算法以及它们的表和阵两个版本的效率，已在sicily1423. 魔王bug的2色定理上验证过，
//显然SAP,DINIC要快很多，SAP和DINIC相差不大。但因为DINIC每次要重新构层次图，可能相对会慢一点。
const int VMAX = 500;
int n,m,s,t;
int r[VMAX+10][VMAX+10];
int gap[VMAX+10],pre[VMAX+10],dis[VMAX+10];
//int cur[VMAX+1]]></description><category></category></item><item><title><![CDATA[dinic(邻接表)模板]]></title><link>https://blog.youkuaiyun.com/birdforever/article/details/5874780</link><guid>https://blog.youkuaiyun.com/birdforever/article/details/5874780</guid><author>birdforever</author><pubDate>Fri, 10 Sep 2010 01:44:00 +0800</pubDate><description><![CDATA[<br />//用它做过一些题（hdu3046,poj3469等），正确性和效率都有待改进
//主要难题：如何在用邻接表表示余留网时迅速找到一条边的逆边？


const int null = -1;
const int VMAX = 40000;
const int EMAX = 160000;
struct Edge
{
	int adj,next,re;    //指向的点，下一边的下标，逆边的下标
	int r;          //余留网边的容量
}h[EMAX+10]; ]]></description><category></category></item><item><title><![CDATA[dinic(邻接阵)模板]]></title><link>https://blog.youkuaiyun.com/birdforever/article/details/5874779</link><guid>https://blog.youkuaiyun.com/birdforever/article/details/5874779</guid><author>birdforever</author><pubDate>Fri, 10 Sep 2010 01:43:00 +0800</pubDate><description><![CDATA[<br />//做Hust的dance party时候学的一个板，以后记得常用哈，错的才可以改进。

const int VMAX = 400;

int r[VMAX+10][VMAX+10]; //余留网
int Q[VMAX+10],level[VMAX+10];  //用于bfs的队列和各点层次

//广搜求层次图
bool bfs()
{
	memset(level,-1,sizeof(level));
	int head=0,tail=0;
	Q[tail++]=s;
]]></description><category></category></item><item><title><![CDATA[EK(邻接表)模板]]></title><link>https://blog.youkuaiyun.com/birdforever/article/details/5874776</link><guid>https://blog.youkuaiyun.com/birdforever/article/details/5874776</guid><author>birdforever</author><pubDate>Fri, 10 Sep 2010 01:42:00 +0800</pubDate><description><![CDATA[<br />const int null = -1;
const int VMAX = 60000;
const int EMAX = 1000000;
struct Edge
{
	int adj,next,re;    //指向的点，下一边的下标，逆边的下标
	int r;          //余留网边的容量
}h[EMAX+10];  //用下标模拟指针构邻接表

int n,m,s,t;
int p[VMAX+10],c;            //各点的头指针，目前h数组开到]]></description><category></category></item><item><title><![CDATA[EK(邻接阵)模板]]></title><link>https://blog.youkuaiyun.com/birdforever/article/details/5874773</link><guid>https://blog.youkuaiyun.com/birdforever/article/details/5874773</guid><author>birdforever</author><pubDate>Fri, 10 Sep 2010 01:41:00 +0800</pubDate><description><![CDATA[<br />int n,s,t;
const int VMAX = 500;
int r[VMAX+10][VMAX+10];
int mark[VMAX+10],pre[VMAX+10];

int EK()
{
	int ans=0;
	int head,tail;
	while (1)
	{
		memset(mark,0,sizeof(mark));
		mark[s]=1;
		head=tail=0;
		Q[tail++]=s;
		while (head<tai]]></description><category></category></item><item><title><![CDATA[求素数的方法(转)]]></title><link>https://blog.youkuaiyun.com/birdforever/article/details/5874514</link><guid>https://blog.youkuaiyun.com/birdforever/article/details/5874514</guid><author>birdforever</author><pubDate>Thu, 09 Sep 2010 22:54:00 +0800</pubDate><description><![CDATA[<br />//筛法求素数
#include<cstdio>
#include<cmath>
#define N 10000001
bool prime[N];
int main()
{
   int i, j;
   for(i=2; i<N; i++)
  if(i%2) prime[i]=true;
  else prime[i]=false;
   for(i=3; i<=sqrt(N*1.0); i++)
   {   if(prime[i])
       for(j=]]></description><category></category></item><item><title><![CDATA[poj 1150 The Last Non-zero Digit]]></title><link>https://blog.youkuaiyun.com/birdforever/article/details/5874508</link><guid>https://blog.youkuaiyun.com/birdforever/article/details/5874508</guid><author>birdforever</author><pubDate>Thu, 09 Sep 2010 22:52:00 +0800</pubDate><description><![CDATA[<br />//poj 1150 The Last Non-zero Digit (计数)
/*
题解：http://www.aowe.net/n285c6.aspx这位老兄的题解够清楚了，只是网页有毒，汗。。。
PS: 好像和之前做的求阶乘的0尾数个数的题如出一辙，只不过这题是求非0的最后一位。除了
    经典的求质因数2和5的个数外，还要求以3、7、9这样的奇数结尾的数的个数。
*/
#include <iostream>
#include <algorithm>
#include <]]></description><category></category></item><item><title><![CDATA[poj 1193 内存分配]]></title><link>https://blog.youkuaiyun.com/birdforever/article/details/5874505</link><guid>https://blog.youkuaiyun.com/birdforever/article/details/5874505</guid><author>birdforever</author><pubDate>Thu, 09 Sep 2010 22:51:00 +0800</pubDate><description><![CDATA[<br />//poj 1193 内存分配 (模拟)
/*
题意：(中文题)模拟内存分配。
题解：典型的模拟题：
1.维护一个进程的链表，每个节点存有进程开始时间t，进程运行时间p，
在内存中的首地址s，占用内存大小m,和下一节点指针。
2.维护一个队列，表示还没有空间运行的进程。
3.维护一个释放内存的最早时间nexttime，每读入一个新进程的时候，若
进程开始时间不小于nexttime，表示有进程在这之前已结束（可能不止一
个），将其从链表删除，并循环检测队首进程是否有空间运行，如果]]></description><category></category></item><item><title><![CDATA[poj 1192 最优连通子集]]></title><link>https://blog.youkuaiyun.com/birdforever/article/details/5874502</link><guid>https://blog.youkuaiyun.com/birdforever/article/details/5874502</guid><author>birdforever</author><pubDate>Thu, 09 Sep 2010 22:50:00 +0800</pubDate><description><![CDATA[<br />//poj 1192 最优连通子集 (树型DP)
/*
题意：给定一个平面整点集，点与点间在|x1-x2| + |y1-y2| = 1时相邻，且形成的图没有回路，
      每个点有一个可正可负的权值，求最大权和连通子图。
题解：树型DP，dp[i][0]表示以i为根的子树上不包括i的最大权和，dp[i][1]表示包括i的最大权和。
*/
#include <iostream>
#include <algorithm>
#include <cmath>
#include <v]]></description><category></category></item><item><title><![CDATA[poj 1040  Transportation]]></title><link>https://blog.youkuaiyun.com/birdforever/article/details/5874493</link><guid>https://blog.youkuaiyun.com/birdforever/article/details/5874493</guid><author>birdforever</author><pubDate>Thu, 09 Sep 2010 22:48:00 +0800</pubDate><description><![CDATA[<br />//poj 1040  Transportation (搜索+剪枝)
/*
题解：排序，所有order从左到右搜，决定选或不选
PS：一个小小剪枝产生的效果大极了，剪枝前TLE，剪枝后200多MS
*/
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
const int inf = 1<<28;
int n,m;
int c,ans,mark;

struct ]]></description><category></category></item><item><title><![CDATA[poj 1082 Calendar Game]]></title><link>https://blog.youkuaiyun.com/birdforever/article/details/5868959</link><guid>https://blog.youkuaiyun.com/birdforever/article/details/5868959</guid><author>birdforever</author><pubDate>Tue, 07 Sep 2010 17:02:00 +0800</pubDate><description><![CDATA[<br />//poj 1082 Calendar Game (DP/博弈)
/*
题解：预处理一下从1900.1.1-2001.11.4之间的每一天开始，Adam先走或后走的胜利者。
      dp[year][month][day][1]表示year.month.day这一天Adam先走的胜者，1为Adam胜，0为Adam输。
      决策题目中已给出最多两种：加一天或者加一个月，只要有一个决策能够使Adam胜出，Adam在这
      一天就可以胜出。
PS: 注意一下闰年和每月天]]></description><category></category></item></channel></rss>