NC16641. [NOIP2007]守望者的逃离
描述
输入描述
包括空格隔开的三个非负整数M,S,T。
输出描述
第1行为字符串“Yes”或“No”(区分大小写),即守望者是否能逃离荒岛。
第2行包含一个整数。第一行为“Yes”(区分大小写)时表示守望者逃离荒岛的最短时间;第一行为“No”(区分大小写)时表示守望者能走的最远距离。
示例1
输入:
39 200 4
输出:
No 197
示例2
输入:
36 255 10
输出:
Yes 6
C++14(g++5.4) 解法, 执行用时: 5ms, 内存消耗: 504K, 提交时间: 2019-09-28 16:03:10
#include <iostream> using namespace std; int main() { int m,s,t,s2=0,t2=0,s1=0; cin>>m>>s>>t; while(t>t2) { s1+=17; if(m>=10){m-=10;s2+=60;} else m+=4; if(s2>s1) s1=s2; t2++; if(s1>s) break; } if(s1>s) cout<<"Yes"<<endl<<t2; else cout<<"No"<<endl<<s1; return 0; }
C++(clang++11) 解法, 执行用时: 4ms, 内存消耗: 496K, 提交时间: 2020-11-03 18:57:01
#include<bits/stdc++.h> using namespace std; int a,b,m,s,t,i=1; int main() { cin>>m>>s>>t; for(;i<=t;i++) { a+=17; if(m>=10) { m-=10; b+=60; }else m+=4; a=max(a,b); if(a>=s) { cout<<"Yes\n"<<i; return 0; } }cout<<"No\n"<<a; }