3 条题解

  • 1
    @ 2022-11-13 20:31:13

    dpdp

    #include<bits/stdc++.h>
    using namespace std;
    int n,i,j,a;
    double f[1005][3];
    int main()
    {
        cin>>n;
    	f[1][1]=100;
    	for(i=1;i<=n;i++)
    	{
            cin>>a;
    		if(i<2)f[1][2]=a;
    		else{
    			f[i][1]=max(f[i-1][1],f[i-1][2]*100.0/a);
    			f[i][2]=max(f[i-1][2],f[i-1][1]/100.0*a);
    		}
    	}
    	printf("%.2lf",max(f[n][1],f[n][2]/a*100.0));
    	return 0;
    }
    • 0
      @ 2024-3-12 17:03:42

      二维费用 dpdp 入门题。

      dp0,idp_{0,i} 表示第 ii 天马克的最大值,dp1,idp_{1,i} 表示第 ii 天美元的最大值。很明显,dp0,0=100dp_{0,0} = 100

      于是可以列出如下状态转移方程:

      $$dp_{0,i} = \max(dp_{0,i-1},\frac{dp_{1,i-1}}{100.0}\times a_i $$$$dp_{1,i} = \max(dp_{1,i-1},\frac{dp_{0,i-1}}{a_i}\times 100) $$最终答案即为 dp1,n最终答案即为\ dp_{1,n}。
      • -2
        @ 2024-3-9 19:11:21
        #include <bits/stdc++.h>
        using namespace std;
        int n;
        double a[101];
        int main() {
            scanf ("%d",&n);
            for (int i=1;i<=n;i++) {
                 scanf ("%lf",&a[i]);
                 a[i]/=100.0;
            }
            double now=100;
            for (int i=1;i<=n;i++)
              if (a[i]<a[i-1]) 
                now*=a[i-1]/a[i];    
            printf ("%.2lf",now);
            return 0; 
        }
        
        • 1

        信息

        ID
        2
        时间
        1000ms
        内存
        256MiB
        难度
        1
        标签
        (无)
        递交数
        100
        已通过
        67
        上传者