MyLogo MyLogo2 MyLogo3 Seaco Seaco
  • 1
  • 2
  • 3
  • 4
  • 5
windows 下如何修改SVN的SSL证书信息

952 views
时间:2012-01-04
1

新的一年上班,更新SVN的时候出现如下错误:

好多同事都出现了这个问题,后来发现是公司发的SSL证书过期了,中午收到了同事发来的新证书,就尝试着替换一下。

浏览器上的证书替换很方便,在internet选项中找一下,删除原来的添加新的就行了,网页浏览可以了。

但是用SVN更新还是有问题,因为之前SVN的证书是单独的,为了方便,又设定了默认路径,所以现在需要把这个默认路径修改掉,当然,你替换原来路径中的文件也是可以的。

一下是修改这个默认路径的方法:注册表,HKEY_CURRENT_USER\Software\tigris.org\Subversion\Servers\gamehz.163.org 下,”gamehz.163.org”对应你自己的目录,把键ssl-client-cert-file的值改为向新证书的存放路径就可以了。

C++实现批量下载百度MP3新歌top100

1,387 views
时间:2011-11-21
2

昨天在群里看见加菲问能不能批量下载百度mp3新歌top100的,心想这跟之前想写的那个抓取网页内容的东西不是差不多么,所以就打算帮他尝试着写一下。
以前没做过这种东西, 但是基本的思路还是有的,只能能搞到这一百首歌的真实链接地址那就好办了,很容易的发现当你选择试听歌曲的时候就会出现真实的链接地址,并且经实践,用这个链接地址可以下载歌曲。但是查看网页源代码之后发现,这个链接地址不太好得到, 中间有好多好多js代码,我不懂js,尝试着看了下也不得而终,所以这条路算是断了。
然后继续baidu google,搜索新的道路,在谋篇文章中发现了一个捷径。
“http://box.zhangmen.baidu.com/x?op=12&count=1&title=歌名$$歌手名$$$” 用这个URL能够得到一个xml文件,如果百度上有你要的歌曲的话,里面就会有相应的真实的链接地址,比如“http://box.zhangmen.baidu.com/x?op=12&count=1&title=好久不见$$陈奕迅$$$” 输入浏览器之后得到如下内容:
阅读全文»

我的求职之路

1,527 views
时间:2011-11-13
14

最后终于定下来了。留在了之前实习的网易游戏。

暑假之后各大公司的校园招聘也都开始了。
投了简历的公司:阿里云,淘宝,腾讯,百度,支付宝,阿里巴巴,网易,有道,google, 微策略。
以上没有收到任何一家的offer.回想一下,发现自己真弱。
阿里云:收到了阿里云让投简历的通知,然后周六就跑回学校参加笔试了,笔试竟然还有网络流,不过是最基本的那种。笔试顺利通过了,然后就去面试,一面技术面,问了数字字符串的加法,写了代码, 还有不知道啥忘记了, 然后ok了, 等二面,二面还是技术面, 问了个比较特殊的二分,面试的时候没想出整洁, 用了2log(n)的方法, 写了代码还有点小错误。 可能因此就被鄙视了。 阿里云也到此结束了, 走在大街上被风一吹,才想起来正解, 而且正解写起来很方便。
淘宝:投简历的时候已经错过了学校的笔试,但是在线简历窗口还没关,所以还是投了一下, 结果没人理我, 就这么不了了之了。
腾讯:参加了腾讯的笔试,笔试卷子出了一些基础的题目,其他都不难,但是就是没过笔试,真悲剧,做我旁边的人直接抄我答案,却进了面试,原本以为是因为岗位不同, 所以面试时间也不一样, 结果到现在都啥消息都没, 而且原本说的有游戏开发岗位的, 结果到了笔试阶段就没有这个岗位了。腾讯也就这么不了了之了。网上查了下待遇,腾讯给的米不多啊,这个价让离开杭州市没啥吸引力的。
阅读全文»
The 36th ACM/ICPC Asia Regional Fuzhou Site —— Online Contest – 1007 Random Maze 题解

1,578 views
时间:2011-10-07
19

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4067
题解: 用SPFA 或者 最小费用最大流解决。

(1).题目的意思是在一个有向图中选择一些边使得每个点的入度出度相同, 出了起点和终点, 我们在起点和终点中加上一条终点指向起点的边就可以了。

我们给每条边定义新的权值, 大小为a-b, 这样我们的任务就转变成在新的图中寻找所有的负环, 然后将它转向为正环, 直到找到所有的负环。 还有一个要求是寻找到的负环中的其中一个必须包含新加上的终点指向起点的边。 这样就能保证起点和终点的度的特殊性。

如果没有包含这条边的负环, 那么就是impossible。用spfa就能解决, 但是速度慢,并且因为有重边的缘故, 判断负环的时候要特别注意一点。 我写了个用了4406 MS,时限给了3S, 如果有人能用SPFA过, 那着实仰慕。

(2).以上是最直接的方法.

下面是直接建图的方法。

我们的答案保存在sum中。

初始时每个点的in[] out[] 都为0, in[i] 表示第i这个点需要in[i]条指向i的边才能满足i这个点的入度平衡。

对于每条边,如果a <= b 那么建 v->u的边,流量为1, 权值为b-a。 sum+= a;

此时, u->v 被翻转, 所以in[v] ++, out[u] ++.

否则 建 u->v的边, 流量为1, 权值为a-b。 sum += b;

此时, u->v 没有被翻转, 所以in[] out[] 不改变

然后添加一条终点指向起点的边, 直接in[s] ++; out[t] ++;

然后新建超级源汇S,T。

对于每个点i, 如果in[i] > out[i] . 建边S->i, 权值为0, 流量为in[i] – out[i];

否则的话 建边 i->T ,权值为0, 流量为out[i] – in[i];

然后跑一次最小费用最大流。

如果最后从S出去的边没有满流的话 就是impossible。

否则答案即为sum+ mincost.

By Starvae

最后,着实仰慕上海交通大学用SPFA过了, 而且只用了2000ms :

00003667 2011-10-07 15:33:40 Accepted 1007 2000MS 384K C++ team172 上海交通大学

最后附上标程和暴力的很搓的SPFA.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
#include<iostream>
#include<stdio .h>
#include<string .h>
#include <queue>
#include<vector>
#include<string>
 
using namespace std;
 
/*
Author : Starvae
Time : 2011/9/26
Algorithm : Min_Cost Max_Flow
*/
 
#define maxm 1000000
#define maxn 3000
#define INF 0x3fffffff
 
struct MCMF
{
 
	struct EDGE
	{
		int u,v,next,f,w;
	}E[maxm];
	int maxflow;
	int mincost;
	int p[maxn];
	int head[maxn];
	int num;
	int s,t;
	int NV;
 
	void add(int s,int t,int w,int c)
	{
		E[num].f = c;
		E[num].next = head[s];
		head[s] = num;
		E[num].u = s;
		E[num].v = t;
		E[num++].w = w;
		return;
	}
 
	void addedge(int s,int t,int w,int c)
	{
		//s->t cost = w, flow = c
		add(s,t,w,c);
		add(t,s,-w,0);
		return ;
	}
 
	int Q[maxn*10],d[maxn];
	bool spfa()
	{
		int i,j;
		int le = 0, ri = 0;
		bool ok[maxn] = {0};
		for(i=0;i<nv ;i++)
			d[i] = INF;
		d[s] = 0;
		ok[s] = 1;p[s] = -1;
		Q[ri++] =s;
		while(le != ri)
		{
			int u =Q[le++];
			ok[u] = 0;
			for(i=head[u];i!=-1;i=E[i].next)
			{
				int v = E[i].v;
				if(E[i].f>0 && d[u]+E[i].w < d[v])
				{
					d[v] = d[u] + E[i].w;
					p[v] = i;
					if(!ok[v])
					{
						Q[ri++] = v;
						ok[v] = 1;
					}
				}
			}
		}
		if(d[t] < INF)
			return 1;
		return 0;
	}
	void slove()
	{
		int i;
		int minflow = INF;
		for(i=p[t];i!=-1;i=p[E[i].u])
		{
			if(minflow >E[i].f)
				minflow = E[i].f;
		}
		for(i=p[t];i!=-1;i=p[E[i].u])
		{
			E[i].f -= minflow;
			E[i^1].f += minflow;
			mincost += E[i].w*minflow;
		}
		maxflow += minflow;
		return ;
	}
	int MinCost_MaxFlow(int _s,int _t)
	{
		s = _s;
		t = _t;
		maxflow = 0;
		mincost = 0;
		while(spfa())
			slove();
		return mincost;
	}
	void init(int n)
	{
		NV= n;
		memset(head,-1,sizeof(head));
		num = 0;
	}
}G;
 
 
int main()
{
	int casT;
	int cas;
	int S,T;
	int in[310], out[310];
	int sum,suma,sumb;
	int n,m;
	int ss,tt;
 
 
	scanf("%d",&casT);
	cas = 1;
	while(casT --)
	{
		memset(in,0,sizeof(in));
		memset(out,0,sizeof(out));
		scanf("%d%d%d%d",&n,&m,&ss,&tt);
		S = 0;
		T = n+1;
		suma = sumb = sum = 0;
 
		G.init(T+1);
		while(m--)
		{
			int u,v,a,b;
			scanf("%d%d%d%d",&u,&v,&a,&b);
			suma += a;
			sumb += b;
			if(a < = b){
				sum += a;
				G.addedge(v,u,b-a,1);
				in[v] ++; out[u] ++;
			}
			else{
				sum += b;
				G.addedge(u,v,a-b,1);
			}
		}
		//添加一条tt->ss的边
		in[ss] ++; out[tt] ++;
 
		int needflow = 0;
		for(int i = 1; i < = n; i ++)
			if(in[i] > out[i]){
				G.addedge(S, i, 0, in[i] - out[i]);
				needflow += in[i] - out[i];
			}else if(in[i] < out[i])
				G.addedge(i, T, 0, out[i] - in[i]);
 
		sum = sum + G.MinCost_MaxFlow(S, T);
		if(G.maxflow < needflow) 
			printf("Case %d: impossible\n", cas++);
		else{
			printf("Case %d: %d\n", cas++, sum);
		}
	}
	return 0;
}
?Download download.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
#include<iostream>
#include<stdio .h>
#include<string .h>
#include <queue>
#include<vector>
#include<string>
#include<algorithm>
 
using namespace std;
 
 
/*
Author : Starvae
Time : 2011.9.26
Algorithm : Spfa
*/
 
int pre[1100];
 
struct EGDE
{
	int u;
	int v;
	int dis;
	int c;
	int next;
}E[1000000];
int nv;
int ne;
int head[310];
int ans ;
 
void init(int n)
{
	nv = n;
	ne = 0;
	memset(head,-1,sizeof(head));
}
void addedge(int u,int v,int dis,int c)
{
	//printf("  %d %d %d %d\n",u,v,dis,c);
	E[ne].c = c; E[ne].dis = dis; E[ne].u = u;E[ne].v = v;
	E[ne].next = head[u]; head[u] = ne++;
	E[ne].c = 0; E[ne].dis = -dis; E[ne].u = v;E[ne].v = u;
	E[ne].next = head[v]; head[v] = ne++;
}
 
int du[310];
void work(int u)
{
	int i,j,k;
	int hash[1100]={0};
	k = u;
	while(1)
	{
		if(hash[u] == 1)
			break;
		hash[u] = 1;
		u = E[pre[u]].u;
	}
	k = u;
//	ans = 0;
	while(1)
	{
		i = pre[u];
		if(E[i].u == k)
			break;
		ans += E[i].dis;
		E[i].c = 0;
		E[i^1].c = 1;
		u = E[i].u;
	}
	ans += E[i].dis;
	E[i].c = 0;
	E[i^1].c = 1;
	return ;
}
void OUT()
{
	for(int i = 0 ; i < ne; i ++)
	{
		if(E[i].c != 0)
		{
			printf("  %d %d %d %d\n",E[i].u, E[i].v, E[i].dis, E[i].c);
		}
	}
}
 
bool spfa()
{
	//OUT();
	long long  dis[1100];
	int i,j,k;
	int val[310];
	memset(du,0,sizeof(du));
	int hash[1100];
	queue<int>Q;
	for(int i = 0 ; i < = nv; i ++)
		val[i] = -100000000;
	for(i=1;i<=nv;i++)
	{
		dis[i] = 0;
		Q.push(i);
		hash[i] = 1;
	}
	int flag = false;
	while(!Q.empty())
	{
		int u = Q.front();
		Q.pop();
		hash[u] = 0;
		for(i=head[u];i!=-1;i=E[i].next)
		{
			if(E[i].c == 0) continue;
			int v = E[i].v;
			if(dis[v] > dis[u] + E[i].dis)
			{
				dis[v] = dis[u] + E[i].dis;
				pre[v] = i;
				if(hash[v] == 0)
				{
					hash[v] = 1;
					Q.push(v);
				}
				if(val[u] != dis[u])
				{
					val[u] = dis[u];
					du[v] ++;
					if(du[v] == nv)
					{
						work(v);
						memset(du,0,sizeof(du));
						flag = true;
					}
				}
 
 
			}
		}
	}
	return flag;
}
bool readint(int &ret){
	int sgn;
	char c;
	c=getchar();
	if(c==EOF)return true;
	while(c!='-'&&c< '0'||c>'9')c=getchar();
	sgn=(c=='-')?-1:1;
	ret=(c=='-')?0:(c-'0');
	while((c=getchar())>='0'&&c< ='9')ret=ret*10+(c-'0');
	ret*=sgn;
	return false;
}
 
int main()
{
	int casT;
	int cas = 1;
	int n,m;
	int s,t;
	int u,v,a,b;
//	freopen("in.in","r",stdin);
//	freopen("spfa.out","w",stdout);
	readint(casT);
//	scanf("%d",&casT);
	while(casT --)
	{
 
	//	scanf("%d%d%d%d",&n,&m,&s,&t);
		readint(n); readint(m); readint(s); readint(t);
		init(n);
		ans = 0;
 
		for(int i = 0 ; i < m ; i ++)
		{
		//	scanf("%d %d %d %d",&u,&v,&a,&b);
			readint(u); readint(v); readint(a); readint(b);
			ans += b;
			if(u == v)
			{
				if(a - b <= 0)
				{
					ans += a-b;
				}
				continue;
			}	
			addedge(u,v,a-b,1);
		}
		ans += 100000000;
		addedge(t,s,-100000000,1);
 
		while(spfa())
			;
		printf("Case %d: ",cas++);
		if(ans >= 100000000)
			printf("impossible\n");
		else
			printf("%d\n",ans);
	}
	return 0;
}
 </algorithm></string></vector></queue></string></stdio></iostream>

网易杭州研发中心的工作环境

1,184 views
时间:2011-07-29
6

来网易杭州已经快一个月了~  生活的还是很滋润的。

每天早上8点半起床,去公司吃早餐,而且有非常大的概率会在公交车上碰到小学姐,然后就可以一起吃早餐了~  还有个CJL的88学姐也会一起来~ 美好的一天就这么开始了。

我们部门9点半开工。 早上会有一个早会时间,一个组的大家报告一下昨天做了什么事情。 简短的早会。

上午的时间会过的很快,一会会就到12点吃午饭了~ (我不是在等着吃饭的~)

中午一点半之前都可以自由活动。晚上到6点钟就可以下班了~

晚上可以去公司的健身房耍耍, 三天两头的可以找人打羽毛球。 下次有机会跟着一起免费游泳去~·~

晚上回公寓的时候可以偷偷的做阿里巴巴的班车回去~ 只可惜被抓到过一次。。

网易杭州研发中心7.21 才正式投入使用的。 下面有个小小的视频~  欢迎欣赏。

当时拍到我了,还很长的镜头时间的,只可惜电视上没放出来。

记得当时拍得时候,我正在调一个程序,然后崩溃了,然后拍得人让我再来一遍,我就把程序崩溃的全过程再重现了一遍,好囧啊。。。

阅读全文»

为 梦 想 而 战

1,067 views
时间:2011-07-11
10

——记浙江省第八届大学生程序设计竞赛

特等奖获奖团队“HDU-Knuth队”

4月16日,浙江省第八届大学生程序设计竞赛决出胜负。我校胡浩、王晓立、仲立华组成的“HDU-Knuth队”取得历史性突破,以第一名的好成绩获得大赛唯一一项特等奖。
“HDU-Knuth队”能够取得如此骄人的成绩,并不令人感到意外。因为早在去年的第35届ACM国际大学生程序设计竞赛亚洲预赛天津赛区的比赛中,“HDU-Knuth队”就已经显示出了不凡的实力,以高校排名第6的优异成绩获得金牌,并取得了参加今年5月在美国举行的ACM国际大学生程序设计竞赛全球总决赛的资格。
对于团队的成功,三个人轻描淡写地表示没什么秘诀可言,只是喜爱编程、分工明确和知识互补而已。然而,了解这些“竞赛达人”的学习生活的人都知道,他们成功的背后究竟付出了多少。
热爱是动力
胡浩、王晓立和仲立华能够进入杭电ACM集训队,能够过关斩将,一次次获得成功,与他们对编程的热爱是分不开的。
队长胡浩被称作“编程狂人”,队伍里所有程序的编写、调试和最终测试都是由他完成的。胡浩说:“我特别喜欢编程,所以愿意为它付出。当你热爱一件事情的时候,再多的任务对自己来说都无所谓。问题越困难,我就越兴奋,我很享受解决困难后的那种成就感。”
王晓立则表示,当初选择ACM与高考填报志愿时选择杭电一样,都是因为喜欢,想要找到志同道合的伙伴。“和胡浩一样,我也喜欢那种排除各种困难后将题目成功解决的成就感,那是我最快乐的时候。”

阅读全文»

考研 和 保研

870 views
时间:2011-07-10
4

到了大学之后就经常听到这两个词。
09年的某一天,我随seaco他们回访母校,里面有一个我很敬重的学长,问我哪里读书的,我说杭电,当时他就说只可惜杭电没保研。后来他保研去了香港科技大学,现在在新加坡工作。
某年浙江省大学生程序设计竞赛的颁奖典礼上,浙大的某个老师说崔添翼已经得到保送浙大的资格了。因为其拿了省赛冠军。
今天浙江省大学生程序设计竞赛中,HDU_Knuth得了冠军,老刘说去询问下能否保研浙大,后无果。 虽然两个队友都没有考研保研的意愿。 我也没考研的打算,但是如果能保研的话还是来者不拒的。 只可惜杭电本来就没有保研名额,所以也难怪会无果。
之前听闻浙江理工的AC MM也保研去浙大了,很是羡慕,为啥杭电没这能力呢~ 但是有保研名额,不代表你就能去,还要看浙大要不要你呢。 在哈尔滨带队的时候,浙江理工的某位领导说:“其实,就算理工有一个学生,真的能力很强,成绩很好,就算有清华大学的好学生的能力,浙大也不一定会要你的”(大概意思)。 毕竟浙江理工跟浙大比起来还是相差很多的。
昨天在去公司的路上碰到了理工的AC MM,她说要考研,验证了那个理工领导说的话,保研没有成功,因为浙江理工不是对等院校,不是211院校。 哎。 这样看来,我们下一届的杭电就有保研了,我也没啥好羡慕的了,就算自己有保研资格,人家也不见得会要你吧。
以上个人观点。
阅读全文»