imomoの勉強記録

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

ABC176に参加しました

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

解いた/挑んだ問題

A問題

問題の概要

一度に最大X個のたこ焼きを作るのにT分かかります。
N個のたこ焼きを作るためにかかる時間を答えよ

制約
  • 1 \leq N,X,T \leq 1000
  • 入力はすべて整数
どのように考えたか

nがxで割り切れれば(n/x) *tで割り切れない場合は((n/x) + 1) *t

結果

一発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()
#define rall(v) v.rbegin(), v.rend()
using namespace std;
using ll = long long;
using pi = pair<int, int>;
const ll INF = 1LL << 60;

int main() {
	int n, x, t;
	cin >> n >> x >> t;
	if (n % x == 0) {
		cout << (n / x) * t << endl;
	}
	else cout << ((n / x)+1) * t << endl;
	return 0;
}

簡単な問題だった

ACまでの時間

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

f:id:iiiimmmmo:20200822225254p:plain
ABC176_A

B問題

問題の概要

Nが9の倍数であるか判定せよ

制約
  • 0 \leq N \leq 10^{200000}
  • Nは整数
どのように考えたか

Nをstringで受け取り一桁ずつ数値に直してsumに加算
sumが9で割り切れるか判定

結果

一発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()
#define rall(v) v.rbegin(), v.rend()
using namespace std;
using ll = long long;
using pi = pair<int, int>;
const ll INF = 1LL << 60;

int main() {
	string s;
	cin >> s;
	ll sum = 0;
	for (auto ss : s) {
		sum += ss - '0';
	}
	if (sum % 9  == 0) {
		cout << "Yes" << endl;
	}
	else {
		cout << "No" << endl;
	}
	return 0;
}

数値変換処理を結構行うので間に合うか怖かった

ACまでの時間

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

f:id:iiiimmmmo:20200822225311p:plain
ABC176_B

C問題

問題の概要

N人が一列に並んでいる
二番目以降の人は自分より前に自分より身長の高い人がいないように踏み台を設置したい
踏み台の高さの合計の最小値を求めよ

制約
  • 1 \leq N \leq 2 × 10^5
  • 1 \leq A_i \leq 10^9
  • 入力はすべて整数
どのように考えたか

前から見ていって前より身長が低い人がいたら前の人と同じになるように踏み台を追加した

結果

二回目で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()
#define rall(v) v.rbegin(), v.rend()
using namespace std;
using ll = long long;
using pi = pair<int, int>;
const ll INF = 1LL << 60;

int main() {
	int n;
	cin >> n;
	vector<ll>stu(n);

	rep(i, n)cin >> stu[i];
	ll tmp = 0,sum=0;
	for (int i = 1; i < n; i++) {
		if (stu[i] < stu[i - 1]) {
			tmp = stu[i-1] - stu[i];
			stu[i] += tmp;
			sum += tmp;
		}
	}
	cout << sum << endl;
	return 0;
}

変数をintで宣言してWAだったのでlong longが必要な時を見極めていきたい

ACまでの時間

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

f:id:iiiimmmmo:20200822225327p:plain
ABC176_C

結果

コンテスト結果

ABCの3完でした。
D問題に80分挑みましたが解けなくて悔しいです。

f:id:iiiimmmmo:20200822225343p:plain
ABC176

パフォーマンス、レーティング変動

今回のパフォーマンスは613、前回より約40下がってしまいました。
レーティングはそれに伴い+2の589となりました。

f:id:iiiimmmmo:20200822231113p:plain
コンテスト成績表
f:id:iiiimmmmo:20200822231157p:plain
ABC176を終えた時点でのレーティング

反省点

今回はABCがとても簡単だったので、ある程度の早解き力が必要なんだと実感しました。
聞いた話によるとEが簡単だったらしく、Dを捨ててEを素早く見ていたら結果が変わったのかと思うと反省点が多いです。