zoukankan      html  css  js  c++  java
  • Maximize The Beautiful Value

    链接

    T组样例

    n个数和k(最少移动的次数)

    非递减序列

    求最少移动k步 F(N)最大的值

    思路: 

    非递减序列说明是递增的,也就是最开始的F(N)是最大的,现在移动了还要保证最大,也就是移动最少的步数,k步,求和自然要想到前缀和

    be记录原始序列的和

    sum[]记录前缀和

    now 记录现在的

    ans取最大值

    注意数据范围

    #include <bits/stdc++.h>
    using namespace std;
    #define int long long
    const int maxn = 1e5 + 10;
    int t,n,k,a[maxn],sum[maxn],be,ans;
    signed main(){
        //freopen("in","r",stdin);
        ios::sync_with_stdio(0);
        cin >> t;
        while(t--){
            cin >> n >> k;
            be = 0;
            for(int i = 1; i <= n; i++) {
                cin >> a[i];
                sum[i] = sum[i - 1] + a[i];
                be += i * a[i];
            }
            ans = 0;
            for(int i = 1; i + k <= n; i++){
                int now = be + sum[i + k - 1] - sum[i - 1] - a[i + k] * k;
                ans = max(ans,now);
            }
            cout << ans << endl;
        }
        return 0;
    }
    View Code
  • 相关阅读:
    ssh端口转发
    linux git命令安装
    linux git命令
    linux cpio命令
    linux 抓包工具
    js 深拷贝 ,浅拷贝
    vue $router 打开新窗口
    excel常用操作
    Kafka Topic的增删改查操作
    linux上删除文件名乱码的文件
  • 原文地址:https://www.cnblogs.com/xcfxcf/p/12655868.html
Copyright © 2011-2022 走看看