imomoの勉強記録

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

ABC178に参加しました

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

解いた/挑んだ問題

A問題

問題の概要

0か1の整数が与えられるので0なら1を、1なら0を出力せよ

制約
  • 0 \leq X \leq 1
  • xは整数
どのように考えたか

偶奇判定して偶数なら1、奇数なら0を出力

結果

二回目で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;
	if (n % 2 == 0) {
		cout << 1 << endl;
	}
	else {
		cout << 0 << endl;
	}
	return 0;
}

0と1の出力を反対に書いてそれに気づいたのが7分後でした 悔やまれます

ACまでの時間

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

f:id:iiiimmmmo:20200914005016p:plain
ABC178_A

B問題

問題の概要

整数a,b,c,dが与えられる
a \leq x \leq b,c \leq y \leq dを満たす整数x,yの最大の積を求めよ

制約
  • -10^9 \leq a \leq b \leq 10^9
  • -10^9 \leq c \leq d \leq 10^9
  • 入力はすべて整数
どのように考えたか

a,bの組とc,dの組ですべて合わせてmaxをとればいい

結果

二回目で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() {
	ll a, b, c, d,tmp=0;
	cin >> a >> b >> c >> d;
	if (a < 0 && 0 <= b || c < 0 && 0 <= d)tmp = 0;
	else tmp = a * c;
	cout << max(max(max(max(a*c,a*d),b*c),b*d),tmp) << endl;


	return 0;
}

複雑な条件分岐を最初書いていたので気づきが足りなかった

ACまでの時間

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

f:id:iiiimmmmo:20200914005033p:plain
ABC178_B

結果

コンテスト結果

ABの2完でした。
今回はABともに解くのがとても遅く、C以降は解けていないので非常につらい回でした
f:id:iiiimmmmo:20200914005049p:plain

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

今回のパフォーマンスは140、前回より400近くも下がってしまいました。
レーティングはそれに伴い-50の538となりました。

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

反省点

今回はミスが多かったり、知らない知識を要求されたりと非常に辛い回でした。
数学系の問題が出るたびに固唾をのんでいる気がするので、この度数学を学びなおそうかと本気で考え始めました。
これからも支えていただけると嬉しいです。