2 solutions
-
1
#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; }
-
0
比季总还厉害的写法高端注释,你值得拥有!!!#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; }
- 1
Information
- ID
- 218
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 5
- Tags
- # Submissions
- 16
- Accepted
- 7
- Uploaded By