守望者的逃离 题解
2023-08-25 12:21:08
发布于:广东
34阅读
0回复
0点赞
通过计算,我们可以发现闪现+等CD会比一直跑快,所以能闪现就闪现。走路(plan1)和闪现(plan2)同时进行,如果plan2比plan1快,就用plan2更新plan1。如果plan1比plan2快,就继续进行。如果plan1超过了目标距离,输出"Yes"和plan1的值。否则输出"No"和plan1的值。
AC代码
#include<set>
#include<map>
#include<stack>
#include<queue>
#include<math.h>
#include<stdio.h>
#include<limits.h>
#include<iostream>
#include<algorithm>
#define N 1005
#define int long long
using namespace std;
inline int read(void){
int x=0,f=1;
char c=getchar();
while(c<'0' || c>'9'){if(c == '-') f=-1;c=getchar();}
while(c>='0' && c<='9') x=x*10+c-'0',c=getchar();
return x*f;
}
inline void write(int x) {
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10+'0');
return;
}
class node{
private:
long long plan_1,plan_2;
unsigned long long m,s,t,now;
public:
explicit node(register long long K){
plan_1 = K,plan_2 = K,now = K;
return;
}
inline void get_num(void){
cin >> m >> s >> t;
_start();
}
inline void _start(void){
for(register int i=1; i<=t; i++){
plan_1+=17;
if(m >= 10){
plan_2+=60;
m-=10;
}else m+=4;
if(plan_2 > plan_1) plan_1=plan_2;
if(plan_1 > s){
write_num_1(i);
return;
}
}
write_num_2(plan_1);
return;
}
inline void write_num_1(register int answer){
printf("Yes\n");
write(answer);
return;
}
inline void write_num_2(register int answer){
printf("No\n");
write(answer);
return;
}
};
signed main(void){
node a(0);
a.get_num();
return 0;
}
这里空空如也
有帮助,赞一个