Posted on 2007-05-03 10:32
oyjpart 閱讀(967)
評(píng)論(2) 編輯 收藏 引用 所屬分類:
ACM/ICPC或其他比賽
今天集訓(xùn)隊(duì)出了一些題目做
看到一個(gè)2900 想了想 什么線段相交之類的做法 覺得還是挺復(fù)雜的
閑來無聊 翻翻status 突然看到alpc12!
頓覺十分驚訝 一看 是很久以前做過的題目了 仔細(xì)查查 竟然是我在PKU上做的第五道題 。。。 一看 那時(shí)候還不知道多test case怎么處理 居然把所有的答案保存一下 一次輸出 而且程序里面 還有一堆goto語句。。faint
貼出來紀(jì)念一下那個(gè)純真的年代
Source
Problem Id:2900 User Id:alpc12
Memory:7904K Time:265MS
Language:C++ Result:Accepted
- Source
1
#include <iostream>
2
#include <string>
3
using namespace std;
4
int d[1001][1001]; //0空白 1一次 2兩次
5
enum dr{EM, UL, UR, DL, DR};//empty & not available
6
dr dir[1001][1001];
7
int main()
8
{
9
int t,a,b,x,y;
10
string indrt;
11
int i,j,k;
12
scanf("%d",&t);
13
int *count = new int[t];
14
for (i=0; i<t; i++)
15
count[i] = 0;
16
for (i=0; i<t; i++) //input
17
{
18
for(j=1; j<=a; j++) //initiate
19
{
20
for(k=1; k<=b; k++)
21
{
22
d[j][k] = 0;
23
dir[j][k] = EM;
24
}
25
}
26
scanf("%d%d%d%d",&a,&b,&x,&y);
27
d[x][y] = 1;
28
cin >> indrt;
29
if(indrt=="UL") dir[x][y] =UL;
30
if(indrt=="UR") dir[x][y] =UR;
31
if(indrt=="DL") dir[x][y] =DL;
32
if(indrt=="DR") dir[x][y] =DR;
33
int u,l;
34
dr father = dir[x][y];
35
for(j=0; ;j++)
36
{
37
father = dir[x][y];
38
switch(father)
39
{
40
case UL: u=-1; l=-1; break;
41
case UR: u=-1; l=1; break;
42
case DL: u=1; l=-1; break;
43
case DR: u=1; l=1; break;//忘了break
44
}
45
x+=u;
46
y+=l;
47
if (d[x][y]==2) goto print;
48
if (d[x][y]==1)
49
{
50
dr temp = dir[x][y];
51
d[x][y] = 2;
52
count[i]++;
53
dir[x][y] = father;
54
if(x==1)
55
{
56
if (father == UL)
57
dir[x][y] = DL;
58
else
59
dir[x][y] = DR;
60
}
61
if(x==a)
62
{
63
if (father == DL)
64
dir[x][y] = UL;
65
else
66
dir[x][y] = UR;
67
}
68
if(y==1)
69
{
70
if (father == UL)
71
dir[x][y] = UR;
72
else
73
dir[x][y] = DR;
74
}
75
if(y==b)
76
{
77
if (father == UR)
78
dir[x][y] = UL;
79
else
80
dir[x][y] = DL;
81
}
82
if((x==1||x==a) && (y==1)||(y==b))
83
goto print;
84
if(temp == dir[x][y])
85
{
86
goto print;
87
}
88
}//if
89
if(d[x][y]==0)
90
{
91
d[x][y] = 1;
92
dir[x][y] = father;
93
if(x==1)
94
{
95
if (father == UL)
96
dir[x][y] = DL;
97
else
98
dir[x][y] = DR;
99
}
100
if(x==a)
101
{
102
if (father == DL)
103
dir[x][y] = UL;
104
else
105
dir[x][y] = UR;
106
}
107
if(y==1)
108
{
109
if (father == UL)
110
dir[x][y] = UR;
111
else
112
dir[x][y] = DR;
113
}
114
if(y==b)
115
{
116
if (father == UR)
117
dir[x][y] = UL;
118
else
119
dir[x][y] = DL;
120
}
121
if(((x==1)||(x==a)) && ((y==1)||(y==b)))
122
{
123
goto print;
124
}
125
}//if
126
}//if
127
print: ;
128
}
129
for (i=0; i<t; i++)
130
printf("%d\n",count[i]);
131
return 0;
132
}
133