当前位置: 首页 > ds >正文

打砖块(洛谷)

hi,大家好啊!

(回眸一笑百媚生^-^)

直接不上表情包了,改文字

一道 提高+/省选− 的题,还是有点挑战性的

但不急,上代码

(作者在破200粉)

#include <algorithm>
#include <iostream>
#define int long long
using namespace std;

const int MAXN = 1003;

int f[MAXN][MAXN];
char c[MAXN][MAXN];

int dp1[MAXN][MAXN]; //dp_i,j: 考虑前i列,花费j颗子弹,最后一颗子弹打在这一列的最高分数
int dp2[MAXN][MAXN]; //dp_i,j: 考虑前i列,花费j颗子弹,最后一颗子弹不打在这一列的最高分数
int sum1[MAXN][MAXN], sum2[MAXN][MAXN]; // sum:分数的前缀和

int n, m, k;
signed main() {
    // 数据输入
    cin >> n >> m >> k;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            cin >> f[i][j] >> c[i][j];
        }
    }
    // 初始化sum
    for (int i = 1; i <= m; i++) {
        int cnt = 0;
        for (int j = n; j > 0; j--) {
            if (c[j][i] == 'Y') {
                sum1[i][cnt] += f[j][i]; // 这一列可以预支
            } else {
                cnt++;
                sum1[i][cnt] = sum2[i][cnt] = sum1[i][cnt - 1] + f[j][i];
            }
        }
    }
    // dp
    for (int j = 1; j <= m; j++) { // 列数
        for (int i = 0; i <= k; i++) { // 消耗的总子弹数
            for (int l = 0; l <= min(n, i); l++) { // 在当前列消耗的子弹数
                dp1[j][i] = max(dp1[j][i], dp1[j - 1][i - l] + sum1[j][l]); // 如果当前这一列不是最后打到的,就可以无脑预支
                if (l != 0) dp2[j][i] = max(dp2[j][i], dp1[j - 1][i - l] + sum2[j][l]); // 不预支的情况
                if (l < i) dp2[j][i] = max(dp2[j][i], dp2[j - 1][i - l] + sum1[j][l]); // 一定可以预支的情况
            }
        }
    }
    cout << dp2[m][k] << '\n';
    return 0;
}
一定要关注本喵哦!!!!!!!!!

http://www.xdnf.cn/news/13691.html

相关文章:

  • 移动端 1px 问题解决方案
  • 从字节到对象的漂流---JavaIO流篇
  • 5. 相机拍摄简单构图
  • 1.9 Express
  • Flutter 常用组件详解:Text、Button、Image、ListView 和 GridView
  • c++中main函数执行完后还执行其它语句吗?
  • FreeRTOS互斥量
  • 面向异构系统的多面体编译优化关键技术研究——李颖颖博士
  • Linux 任务调度策略
  • 一数一源一标准的补充
  • 论文阅读:强化预训练
  • 强化学习入门:交叉熵方法实现CartPole智能体
  • 一个超强的推理增强大模型,开源了,本地部署
  • 跨网数据摆渡系统:破解数据流通难题的“标准答案”
  • 别人如何访问我的内网呢? 设置让外网访问内网本地服务器和指定端口应用的几种方式
  • 曼昆《经济学原理》第九版 第十八章生产要素市场
  • Vue Electron 使用来给若依系统打包成exe程序,出现登录成功但是不跳转页面(已解决)
  • Vue 中 data 选项:对象 vs 函数
  • Rust 学习笔记:通过异步实现并发
  • 【题解-洛谷】P2935 [USACO09JAN] Best Spot S
  • 算法训练第十五天
  • docker推荐应用汇总及部署实战
  • ComfyUI-安装
  • 不装 ROS 也能用 PyKDL!使用kdl_parser解析URDF并进行IK
  • Linux-进程间的通信
  • 大数据服务器的特点都指什么?
  • Python----OpenCV(图像处理——边界填充、图像融合、图像阈值、深拷贝与浅拷贝)
  • 零基础学前端-传统前端开发(第三期-CSS介绍与应用)
  • 【报错】【docker】write /opt/test/Model.gguf: no space left on device
  • 飞书多维表格利用 Amazon Bedrock AI 能力赋能业务