imomoの勉強記録

主に勉強の記録などを残していきます

ABC163に参加しました(Unrated)

AtCoderのコンテストに参加した際の結果と考え方、反省点などを書いていきます。
コンテストページはこちら

解いた/挑んだ問題

A問題

問題の概要

半径R(1 ≤ R ≤ 100)が与えられる。
円の周長を絶対誤差か相対誤差の10^{-2}で答えよ

どのように考えたか

周長の公式は2\pirなので、R*2*\pi

結果

一発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;
}

なんだかんだ初めて\piを使ったので、ライブラリがわからず、定数として定義した。
次回からはライブラリのM_PIを使っていきたいです。

ACまでの時間

今回はunratedとなって、早く解く必要がなかったため、時間は載せません。


B問題

問題の概要

N(1 ≤ N ≤ 10^{6})日の夏休みにM(1 ≤ N ≤ 10^{4})個の宿題が与えらえた。
宿題を同時並行に進めることはできず、i番目の宿題は終えるのにA_{i}(1 ≤ N ≤ 10^{4})分かかる。
全ての宿題を終わらせて何日間遊ぶことができるか。遊べない場合は-1を出力する。

どのように考えたか

Mでforループを回して、ループの中でNからA_{i}を引いていく。
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問題

問題の概要

N(2 ≤ N ≤ 2 ×10^{5})人の会社で社員番号が1からNまで振られている。
社員番号1以外の社員は直属の上司が一人いる。
社員番号iの直属の上司の社員番号がA_{i}(1 ≤ A_{i} ≤ i)の時、各社員の直属の部下は何人いるか 改行区切りで出力せよ。

どのように考えたか

vectorに社員数の数の要素数の配列を用意する。
社員番号a - 1の要素を1ずつ足して、拡張for文で出力する。

結果

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問題

問題の概要

10^{100},10^{100} + 1...10^{100}+N(1 ≤ N ≤ 2 ×10^{5})のN+1個の数がある。
この中からK(1 ≤ K ≤ N + 1)個以上を選ぶとき、その和としてあり得るものの個数をmod(10^{9}+7)で求めよ。

どのように考えたか

nCrで組み合わせの数だして、被る値だけ引けばいいのではないか?
その被る値の導出方法が分かりませんでした。

結果

未提出

ACまでの時間

なし

結果

コンテスト結果

ABCの3完でした。
今回はunratedとなってしまって残念です。

順位、パフォーマンス変動

変動なし

反省点

今回はunratedとなってしまい、悲しい気持ちもありましたが、
順位を気にする必要がないので、のんびりと解いていきました。

普段のコンテストではできない落ち着いてコーディングをしたので、普段よりミスは減ったのではないかと思います。
普段のコンテストでもこの落ち着いて挑む気持ちを忘れずにしたいです。