2 solutions

  • 1
    @ 2025-2-22 10:47:40

    比季总还厉害的写法 高端注释,你值得拥有!!!

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e5+10;
    int f[N][6],a[N];
    /*
    f[i][0] 表示第i天没有股票且完成了一次交易
    f[i][1] 表示第i天有股票且没有完成第一次交易
    f[i][2] 表示第i天没有股票且完成了一次交易
    f[i][3] 表示第i天有股票且没有完成第二次交易
    f[i][4] 表示第i天没有股票且完成了两次交易
    */ 
    int main()
    {
    	int n;
    	cin>>n;
    	memset(f,0xcf,sizeof f);//无穷小 
    	f[0][0]=0;//入口 
    	for(int i=1;i<=n;i++)
    	{
    		int x;
    		cin>>x;
    		f[i][0]=f[i-1][0];
    		f[i][1]=max(f[i-1][1],f[i-1][0]-x);
    		f[i][2]=max(f[i-1][2],f[i-1][1]+x);
    		f[i][3]=max(f[i-1][3],f[i-1][2]-x);
    		f[i][4]=max(f[i-1][4],f[i-1][3]+x);
    	} 
    	cout<<max(f[n][0],max(f[n][2],f[n][4]));
    	return 0;
    }
  • 0
    @ 2024-8-21 11:59:53
    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e5+10;
    int f[N][6],a[N];
    int main()
    {
        int n;
        cin>>n;
        memset(f,0xcf,sizeof f);
        f[0][0]=0;
        for(int i=1;i<=n;i++)
        {
            int x;
            cin>>x;
            f[i][0]=f[i-1][0];
            f[i][1]=max(f[i-1][1],f[i-1][0]-x);
            f[i][2]=max(f[i-1][2],f[i-1][1]+x);
            f[i][3]=max(f[i-1][3],f[i-1][2]-x);
            f[i][4]=max(f[i-1][4],f[i-1][3]+x);
        }
        cout<<max(f[n][0],max(f[n][2],f[n][4]));
        return 0;
    }
    
    • 1

    Information

    ID
    218
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    5
    Tags
    # Submissions
    17
    Accepted
    8
    Uploaded By