1 条题解
-
0
C++ :
#include <bits/stdc++.h> using namespace std; long long n,p,a[1000100]; //f:存放特征值 long long f[1000100],score[1000100],r,ma = LONG_LONG_MIN;//r存放每个人的分数 long long i; bool pd; int main(){ cin>>n>>p; //读入n个值 for(i = 1;i <= n;i++){ cin>>a[i]; } //第一个人的特征值就是数字本身 f[1] = a[1]; //计算初步的特征 for(i = 2;i <= n;i++){ f[i] = max(f[i-1]+a[i],a[i]); } // for(i = 1;i <= n;i++){ // cout<<f[i]<<" "; // } // cout<<endl; //考虑对于每个特征值,可能不是最佳答案 for(i = 2;i <= n;i++){ f[i] = max(f[i],f[i-1]); } // for(i = 1;i <= n;i++){ // cout<<f[i]<<" "; // } // cout<<endl; //第一个人的分数是特征值 score[1] = f[1]; score[2] = f[1] + score[1]; ma = max(score[1],score[2]); for(i = 3;i <= n;i++){ if(f[i-1]>0){ score[i]=score[i-1]+f[i-1]; if(score[i] > score[1]){ pd = true; score[i] %= p; } }else{ score[i] = score[2]; } ma = max(ma,score[i]); } // for(i = 1;i <= n;i++){ // cout<<score[i]<<" "; // } // cout<<endl; // cout<<ma%p; if(pd) cout<<score[n]%p; else cout<<score[1]%p; cout<<endl; return 0; }
- 1
信息
- ID
- 1856
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者