ARC109に参加しました
AtCoderのコンテストに参加した際の結果と考え方、反省点などを書いていきます。
コンテストページはこちら
解いた/挑んだ問題
A問題
問題の概要
100階建ての建物ABがあり、建物AとBはi階同士、またはAのi+1階とBのi階が廊下で繋がっておりx分で移動できる
また、同じ建物には階段があり同じ建物を1階毎にy分で移動できる
Aのa階からBのb階まで移動するとき、最短で何分で移動できるか求めよ
制約
- 入力はすべて整数
どのように考えたか
a階からb階への移動する階で分け、a階とb階が同じ階か、a階が一つ上の階の時のみ廊下で移動
それ以外は廊下移動の時のみと階段移動も含めた移動時間の最小値をとった
結果
5回目でようやくAC
・提出ししたコード
#include<bits/stdc++.h> #include<atcoder/all> #define rep(i, n) for (long long i = 0; i < (long long)(n); i++) #define REP(i, n) for (long long i = 1; i <= (long long)(n); i++) #define FOR(i,x,n,r) for(long long i = x; i< (long long)(n); i+=r) #define afor(a,t) for(auto a:t) #define all(v) v.begin(), v.end() #define rall(v) v.rbegin(), v.rend() template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; } template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; } using namespace std; using namespace atcoder; using ll = long long; using pi = pair<int, int>; ll pows(ll x, ll n) {ll ret = 1;while (n > 0) {if (n & 1) ret *= x;x *= x;n >>= 1;}return ret;} int main() { int a,b,x,y,ans; cin >> a >>b >> x >>y; int res = a-b; if(res < 0){ ans = (((abs(res)+1) * 2 )*x)-x; chmin(ans,abs(res) * y + x); }else if(res <= 1){ ans = x; }else{ ans = (((abs(res)) * 2 )*x)-x; chmin(ans,(abs(res)-1) * y + x); } cout << ans <<endl; return 0; }
上に行くのか下に行くのかなどでバグりちからしてしまった
ACまでの時間
ACしたのはコンテスト開始から62分後です。
結果
コンテスト結果
Aのみの1完でした。
ACまでが遅いしとてもひどい結果だと思います
パフォーマンス、レーティング変動
今回のパフォーマンスは196、前回より大幅に下がってしまいました。
レーティングはそれに伴い-43の594となりました。
反省点
今回はA問題でとてもはまってしまいしかもB問題を解けない散々な結果に終わってしまいました。
やっぱり冬はレートが冷えます 間違いないです。
次こそは頑張りたいです。