ABC163に参加しました(Unrated)
AtCoderのコンテストに参加した際の結果と考え方、反省点などを書いていきます。
コンテストページはこちら
解いた/挑んだ問題
A問題
問題の概要
半径が与えられる。
円の周長を絶対誤差か相対誤差ので答えよ
どのように考えたか
周長の公式はrなので、
結果
一発ACしました。
・問題のコード
#include "bits/stdc++.h" using namespace std; #define rep(i, n) for (int i = 0; i < (int)(n); i++) int main() { const double PI = 3.14159265358979323846; double R; cin >> R; cout << fixed << setprecision(8) << R * 2 * PI << endl; }
なんだかんだ初めてを使ったので、ライブラリがわからず、定数として定義した。
次回からはライブラリのM_PIを使っていきたいです。
ACまでの時間
今回はunratedとなって、早く解く必要がなかったため、時間は載せません。
B問題
問題の概要
)日の夏休みに)個の宿題が与えらえた。
宿題を同時並行に進めることはできず、i番目の宿題は終えるのに)分かかる。
全ての宿題を終わらせて何日間遊ぶことができるか。遊べない場合は-1を出力する。
どのように考えたか
Mでforループを回して、ループの中でNからを引いていく。
Nが0未満なら-1を出力、0以上ならそのまま出力
結果
一発ACしました。
提出したコード
#include<bits/stdc++.h> using namespace std; int main(){ int M,N,A; cin >> N >> M; for(int i = 0;i < M;i++){ cin >> A; N -= A; } if(N < 0){ cout << -1 << endl; }else{ cout << N << endl; } }
普段よりだいぶ易しめの問題な印象を受けました。
D以降もスラスラっと解けるようになりたいです。
ACまでの時間
今回はunratedとなって、早く解く必要がなかったため、時間は載せません。
C問題
問題の概要
)人の会社で社員番号が1からNまで振られている。
社員番号1以外の社員は直属の上司が一人いる。
社員番号iの直属の上司の社員番号がの時、各社員の直属の部下は何人いるか 改行区切りで出力せよ。
結果
2回目でAC。
最初は社員番号から1を引くのを忘れて居ました。
・提出したコード
#include"bits/stdc++.h" using namespace std; int main() { int N, a; cin >> N; vector<int> human(N, 0); for (int i = 0; i < N-1; i++) { cin >> a; human[a - 1]++; } for (int n : human) cout << n << endl; }
何かの値がオーバーフローとかするのかなと思いながらコードを書いてました。
特にそのような傾向もみられず、無事ACできてよかったです。
ACまでの時間
今回はunratedとなって、早く解く必要がなかったため、時間は載せません。
D問題
問題の概要
のN+1個の数がある。
この中から個以上を選ぶとき、その和としてあり得るものの個数をで求めよ。
どのように考えたか
nCrで組み合わせの数だして、被る値だけ引けばいいのではないか?
その被る値の導出方法が分かりませんでした。
結果
未提出
ACまでの時間
なし
結果
コンテスト結果
ABCの3完でした。
今回はunratedとなってしまって残念です。
順位、パフォーマンス変動
変動なし
反省点
今回はunratedとなってしまい、悲しい気持ちもありましたが、
順位を気にする必要がないので、のんびりと解いていきました。
普段のコンテストではできない落ち着いてコーディングをしたので、普段よりミスは減ったのではないかと思います。
普段のコンテストでもこの落ち着いて挑む気持ちを忘れずにしたいです。