日志列表
RSS
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的值改为向新证书的存放路径就可以了。
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
最后终于定下来了。留在了之前实习的网易游戏。
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; } |
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











