/
SPOJ2007.hd
158 lines (138 loc) · 4.01 KB
/
SPOJ2007.hd
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
[[Sphere Online Judge Open Contest 2007|http://www.spoj.pl/ZFUN07/]] の問題の日本語訳です。
!SUD
!!Input
!!Output
!!Score
!!Example
!PCV2
!!Input
!!Output
!!Score
!!Example
!ELC
!!Input
!!Output
!!Score
!!Example
!EMP
!!Input
!!Output
!!Score
!!Example
!CATM
!!Input
最初の行は行の数n・列の数mを表す(ともに100以下)。
2行目はテストケースの数kを表す(10以下)。
!!Output
ねずみが逃げられるならYES、さもなくばNO
!!Example
<<<
Input:
5 3
3
2 2 1 1 3 3
2 3 1 3 5 2
3 2 1 2 4 3
Output:
NO
YES
YES
>>>
!!Limits
*1sec
*50,000Bytes
!NGM
NikiforとTrofimが以下のようなゲームを行う。
* 最初の数を一つ決める
* 順番に数を減らしていって、0にした方が勝ち (Nikiforが先手)
* いくつ減らすかは1〜9の間で自由に決めてよい
2人がベストを尽くしたとき、どちらが勝つかを判断してほしい。
!!Input
最初の数(2,000,000,000より小さい)。
!!Output
先手が勝つときは1を、さもなくば2を表示する。先手が勝つときは、2行目に
先手が最初に引く数を出力する。いくつも候補がある場合はそのうちの一つを
出力すればよい。
!!Example
<<<
Input:
14
Output:
1
4
>>>
!!Limits
*1sec
*50,000Bytes
!GEOM
正方形ABCDがあって、点A,B,C,Dは時計回りに並んでいる。さらに点A,B,C,Dと
一致しない点Pがある。
点Aを通りBPに垂直な直線a、点Bを通りCPに垂直な直線b、点Cを通りDPに垂直な直線c、
点Dを通りAPに垂直な直線dを引く。直線a,b,c,dは一点で交わるだろうか?
(それは点Pの位置によって決まる)。
交わるかどうかと、交わるならその位置を求めるプログラムを書け。
!!Input
最初の行は正方形の中心(対角線の交わる点)の座標を示す。
2行目は正方形の一辺の長さを示す。
3行目は点Pの座標を示す。
各数字の絶対値は100を超えない。
!!Output
交点があるならYESを出力し、次の行にその座標を出力する(小数点以下第1位まで)。
ないならNOを出力する。
!!Example
<<<
Input:
10 10
20
5 12
Output:
YES
8.0 5.0
>>>
!!Limits
*1sec
*50,000Bytes
!FIRM
市場にn人のディーラーがいる。彼らはそれぞれ独自の品物を持っている
(同じ品物を持っているディーラーはいない)。また、彼らは市場に存在する別の
品物を買いたいと思っている。これはちょっと奇妙なことだが、
全ての品物について、ちょうど1人だけその品物を欲しがっているディーラーがいる。
詐欺行為を防ぐため、2人でペアになっての「交換」しかこの市場では許されていない。
加えて、各ディーラーは1日に1回の交換しか行えない。
あなたの仕事は、全てのディーラーが彼の欲しい品物を手に入れるまで最低何日
かかるかを計算することである。また、どのような取引を行えばいいかも
求めてほしい。
!!Input
最初の行はディーラーの数(n <= 5000)を示す。
2行目にはディーラーの欲しい品物をあらわすn個の数が並ぶ。
例えばi番目にjという数があれば、ディーラーiの欲しい品物はディーラーjが最初に
持っていることを意味する。
!!Output
最初に取引に要する最小日数(m)を出力し、次のm行に各日の取引の様子
(取引数およびディーラー番号を-で繋いだもの)を出力する。
取引方法が複数ある場合は、それらのうちのどれを出力してもよい。
!!Example
<<<
Input:
7
2 1 3 5 6 7 4
Output:
2
3 1-2 4-5 7-6
1 5-7
>>>
!DIP
!SQRT2
√2をできるだけ長く計算する。
タイムリミットは20秒、ソースコードは4096バイトまで。
!!Input
なし
!!Output
√2の少数表現 (数字の数は最大2,000,000個まで)
!!Score
√2に一致しない最初の数字までの長さ
!!例
<<<
1.41421356237309504
>>>
この場合19点が与えられる。