wyiu
Follow.
C++博客
::
首页
::
新随笔
::
联系
::
聚合
::
管理
posts - 100, comments - 15, trackbacks - 0
<
2009年5月
>
日
一
二
三
四
五
六
26
27
28
29
30
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
1
2
3
4
5
6
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔分类
(84)
Design Pattern(1)
POJ(67)
常用模板和函数(3)
数据结构(2)
数值分析(3)
算法(8)
随笔档案
(100)
2010年10月 (8)
2010年3月 (11)
2009年10月 (16)
2009年9月 (1)
2009年8月 (1)
2009年7月 (20)
2009年5月 (16)
2009年4月 (27)
向高手学习
cai0715
RyanWang
wingyiu
搜索
积分与排名
积分 - 27377
排名 - 681
最新评论
1. re: poj 3368 rmq(st)
有错误~~
index[] 可能会以负数为下标~
--tongjiantao
2. re: pku poj 3009
@BOAT
行列搞错了吧?
--yaoyaozii
3. re: pku poj 3009
@ww
郁闷啊。。我怎么也是3 啊。。。郁闷!!!
--BOAT
4. re: pku poj 3009 [未登录]
excit就是这个游戏
--X
5. re: pku2777
这个只能用c++交吗?用G++交的结果很神奇喔,居然CE。。
--share4
阅读排行榜
1. POJ 线段树题(1994)
2. pku poj 3009 (997)
3. 矩阵转置_十字链表(940)
4. 全主元高斯消元法(782)
5. 关于“逆序数”[转](766)
评论排行榜
1. pku poj 3009 (10)
2. pku 1019 poj(2)
3. pku2777(1)
4. pku 2151(1)
5. poj 3368 rmq(st)(1)
pku1657
//还是抄的
1
#include
<
stdio.h
>
2
#include
<
math.h
>
3
int
main()
4
{
5
int
t,i,x[
20
],y[
20
];
6
char
a[
3
],b[
3
];
7
8
scanf(
"
%d
"
,
&
t);
9
10
for
(i
=
0
; i
<
t; i
++
)
11
{
12
scanf(
"
%s%s
"
,
&
a,
&
b);
13
x[i]
=
abs(a[
0
]
-
b[
0
]);
14
y[i]
=
abs(a[
1
]
-
b[
1
]);
15
}
16
for
(i
=
0
;i
<
t;i
++
)
17
{
18
if
(x[i]
==
0
&&
y[i]
==
0
)
19
printf(
"
0 0 0 0\n
"
);
20
else
21
{
22
if
(x[i]
<
y[i])
23
printf(
"
%d
"
,y[i]);
24
else
printf(
"
%d
"
,x[i]);
25
if
(x[i]
==
0
||
y[i]
==
0
)
26
printf(
"
%c %c
"
,
'
1
'
,
'
1
'
);
27
else
28
if
((x[i]
-
y[i])
==
0
)
29
printf(
"
%c %c
"
,
'
1
'
,
'
2
'
);
30
else
printf(
"
%c %c
"
,
'
2
'
,
'
2
'
);
31
if
((x[i]
-
y[i])
==
0
)
32
printf(
"
%c\n
"
,
'
1
'
);
33
else
34
if
((x[i]
-
y[i])
%
2
!=
0
)
35
printf(
"
%s\n
"
,
"
Inf
"
);
36
else
printf(
"
%c\n
"
,
'
2
'
);
37
}
38
}
39
return
0
;
40
}
41
posted @
2009-04-03 20:09
wyiu 阅读(58) |
评论 (0)
|
编辑
收藏
pku1658
//忘了,抄的
1
#include
<
stdio.h
>
2
int
main()
{
3
int
t,i,j;
4
scanf(
"
%d
"
,
&
t);
5
int
x[
20
][
5
];
6
for
(i
=
0
;i
<
t;i
++
)
{
7
for
(j
=
0
;j
<
4
;j
++
)
{
8
scanf(
"
%d
"
,
&
x[i][j]);
9
}
10
if
((x[i][
1
]
-
x[i][
0
])
==
(x[i][
2
]
-
x[i][
1
])
&&
(x[i][
3
]
-
x[i][
2
])
==
(x[i][
2
]
-
x[i][
1
]))
11
x[i][
4
]
=
x[i][
3
]
+
x[i][
2
]
-
x[i][
1
];
12
else
x[i][
4
]
=
x[i][
3
]
*
x[i][
2
]
/
x[i][
1
];
13
}
14
for
(i
=
0
;i
<
t;i
++
)
{
15
for
(j
=
0
;j
<
5
;j
++
)
{
16
printf(
"
%d
"
,x[i][j]);
17
}
18
printf(
"
\n
"
);
19
}
20
return
0
;
21
}
22
23
posted @
2009-04-03 20:08
wyiu 阅读(39) |
评论 (0)
|
编辑
收藏
pku1004
//当初很蠢的做法,大家无视吧
1
#include
<
iostream
>
2
using
namespace
std;
3
int
main()
4
{
5
double
a,b
=
0
;
6
int
c,d,e,f;
7
for
(
int
i
=
0
;i
<
12
;i
++
)
8
{
9
cin
>>
a;
10
b
+=
a;
11
}
12
c
=
int
((b
/
12
)
*
1000
);
13
if
(c
%
10
>=
5
) c
+=
10
;
14
d
=
c
/
1000
;
15
e
=
(c
-
d
*
1000
)
/
100
;
16
f
=
(c
-
d
*
1000
-
e
*
100
)
/
10
;
17
cout
<<
'
$
'
<<
d
<<
'
.
'
<<
e
<<
f
<<
endl;
18
return
0
;
19
}
20
posted @
2009-04-03 20:06
wyiu 阅读(71) |
评论 (0)
|
编辑
收藏
pku1003
//挺无聊的题,不过不知道为什么不是0MS过
1
#include
<
iostream
>
2
using
namespace
std;
3
int
main()
4
{
5
int
i;
6
double
n,t
=
0.0
;
7
cin
>>
n;
8
while
(n
!=
0.0
)
9
{
10
i
=
2
;
11
while
(t
<
n)
12
{
13
t
+=
1.0
/
i;
14
i
++
;
15
}
16
cout
<<
i
-
2
<<
'
'
<<
"
card(s)
"
<<
endl;
17
t
=
0
;
18
cin
>>
n;
19
}
20
return
0
;
21
}
posted @
2009-04-03 20:02
wyiu 阅读(130) |
评论 (0)
|
编辑
收藏
pku2909
//普通做法
1
#include
<
iostream
>
2
#include
<
math.h
>
3
using
namespace
std ;
4
int
prime(
int
x )
5
{
6
int
i;
7
for
(i
=
2
;i
<=
int
(sqrt(
double
(x)));i
++
)
8
if
(x
%
i
==
0
)
return
0
;
9
return
1
;
10
}
11
12
int
main()
13
{
14
int
i,num,n;
15
while
( cin
>>
n )
16
{
17
num
=
0
;
18
if
( n
==
0
)
return
0
;
19
for
( i
=
2
; i
<=
n
/
2
; i
++
)
20
if
( prime(i)
&&
prime(n
-
i) )
21
num
++
;
22
cout
<<
num
<<
endl ;
23
}
24
return
0
;
25
}
posted @
2009-04-03 19:59
wyiu 阅读(65) |
评论 (0)
|
编辑
收藏
pku2601
//先推出关系式,然后就是很简单的东西啦
1
#include
<
iostream
>
2
using
namespace
std;
3
int
main()
4
{
5
int
n;
6
double
a,b,a1;
7
scanf(
"
%d%lf%lf
"
,
&
n,
&
a,
&
b);
8
double
c,sumc
=
0.0
;
9
int
i,j
=
n;
10
for
(i
=
0
;i
<
n;i
++
)
11
{
12
scanf(
"
%lf
"
,
&
c);
13
sumc
+=
2
*
(j
--
)
*
c;
14
}
15
a1
=
(b
-
sumc
+
n
*
a)
/
(n
+
1
);
16
printf(
"
%.2lf\n
"
,a1);
17
return
0
;
18
}
19
20
posted @
2009-04-03 19:54
wyiu 阅读(64) |
评论 (0)
|
编辑
收藏
pku2606
//两点式,取两点,然后其它点带入直线公式验证
1
#include
<
iostream
>
2
using
namespace
std;
3
int
main()
4
{
5
int
x[
200
];
6
int
y[
200
];
7
int
n;
8
cin
>>
n;
9
int
max
=
2
,count;
10
int
i,j,k;
11
for
(i
=
0
;i
<
n;i
++
)
12
cin
>>
x[i]
>>
y[i];
13
for
(i
=
0
;i
<
n;i
++
)
14
{
15
16
for
(j
=
i
+
1
;j
<
n;j
++
)
17
{
18
count
=
2
;
19
for
(k
=
0
;k
<
n
&&
k
!=
i
&&
k
!=
j; k
++
)
20
if
((y[k]
-
y[i])
*
(x[i]
-
x[j])
==
(y[i]
-
y[j])
*
(x[k]
-
x[i]))
//
两点式
21
count
++
;
22
23
if
(count
>
max)
24
max
=
count;
25
}
26
27
}
28
cout
<<
max;
29
return
0
;
30
}
31
32
posted @
2009-04-03 19:51
wyiu 阅读(89) |
评论 (0)
|
编辑
收藏
pku1251
//直接用Prim
1
#include
<
iostream
>
2
using
namespace
std;
3
struct
Edge
4
{
5
int
u;
6
int
v;
7
int
weight;
8
}
;
9
struct
GraphMatrix
10
{
11
int
adj[
27
][
27
];
12
}
;
13
14
void
Prim(GraphMatrix
&
GM,Edge MST[],
int
n);
15
16
int
main()
17
{
18
int
i,j;
19
Edge MST[
27
];
20
GraphMatrix GM;
21
22
int
n,m,w;
23
char
u,v;
24
25
while
(cin
>>
n
&&
n
!=
0
)
26
{
27
for
(i
=
0
;i
<
n;i
++
)
28
for
(j
=
0
;j
<
n;j
++
)
29
{
30
if
(i
==
j) GM.adj[i][j]
=
0
;
31
else
GM.adj[i][j]
=
100
;
32
}
33
34
for
(i
=
0
;i
<
n
-
1
;i
++
)
35
{
36
cin
>>
u
>>
m;
37
38
for
(j
=
0
;j
<
m;j
++
)
39
{
40
cin
>>
v
>>
w;
41
GM.adj[i][v
-
u
+
i]
=
w;
42
GM.adj[v
-
u
+
i][i]
=
w;
43
}
44
}
45
46
Prim(GM,MST,n);
47
int
minw
=
0
;
48
for
(i
=
0
;i
<
n
-
1
;i
++
)
49
minw
+=
MST[i].weight;
50
cout
<<
minw
<<
endl;
51
}
52
return
0
;
53
}
54
55
void
Prim(GraphMatrix
&
GM,Edge MST[],
int
n)
56
{
57
int
i,j,k;
58
int
si,mi,ni,res;
59
si
=
0
;
60
for
(i
=
0
;i
<
n
-
1
;i
++
)
61
{
62
MST[i].u
=
si;
63
MST[i].v
=
i
+
1
;
64
MST[i].weight
=
GM.adj[si][i
+
1
];
65
}
66
67
68
for
(i
=
0
;i
<
n
-
1
;i
++
)
69
{
70
//
mi=FindMinEdge(MST,si);
71
mi
=
si;
72
res
=
100
;
73
for
(j
=
si;j
<
n
-
1
;j
++
)
74
{
75
if
(MST[j].weight
>
0
&&
MST[j].weight
<
res)
76
{
77
res
=
MST[j].weight;
78
mi
=
j;
79
}
80
}
81
//
swap
82
Edge tmp;
83
tmp
=
MST[mi];
84
MST[mi]
=
MST[si];
85
MST[si]
=
tmp;
86
//
si++
87
si
++
;
88
//
adjust
89
ni
=
MST[si
-
1
].v;
90
for
(j
=
si;j
<
n
-
1
;j
++
)
91
{
92
k
=
MST[j].v;
93
if
(GM.adj[ni][k]
>
0
&&
GM.adj[ni][k]
<
MST[j].weight)
94
{
95
MST[j].weight
=
GM.adj[ni][k];
96
MST[j].u
=
ni;
97
}
98
}
99
100
}
101
}
102
103
posted @
2009-04-03 19:45
wyiu 阅读(155) |
评论 (0)
|
编辑
收藏
pku1258
//第一次用kruskal
1
#include
<
iostream
>
2
#include
<
stdlib.h
>
3
#define
MAX 100
4
using
namespace
std;
5
6
struct
Edge
7
{
8
int
u;
9
int
v;
10
int
w;
11
}
;
12
13
int
parent[MAX];
//
全局,感觉不太好
14
15
int
cmp(
const
void
*
a,
const
void
*
b)
16
{
17
return
(
*
(Edge
*
)a).w
-
(
*
(Edge
*
)b).w;
18
}
19
20
int
find(
int
vertex)
21
{
22
if
( parent[vertex]
<
0
)
23
return
vertex;
24
else
25
return
find(parent[vertex]);
26
}
27
28
void
Union(
int
u,
int
v)
29
{
30
int
pu
=
find(u),
//
parent of u
31
pv
=
find(v),
//
parent of v
32
tmp;
33
if
(pu
!=
pv)
34
{
35
tmp
=
parent[pu]
+
parent[pv];
//
加权合并
36
if
(parent[pu]
>
parent[pv])
//
较小的树连接到较大的树后
37
{
38
parent[pu]
=
pv;
39
parent[pv]
=
tmp;
40
}
41
else
42
{
43
parent[pv]
=
pu;
44
parent[pu]
=
tmp;
45
}
46
}
47
}
48
49
int
kruskal(Edge edge[],Edge mst[],
int
en,
int
vn)
50
{
51
int
i,j,k;
52
j
=
0
;k
=
0
;
53
for
(i
=
0
; i
<
en; i
++
)
54
{
55
if
( find(edge[i].u)
!=
find(edge[i].v) )
//
不属于同一棵树
56
{
57
mst[j].u
=
edge[i].u;
58
mst[j].v
=
edge[i].v;
59
mst[j].w
=
edge[i].w;
60
j
++
;
61
k
+=
edge[i].w;
62
Union(edge[i].u, edge[i].v);
63
}
64
if
(j
==
vn
-
1
)
break
;
65
}
66
return
k;
67
}
68
69
int
main()
70
{
71
int
vn,i,j,en
=
0
,sum
=
0
;
72
int
grap[MAX][MAX];
73
74
Edge edge[MAX
*
MAX];
75
Edge mst [MAX];
76
77
while
(scanf(
"
%d
"
,
&
vn)
==
1
)
78
{
79
en
=
0
;
80
sum
=
0
;
81
memset(parent,
-
1
,
sizeof
(parent));
//
makeset
82
83
for
(i
=
0
;i
<
vn;i
++
)
84
for
(j
=
0
;j
<
vn;j
++
)
85
scanf(
"
%d
"
,
&
grap[i][j]);
86
87
for
(i
=
0
;i
<
vn;i
++
)
88
for
(j
=
0
;j
<
vn;j
++
)
89
if
(i
<
j)
{ edge[en].u
=
i;edge[en].v
=
j; edge[en].w
=
grap[i][j]; en
++
; }
90
91
qsort(edge,en,
sizeof
(edge[
0
]),cmp);
92
93
kruskal(edge,mst,en,vn);
94
95
for
(i
=
0
;i
<
vn
-
1
;i
++
)
96
sum
+=
mst[i].w;
97
cout
<<
sum
<<
endl;
98
}
99
100
return
0
;
101
}
102
posted @
2009-04-03 01:42
wyiu 阅读(221) |
评论 (0)
|
编辑
收藏
pku1002
1
#include
<
iostream
>
2
#include
<
stdlib.h
>
3
using
namespace
std;
4
int
cmp(
const
void
*
a,
const
void
*
b)
5
{
6
return
(
*
(
int
*
)a
-*
(
int
*
)b);
7
}
8
int
main()
9
{
10
int
n, i,j,t2,flag
=
0
;
11
char
t1[
300
];
12
cin
>>
n;
13
int
*
rec
=
new
int
[n];
14
for
(i
=
0
;i
<
n;i
++
)
15
{
16
scanf(
"
%s
"
,
&
t1);
17
t2
=
0
;
18
for
(j
=
0
; t1[j]
!=
0
;j
++
)
19
{
20
21
switch
(t1[j])
22
{
23
case
'
0
'
: t2
=
t2
*
10
+
0
;
break
;
24
case
'
1
'
: t2
=
t2
*
10
+
1
;
break
;
25
case
'
2
'
:
case
'
A
'
:
case
'
B
'
:
case
'
C
'
:
26
t2
=
t2
*
10
+
2
;
break
;
27
case
'
3
'
:
case
'
D
'
:
case
'
E
'
:
case
'
F
'
:
28
t2
=
t2
*
10
+
3
;
break
;
29
case
'
4
'
:
case
'
G
'
:
case
'
H
'
:
case
'
I
'
:
30
t2
=
t2
*
10
+
4
;
break
;
31
case
'
5
'
:
case
'
J
'
:
case
'
K
'
:
case
'
L
'
:
32
t2
=
t2
*
10
+
5
;
break
;
33
case
'
6
'
:
case
'
M
'
:
case
'
N
'
:
case
'
O
'
:
34
t2
=
t2
*
10
+
6
;
break
;
35
case
'
7
'
:
case
'
P
'
:
case
'
R
'
:
case
'
S
'
:
36
t2
=
t2
*
10
+
7
;
break
;
37
case
'
8
'
:
case
'
T
'
:
case
'
U
'
:
case
'
V
'
:
38
t2
=
t2
*
10
+
8
;
break
;
39
case
'
9
'
:
case
'
W
'
:
case
'
X
'
:
case
'
Y
'
:
40
t2
=
t2
*
10
+
9
;
break
;
41
}
42
43
}
44
rec[i]
=
t2;
45
}
46
qsort(rec,n,
sizeof
(rec[
0
]),cmp);
47
for
(i
=
0
;i
<
n;)
48
{
49
int
temp
=
rec[i];
50
int
rn
=
1
;
51
for
(j
=
i
+
1
;j
<
n;j
++
)
52
{
53
i
=
j;
54
if
(temp
==
rec[j])
55
rn
++
;
56
else
57
break
;
58
}
59
if
(rn
>=
2
)
60
{
61
printf(
"
%03d-%04d %d\n
"
,temp
/
10000
,temp
%
10000
,rn);
62
flag
=
1
;
63
}
64
65
if
(j
>=
n) i
++
;
66
}
67
if
(flag
==
0
) cout
<<
"
No duplicates.\n
"
;
68
return
0
;
69
}
70
posted @
2009-04-03 01:06
wyiu 阅读(117) |
评论 (0)
|
编辑
收藏
仅列出标题
共10页:
First
2
3
4
5
6
7
8
9
10