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