“达梦杯”武汉理工大学第五届新生程序设计大赛 D题-呼风唤雨

呼风唤雨

https://ac.nowcoder.com/acm/contest/44887/D

思路

很明显,我们只需要先预处理出来a数组的前缀和sum,然后暴力枚举,分别乘以风和雨的权值,res每次取最大值即可

注意数据溢出,开long long

accode

#include<iostream>
#include<algorithm>
#include<cstring>

#define int long long 

using namespace std;
const int N=1e6+10;

int t, n, a[N], k;
int sum[N];

signed main(){
    cin>>t;
    while(t--){
        cin>>n;
        for(int i = 1; i <= n; i++){
            cin>>a[i];
            sum[i] = sum[i-1] + a[i];
        }
        int ans = 0,tmp;
        for(int i = 1; i <=n; i++){
            tmp = sum[i]*114 + (sum[n]-sum[i])*514;
            ans = max(tmp, ans);
        }
        cout<<ans<<endl;
    }
}
全部评论

相关推荐

10-16 15:48
算法工程师
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务