パナソニックプログラミングコンテスト(ABC195)に参加しました
AtCoderのコンテストに参加した際の結果と考え方、反省点などを書いていきます。
コンテストページはこちら
解いた
A問題
問題の概要
は、の倍数ですか?
制約
- 入力は全て整数
どのように考えたか
をして、0ならはの倍数になる
結果
1発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,v,n) for(long long i = v; i <= (long long)(n); i++) #define rrep(i,n) for(long long i = n;0 <= (long long)(i); i--) #define RREP(i,n,v) for(long long i = n;v <= (long long)(i); i--) #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 m,h; cin >> m >> h; if(h%m == 0)cout << "Yes" << endl; else cout << "No" << endl; return 0; }
簡単だった
ACまでの時間
ACしたのはコンテスト開始から1分後です。
B問題
問題の概要
グラム以上グラム以下のミカンが沢山あります。
この中から、ちょうどキログラムのミカンを選ぶとき、選んだミカンの最小数と最大数を出力してください。
できない場合は、'UNSATISFIABLE'と出力して下さい。
制約
- 入力は全て整数
どのように考えたか
グラムのミカンを以下の最大となるようにミカンを、
グラムのミカンを以上の最小となるようにミカンを取る。(それぞれ最小ミカン山、最大ミカン山 個数を と呼ぶことにする)
最小ミカン山は、キログラムまでグラム足りず、最大ミカン山は、キログラムまでグラム足りない。
最小ミカン山をキログラムに近づけるには、選んだミカンをのミカンに変えて行けば良い。
これを、だけ行うことができるので、 × が調整できる最大のグラムとなる。
よって、 × が以上なら個のミカンを取ることが可能。
最大ミカン山でも同じことがいえる
個とを取ることが可能ならそのまま出力、どちらかできない場合は'UNSATISFIABLE'と出力する。
結果
1発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,v,n) for(long long i = v; i <= (long long)(n); i++) #define rrep(i,n) for(long long i = n;0 <= (long long)(i); i--) #define RREP(i,n,v) for(long long i = n;v <= (long long)(i); i--) #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,w,l,r,dur; cin >> a >> b >> w; dur = b-a; w *= 1000; l = w/a; r = (w+b-1)/b; if((dur * l) < (w - (l * a)) || (dur * r) < ((r * b) - w))cout << "UNSATISFIABLE" << endl; else cout << r << " " << l << endl; // cout << l << " " << r; return 0; }
少し難しかった・・・
ACまでの時間
ACしたのはコンテスト開始から24分後です。
結果
コンテスト結果
ABの2完でした。
2完は久しぶりなので、とても悔しいです。
パフォーマンス、レーティング変動
今回のパフォーマンスは311、前回より300近く下がってしまいました。
レーティングはそれに伴い-33の650となりました。
最近下がってしかいないですね・・・
反省点
今回はC問題で詰まって、解けなかったのでDを解いてみたが解けなかったのでこのような結果になってしまいました。
C問題に関しては自分の実装ミスだと思うので気を引き締めていきたいです。