求助60分
查看原帖
求助60分
616673
2012zx楼主2022/11/20 13:13
#include <bits/stdc++.h>
using namespace std;
int m, s, t;
int ans1 = 1e9, ans2 = -1e9;
inline void dfs(int magic, int sum, int tim) {
  if (sum <= 0) {
    ans1 = min(ans1, t - tim);
    return;
  }
  if (tim <= 0) {
    ans2 = max(ans2, s - sum);
    return;
  }
  // 1.使用法术
  if (magic >= 10) {
    dfs(magic - 10, sum - 60, tim - 1);
  } else {
    // 2.跑步
    dfs(magic, sum - 17, tim - 1);
  }
  // 3.休息
  int tmp = magic , cnt = 0;
  while(tmp < 10){
    tmp += 4;
    // cout<<tmp;
  }
  dfs(magic + 4, sum, tim - 1);
  return;
}
int main() {
  cin >> m >> s >> t;
  dfs(m, s, t);
  if (ans1 == (int)1e9) {
    cout << "No" << endl;
    cout << ans2;
  } else {
    cout << "Yes" << endl;
    cout << ans1;
  }
  return 0;
}

最后4个点WA了,求助!

2022/11/20 13:13
加载中...