P1095 파수꾼의 탈출(DP 또는 욕심)
13851 단어 낙곡
: M,S,T , , 。
17/s, 10 60/s, 4/s
S,
----------------------------------------------------
,5s 20, , 120/7s
119/7s
, DP( , )
DP
#include
#include
using namespace std;
int dp[300001];
int main(){
int m,s,t;
scanf("%d%d%d",&m,&s,&t);
for(int i=1;i<=t;i++){//
if(m>=10)dp[i]=dp[i-1]+60,m-=10;// ,
else dp[i]=dp[i-1],m+=4;//
}
for(int i=1;i<=t;i++){
dp[i]=max(dp[i],dp[i-1]+17);// ,dp[i] ( )
if(dp[i]>=s){printf("Yes
%d",i);return 0;}// s, , yes
}
printf("No
%d",dp[t]);// , no
return 0;
}
탐욕스럽다
#include
#define ll long long
#define R register int
#define fo(i,j,n) for(R i=j; i<=n;++i)
using namespace std;
int M,S,T,now;
void solve1(){
int s1 = 0, s2 = 0;
fo(i,1,T){
s1 += 17; //
if(M>=10){ //
M-=10;
s2+=60;
}else M+=4;
s1 = max(s1,s2); // ,
if(s1>=S){
cout<<"Yes"<<endl<<i;
return;
}
}
cout<<"No"<<endl<<s1;
}
void solve2(){
int ans= 0,time=0, blink=0;
while(ans<S){
time++;
if(time>T){
cout<<"No"<<endl<<ans;
return;
}
if(M>=10){//
blink+=60;
M-=10;
}else M+=4;
ans+=17; // +
ans = max(ans, blink);
}
cout<<"Yes"<<endl<<time;
}
int main(){
cin>>M>>S>>T;
solve2();
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
낙곡-훈련장-초보촌-과정함수와 귀속-P1036선수설명: n에서 k개의 수를 구하는 것에 관하여 C(n,k)의 구체적인 추출법은 귀속으로 실현할 수 있다. 소수에 대한 판단:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.