imomoの勉強記録

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

ABC164に参加しました

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

解いた/挑んだ問題

A問題

問題の概要

羊がS(1 ≤ S ≤ 100)匹、狼がW(1 ≤ W ≤ 100)匹います。
羊が狼より多い場合"safe"を、それ以外は"unsafe"を出力せよ。

どのように考えたか

S>Wなら"safe"、elseなら"unsafe"

結果

一発ACでした。(Cで提出してしまった)
・提出したコード

#include"bits/stdc++.h"

#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define REP(i, n) for (int i = 1; i < (int)(n); i++)
#define all(v) v.begin(), v.end()
using ll = long long;

using namespace std;
int main(){
	int S, W;
	cin >> S >> W;
	if (S <= W) {
		cout << "unsafe" << endl;
	}
	else {
		cout << "safe" << endl;
	}
}

問題文で引っ掛かった人が少しいそうだと思い、以上と未満に気を付けながらコーディングをしました。

ACまでの時間

ACしたのはコンテスト開始から3分後です。

f:id:iiiimmmmo:20200426234516p:plain
ABC164_A

B問題

問題の概要

高橋君のモンスターは体力A攻撃力B,青木君のモンスターは体力C攻撃力Dです。
高橋君から互いに攻撃しあいます。
A,B,C,D全て(1 \leq A,B,C,D \leq 100)
高橋君が勝った場合"Yes"を、負けた場合"No"を出力せよ

どのように考えたか

while文の中で互いに攻撃しあう
どちらかの体力が1以上じゃなくなった場合breakする
高橋君の体力が残っていた場合"Yes",そうでない場合"No"を出力

結果

一発ACしました。(またCで提出してしまいましたが)
提出したコード

#include"bits/stdc++.h"

#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define REP(i, n) for (int i = 1; i < (int)(n); i++)
#define all(v) v.begin(), v.end()
using ll = long long;

using namespace std;
int main(){
	int a, b, c, d;
	int cnt = 0;
	cin >> a >> b >> c >> d;
	while(a >= 1 && c >= 1){
		if(cnt % 2 == 1)a -= d;
		if(cnt % 2 == 0)c -= b;
		cnt++;
	}

	if (a >= 1) {
		cout << "Yes" << endl;
	}
	else {
		cout << "No" << endl;
	}
}

<解いてみての感想を書く>

ACまでの時間

ACしたのはコンテスト開始から10分後です。

f:id:iiiimmmmo:20200426234552p:plain
ABC164_B

C問題

問題の概要

クジをN(1 ≤ N ≤ 2 × 10^5)回引いて、i回目に文字列で表せる商品S_iが出ました。
景品は何種類ありますか?

どのように考えたか

setにS_iを入れてset.size()をすれば何種類か出る

結果

一発AC
提出したコード

#include"bits/stdc++.h"

#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define REP(i, n) for (int i = 1; i < (int)(n); i++)
#define all(v) v.begin(), v.end()
using ll = long long;

using namespace std;
int main(){
	int N;
	string S;
	set<string>gacha;
	cin >> N;
	rep(i, N) {
		cin >> S;
		gacha.insert(S);
	}
	cout << gacha.size() << endl;
}

<解いてみての感想を書く>

ACまでの時間

ACしたのはコンテスト開始から12分後です。

f:id:iiiimmmmo:20200426234619p:plain
ABC164_C

結果

コンテスト結果

ABCの3完でした。
Dは見た瞬間に諦め、Eはダイクストラ法っぽかったので書いては見ましたがダメでした。

f:id:iiiimmmmo:20200426234312p:plain
ABC164

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

順位は前回より3000近く上がり4676位、レーティングも50近く上がりました。

f:id:iiiimmmmo:20200426235243p:plain
コンテスト成績表

f:id:iiiimmmmo:20200426235334p:plain
ABC164を終えた時点でのレーティング

反省点

今回はCとDの壁が大きく、実質ABC早解きコンテストと感じました。
茶色が見えてきましたが、焦らず堅実にやっていきたいです。