前提・実現したいこと
以下の問題について、以下提出ソースコードで4行のifブロックを削除するとWAが出る原因をご教授いただけますでしょうか。
また、WAが出るような入力として考えられるものがありましたら合わせてご教授いただけますでしょうか。
削除しない場合はACとなります。
よろしくお願いいたします。
発生している問題・エラーメッセージ
以下提出ソースコードでACは出来たのですが、ソースコードコメントにある4行を削除すると9件のWAが出ます。
この4行の代わりに以下の行でc
が1以上の場合をケアしているつもりですが、どんなケースがケア出来ていないかが分かりません。
cpp
1Y = max(0LL, Y);
提出ソースコード
cpp
1#include <bits/stdc++.h> 2using namespace std; 3#define ll long long 4#define rep(__x, __start, __end) for(int __x = __start; __x < __end; __x++) 5template <class T> bool chmin(T &a, T b) { if (a > b) {a = b; return true; } return false; } 6 7const ll INF = 10000000000000000; 8ll N,H,A,B,C,D,E; 9 10int main() { 11 cin >> N >> H >> A >> B >> C >> D >> E; 12 13 ll ans = INF; 14 rep(X,0,N+1) { 15 ll c = H + X*B - (N-X)*E; // 普通の食事だけをX回とった時のN日後の満腹度. 16 17 /* ここからの4行を除くと9件のWAが出る. */ 18 if (c >= 1) { 19 chmin(ans, X*A); 20 continue; 21 } 22 /* ここまで */ 23 24 ll a = 1 - c; 25 ll b = D+E; // 何も食べない日を1日質素な食事に変えるごとに増える満腹度. 26 ll Y = a/b + (a%b != 0); // 切り上げ 27 Y = max(0LL, Y); // <-- cが1以上の場合はここで担保している気がする 28 if (X+Y>N) continue; 29 chmin(ans, X*A+Y*C); 30 } 31 cout << ans << endl; 32 return 0; 33}
補足情報(FW/ツールのバージョンなど)
Atcoderでのコンパイラ
- C++ (GCC 9.2.1)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/04 08:12
2020/09/04 15:21