-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathguide.html
239 lines (200 loc) · 8.57 KB
/
guide.html
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
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
<title>初心者のためのガイド</title>
初心者の方へのガイドです。<br>
特におすすめの問題を掲載しています。
<h2 class="shadow">まずはじめに</h2>
<h3 class="shadow">環境を準備しましょう</h3>
<p>
手元に使い慣れたテキストエディタや統合開発環境を準備しましょう。これから環境を構築するときは、<a href="https://yukicoder.me/wiki/enviroment_tips">環境構築まとめ</a>が参考になります。
</p>
<p>
環境の構築をしなくても、 <a href="https://yukicoder.me/run">オンライン実行</a>が使用できます。<br>
また、各問題の提出画面でも動作の確認ができます。<br>
<br>
将来的には手元に環境構築できたほうが何かと便利です。
<h4 class="shadow">外部サービス</h3>
また、外部サービスとして以下のようなオンラインコンパイラを利用することも出来ます。
</p>
<ul>
<li><a href="https://ideone.com/">ideone</a></li>
<li><a href="https://wandbox.org/">wandbox</a></li>
</ul>
<h3 class="shadow">チュートリアルの問題を解いてみましょう!</h3>
<p>
これらの問題から始めて、問題の入出力の方法に慣れましょう。コードを書いて、提出ページでコードを提出してみましょう。<br>
入出力の方法が分からない場合は、<a href="/wiki/stdio">言語別標準入出力</a>を参考にしてください。<br>
</p>
<p>
<a href="https://yukicoder.me/problems/12">No.9000 Hello World!(テスト用)</a><br>
簡単な文字列を出力する問題です。
</p>
<p>
<a href="https://yukicoder.me/problems/no/480">No.480 合計</a><br>
与えられた数値を使って合計値を求める問題です。
</p>
<p>
<a href="https://yukicoder.me/problems/527">No.9001 標準入出力の練習問題(テスト用)</a><br>
整数や文字列の入力を受け取る問題です。
</p>
<p>
<a href="https://yukicoder.me/problems/16">No.9002 FizzBuzz(テスト用)</a><br>
入力した値を基に、簡単な処理をしてから出力する問題です。
</p>
<p>
<a href="https://yukicoder.me/problems/no/9008">No.9008 空白区切りで与えられる数値データの合計値を求める(テスト用)</a><br>
<a href="https://yukicoder.me/problems/no/9009">No.9009 改行区切りで与えられる数値データの合計値を求める(テスト用)</a><br>
空白や改行区切りで与えられる問題に慣れましょう。<br>
また32ビット整数型では解けないものもあるということを知っておくと良いでしょう。<br>
(なお、ジャッジは64ビット環境で行われております。)
</p>
<h4 class="shadow">テストケース・解説について</h4>
<p>このサイトでは、問題を解かなくてもテストケースと解説が表示できます。<br>
ですが、悩まずに見てしまうと力にならないと思いますので、なるべく自力で考えてどうしても詰まったら見るようにしましょう。
</p>
<h2 class="shadow">簡単な問題を解いてみよう(★)</h2>
<p>
競技プログラミングをしたことない方でも比較的簡単に解けると思われるシンプルな問題です。<br>
概ね制約を意識しなくても解ける問題です。
</p>
<p>
<a href="https://yukicoder.me/problems/43">No.46 はじめのn歩</a>
</p>
<p>
<a href="https://yukicoder.me/problems/no/388">No.388 階段 (1)</a>
</p>
<p>
<a href="https://yukicoder.me/problems/492">No.188 HAPPY DAY</a>
</p>
<p>
<a href="https://yukicoder.me/problems/699">No.264 じゃんけん</a>
</p>
<p>
<a href="https://yukicoder.me/problems/560">No.207 世界のなんとか</a>
</p>
<p>
<a href="https://yukicoder.me/problems/5">No.32 貯金箱の憂鬱</a>
</p>
<p>
<a href="https://yukicoder.me/problems/339">No.163 cAPSlOCK</a>
</p>
<p>
<a href="https://yukicoder.me/problems/746">No.275 中央値を求めよ</a>(ソートが必要)
</p>
<h4 class="shadow">考察が必要な競技よりの問題</h4>
<p>
<a href="https://yukicoder.me/problems/361">No.143 豆</a>
</p>
<p>
<a href="https://yukicoder.me/problems/111">No.56 消費税</a>
(小数誤差に注意)
</p>
<p>
<a href="https://yukicoder.me/problems/14">No.5 数字のブロック</a>
(コーナーケースに注意)
</p>
<p>
<a href="https://yukicoder.me/problems/134">No.63 ポッキーゲーム</a>
</p>
<p>
<a href="https://yukicoder.me/problems/no/481">No.481 1から10</a>
</p>
<p>
<a href="https://yukicoder.me/problems/no/289">No.289 数字を全て足そう</a>
(文字の操作の基本)
</p>
<p>
<a href="https://yukicoder.me/problems/89">No.47 ポケットを叩くとビスケットが2倍</a>
(少し考察が必要)
</p>
<p>
<a href="https://yukicoder.me/problems/75">No.48 ロボットの操縦</a>
(コーナーケースに注意)
</p>
<p>
<a href="https://yukicoder.me/problems/no/296">No.296 n度寝</a>
(時間の処理)
</p>
<p>
<a href="https://yukicoder.me/problems/35">No.69 文字を自由に並び替え</a>
(競技プログラミングでよくある問題の読み替え問題)
</p>
<!--
<p>
<a href="https://abc015.contest.atcoder.jp/tasks/abc015_1">A - 高橋くんの研修</a> (AtCoder)
</p>
<p>
<a href="https://abc015.contest.atcoder.jp/tasks/abc015_2">B - 高橋くんの集計</a> (AtCoder)
</p>
-->
<p>
他にも簡単な問題(★)はたくさんあります。<a href="/problems">問題一覧</a>から問題を選んで解いてみましょう。
</p>
<h2 class="shadow">アルゴリズム寄りの問題を解く(★★)</h2>
<p>
(★1が解けるようになってきた方だと)解けそうで解けなさそうな問題だと思います。
</p>
<p>
ここから、探索系アルゴリズムが必要になってきます。<br>
制約も意識しないといけない問題が出てきます。<br>
制約を見たら、簡単な解法では解けない。もしくは、制約が小さいので、全て列挙する事が可能かもしれません。
</p>
<p>
少し考察も必要になってきて、競技では最初のハードルである動的計画法を使う問題もあります。<br>
競技プログラミングをよくしてる方から典型かもしれません。<br>
</p>
<p>
慣れないとデバッグが少し大変になってくるので、バグらせないように実装するスキルも必要になってきます。
</p>
<p>
正直、直接業務では出てこないような処理かもしれません。<br>
(ですが、運営者的には、エンジニアはこれらの問題も解けるようなスキルがある世の中になってほしいと願ってます。)
</p>
<p>
<a href="https://yukicoder.me/problems/11">No.3 ビットすごろく</a>
</p>
<p>
<a href="https://yukicoder.me/problems/78">No.45 回転寿司</a>
</p>
<p>
<a href="https://yukicoder.me/problems/19">No.4 おもりと天秤</a>
</p>
<p>
<a href="https://yukicoder.me/problems/25">No.7 プライムナンバーゲーム</a>
</p>
<p>
<a href="https://yukicoder.me/problems/209">No.90 品物の並び替え</a>
</p>
<p>
<a href="https://yukicoder.me/problems/454">No.179 塗り分け</a>
</p>
<!--
<p>
<a href="https://abc015.contest.atcoder.jp/tasks/abc015_3">C - 高橋くんのバグ探し</a> (AtCoder)
</p>
-->
<h4 class="shadow">アルゴリズムの参考</h4>
<ul>
<li>深さ優先探索</li>
<li>幅優先探索</li>
<li>二分探索</li>
<li>素因数分解</li>
<li>エラトステネスの篩(素数)</li>
<li>ユークリッド互除法(最大公約数・最小公倍数)</li>
<li>動的計画法・メモ化再帰</li>
<li>しゃくとり法</li>
<li>Imos法(累積和手法)</li>
</ul>
<h2 class="shadow">難しい問題をとく(★★★以上)</h2>
<p>
より複雑なアルゴリズム・データ構造を使用した問題が出てきます。<br>
考察も必要になり、事前にアルゴリズムについて知ってないと厳しいかもしれません。<br>
この辺が解けると、十分競技プログラミングの問題が解けるようになってると思われますので、どんどん解いていきましょう。<br>
</p>
<h3 class="shadow">アルゴリズムの参考</h3>
<ul>
<li>ワーシャルフロイド法</li>
<li>ダイクストラ法</li>
<li>Nim</li>
<li>Segment Tree/BIT(Fenwick Tree)</li>
<li>優先度付きキュー</li>
</ul>
などなど