4462 4.曙曙献爱心

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int n,m,k;
int a[1001];
int s[1001];
int f[1001][1001];//f[i][j],i个警察,j个点,能管理的最大人数 
int main(){
    cin>>n>>m>>k;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        s[i]=s[i-1]+a[i];//前缀和 
    }
    /*
    for(int i=1;i<=n;i++){
        cout<<s[i]<<" ";
    }
    cout<<endl;
    */
    for(int i=1;i<=m;i++)//f[i][j],i个警察,j个点,能管理的最大人数 
    {
        int t=min(i*k,n);//i个警察,最多能管理i*k个集会点,但不能超过n,防止数组越界 
        for(int j=1;j<=t;j++){
            f[i][j]=s[j];
            //cout<<setw(4)<<f[i][j]; 
        }
        //超过i*k的新集会点,分两种情况
        //1.新地点不用管;2.新低点需要管(必定一个警察管最后k个点为最优) 
        for(int j=t+1;j<=n;j++){
            f[i][j]=max(f[i][j-1],f[i-1][j-k]+s[j]-s[j-k]);
            //cout<<setw(4)<<f[i][j];
        }
        //cout<<endl;
    }
    cout<<f[m][n];
    return 0;
}
相关推荐
惊鸿一博5 分钟前
Plücker直线_ 用两个三维向量描述一条空间直线
线性代数·算法·直线·几何表示
张小姐的猫7 分钟前
【MySQL】数据类型
android·linux·数据库·c++·mysql·adb·php
估值探索者8 分钟前
【Python量化技术指标实战 02】MACD金叉也分强弱?手工算一次 DIF/DEA 就懂了
java·开发语言·python·股票数据·股票数据api接口
讳疾忌医丶10 分钟前
编译器眼中的 C++ 循环:从指针别名、IEEE 754 结合律到 SIMD 语义证明
开发语言·c++
小道士写程序15 分钟前
Rust 中的字符串与切片(String 与 &str)
算法
重生六道20 分钟前
B站视频时长统计:一段JS脚本搞定分P/合集总时长(附倍速计算)
开发语言·javascript·音视频
Tisfy31 分钟前
LeetCode 3863.将一个字符串排序的最小操作次数:分类讨论(一次遍历)——简单易懂版
算法·leetcode·字符串·题解·分类讨论
XiYang-DING1 小时前
P5528.带过期时间的 LRU 缓存
java·开发语言·缓存
小徐不徐说1 小时前
C++ 机器视觉入门:从零搭建 AOI 开发环境(OpenCV + CMake)
开发语言·c++·opencv
Young Doro1 小时前
从平衡表征到最小充分因果表征:端到端神经网络因果效应估计
算法