4 条题解

  • 3
    @ 2022-7-11 12:20:06
    #include<iostream>
      #include<cstdio>
      #include<cstring>
      using namespace std;
      int m,s,t;// 法力,距离,时间
     struct node
     {
          int juli;// 距离 
          int fali;// 法力 
         int shanshuo;
     }dp[300001];
     int main()
     {
         scanf("%d%d%d",&m,&s,&t);
         dp[0].fali=m;
         for(int i=1;i<=t;i++)
         {
             if(dp[i-1].fali>=10)
             {
                 dp[i].fali=dp[i-1].fali-10;
                 dp[i].shanshuo=dp[i-1].shanshuo+60;
             }
             else
             {
                 dp[i].fali=dp[i-1].fali+4;
                 dp[i].shanshuo=dp[i-1].shanshuo;
             }
             dp[i].juli=max(dp[i-1].juli+17,dp[i].shanshuo);
         }
         if(dp[t].juli>s)
         {
             for(int i=0;i<=t;i++)
             {
                 if(dp[i].juli>s)
                 {
                    printf("Yes\n%d",i);
                     return 0;
                 }
             }
        }
         else
         {
             printf("No\n%d",dp[t].juli);
             return 0;
       }
        return 0;
     }
    
    • 2
      @ 2022-7-20 8:50:32

      来一发滚动数组优化dp

      #include <bits/stdc++.h>
      using namespace std;
      int n, m, t, sum1, sum2;
      int main() {
      	freopen("escape.in", "r", stdin);
      	freopen("escape.out", "w", stdout); 
      	cin >> m >> n >> t;
      	for (int i = 1; i <= t; i ++) {
      		sum1 += 17;
      		if (m >= 10) m -= 10, sum2 += 60;
      		else m += 4;
      		sum1 = max(sum1, sum2);
      		if (sum1 > n) {
      			printf("Yes\n%d\n", i);
      			return 0;
      		}
      	}
      	printf("No\n%d\n", sum1);
      	return 0;
      }
      
      • -2
        @ 2025-7-4 13:38:29

        6

        • @ 2025-7-11 15:55:56

          为什么有差评啊?

      • -4
        @ 2025-4-6 15:20:46

        #include<bits/stdc++.h> using namespace std; int main() { int m,s,t,now=0; cin>>m>>s>>t; int s1=0,s2=0; for(int i=1;i<=t;i++) { s1+=17; if(m>=10) { s2+=60; m-=10; } else m+=4; if(s2>s1) s1=s2; if(s1>s) { cout<<"Yes"<<endl<<i<<endl; return 0; } } cout<<"No"<<endl<<s1<<endl; return 0; }

        • 1

        信息

        ID
        5
        时间
        1000ms
        内存
        256MiB
        难度
        4
        标签
        (无)
        递交数
        148
        已通过
        71
        上传者