#26. 打气球——Yucai OJ第18次测试

2023-10-13 15:30
文章标签 18 26 oj 气球 次测试 yucai

本文主要是介绍#26. 打气球——Yucai OJ第18次测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题描述

ML很喜欢一个打气球的游戏,游戏规则如下: 初始状态,有n行m列的气球,ML有k发子弹。ML每次可以使用一发子弹,打爆某一列最下面的一个气球,并得到相应的分数。如图所示:

某一些气球被打爆以后,ML可以得到一发子弹的奖励。当ML使用完所有子弹或者所有的气球被打爆,游戏结束。 已知每一个气球被打爆的得分以及被打爆以后是否会奖励ML子弹,求游戏结束时,ML的最大得分。

输入格式

第1行包含3个整数 n m k。 接下来n行每行包含m个由正整数a和字符b组成的二元组,第i行第j个二元组表示第i行第j列的气球得分为a,如果b等于’Y’表示打爆该气球会奖励子弹,等于’N’表示不会奖励子弹。

输出格式

输出一个整数,表示ML的最大得分。

样例输入

3 4 2
9 N 5 N 1 N 8 N
5 N 5 Y 5 N 5 N
6 N 2 N 4 N 3 N

样例输出

13

数据规模和约定

对于20%的数据,满足1<=n,m<=5,1<=k<=10,所有的字符c都为N;

对于50%的数据,满足1<=n,m<=200,1<=k<=200,所有的字符c都为N;

对于100%的数据,满足1<=n,m<=200,1<=k<=200,字符c可能为Y;

对于100%的数据,所有的f值都满足1<=f<=10000。

题解

dp+公式+暴力。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int MAXN=201;
 4 int n,m,k,a[MAXN][MAXN];
 5 int sy[MAXN][MAXN],sn[MAXN][MAXN];
 6 int fy[MAXN][MAXN],fn[MAXN][MAXN];
 7 bool b[MAXN][MAXN];
 8 int main(){
 9     cin>>n>>m>>k;
10     for(int i=1;i<=n;i++){
11         for(int j=1;j<=m;j++){
12             char c;
13             cin>>a[i][j]>>c;
14             if(c=='Y'){
15                 b[i][j]=1;
16             }else{
17                 b[i][j]=0;
18             }
19         }
20     }
21     for(int i=1;i<=m;i++){
22         int cnt=0;
23         for(int j=n;j>=1;j--){
24             if(b[j][i]==1){
25                 sy[i][cnt]+=a[j][i];
26             }else{
27                 cnt++;
28                 sy[i][cnt]=sy[i][cnt-1]+a[j][i];
29                 sn[i][cnt]=sy[i][cnt-1]+a[j][i];
30             }
31         }
32     }
33     for(int x=1;x<=m;x++){
34         for(int y=0;y<=k;y++){
35             for(int z=0;z<=n && z<=y;z++){
36                 fy[x][y]=max(fy[x][y],fy[x-1][y-z]+sy[x][z]);
37                 if(z!=0){
38                     fn[x][y]=max(fn[x][y],fy[x-1][y-z]+sn[x][z]);
39                 }
40                 if(y-z>0){
41                     fn[x][y]=max(fn[x][y],fn[x-1][y-z]+sy[x][z]);
42                 }
43             }
44         }
45     }
46     cout<<fn[m][k]<<endl;
47     return 0;
48 }
标程

 

转载于:https://www.cnblogs.com/VOCAOID/p/9562466.html

这篇关于#26. 打气球——Yucai OJ第18次测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/204154

相关文章

react笔记 8-18 事件 方法 定义方法 获取/改变数据 传值

1、定义方法并绑定 class News extends React.Component {constructor(props) {super(props)this.state = {msg:'home组件'}}run(){alert("我是一个run") //方法写在类中}render() {return (<div><h2>{this.state.msg}</h2><button onCli

Day18_0.1基础学习MATLAB学习小技巧总结(18)——MATLAB绘图篇(1)

利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍,为了在这个过程中加深印象,也为了能够有所足迹,我会把自己的学习总结发在专栏中,以便学习交流。 参考书目:《MATLAB基础教程 (第三版) (薛山)》 之前的章节都是基础的数据运算用法,对于功课来说更加重要的内容是建模、绘图、观察数据趋势,接下来我会结合自己的使用经验,来为大家分享绘图、建模使用的小技巧。 二维图形绘制 在本章开

哈理工OJ 2179(深搜)

组合 Time Limit: 1000 MSMemory Limit: 32768 K Total Submit: 7(5 users)Total Accepted: 6(5 users)Rating: Special Judge: No Description 给出一个正整数N,从集合{1,2,3..N} 中找出所有大小为k的子集, 并按照字典序从小到大输出。 Input 第一行是一个整

每日OJ_牛客_求和(递归深搜)

目录 牛客_求和(递归深搜) 解析代码 牛客_求和(递归深搜) 求和_好未来笔试题_牛客网 解析代码         递归中每次累加一个新的数,如果累加和大于等于目标,结束递归。此时如果累加和正好等于目标,则打印组合。向上回退搜索其它组合。此题本身就是一个搜索的过程,找到所有的组合。 #include <iostream>#include <cmath>#in

18. 4 Sum

题目: 解答: 与之前的三数之和的解法类似,也是先排序,然后不断剔除不可能的条件,最后两个参数,通过两头求和计算得出。 代码: class Solution {public:vector<vector<int>> fourSum(vector<int>& nums, int target) {vector<vector<int>> result;int len = nums.size

系统架构师考试学习笔记第三篇——架构设计高级知识(18)面向服务架构设计理论与实践

本章考点:         第18课时主要学习面向服务架构设计理论与实践。根据考试大纲,本课时知识点会涉及单选题型(约占2~5分)和案例题(25分),本课时内容偏重于方法的掌握和应用,根据以往全国计算机技术与软件专业技术资格(水平)考试的出题规律,概念知识的考查内容多数来源于实际应用,还需要灵活运用相关知识点。         本课时知识架构如图18.1所示。 一、SOA的相关概念 (

每日一题~cf 970 div3 (A思维,B小模拟,C二分,D排列数建图成环,E 26个字母暴力+前缀和,F 逆元,G 数论gcd )

A 题意: 有 a 个1 ,b 个2.问是否能将这些数划分为两个数值相等的集合。 输出 YES 或者 NO —————— 问题等价于 将数组 分成两个数值相同的数组。所以sum 应该是偶数。也就是说 1 的个数是偶数。在i1的个数是偶数的情况下,将 2 分成两份,如果2 的个数是偶数,OK。如果是奇数那么需要1来补齐,如果1 的个数大于等于2那么可以补齐。(1 的个数是偶数,需要2个1来补齐,剩下

PHP 验证身份号码 包括15位18位

查了很多资料 发现网上身份证15位的验证并不是那么严谨  今天研究了一下  代码如下 <?phpfunction check_id_card($num){//老身份证长度15位,新身份证长度18位$length = strlen($num);if ($length == 15) { //如果是15位身份证//15位身份证没有字母if (!is_numeric($num)) {return fa

26 页高清大数据开发代码速查表,提升效率必备!【可下载】

各大互联网公司高价抢夺数据人才,为谋求长期发展、获得高薪,很多人转行到了大数据领域。这条路人才虽缺,但要成为优秀大数据工程师并不轻松:别的不说,光学习新技术,巩固旧知识,就需要耗费大量时间精力,实属不易。 为帮助大家提高学习效率,方便日后查找和使用,这里整理了一份大数据开发代码速查表资料,内容包括 Spark、Hadoop 及 Hive 等大数据开发主要知识点。 由于篇幅原因,下面只展示了速查表

26 页高清分布式集群代码速查表,提升效率必备!【可下载】

各大互联网公司高价抢夺海量数据处理、分布式系统开发人才,为谋求长期发展、获得高薪,很多人转行到了大数据、分布式、集群运维领域。这条路人才虽缺,但并不轻松:别的不说,光学习新技术,巩固旧知识,就需要耗费大量时间精力,实属不易。 为帮助大家提高学习和工作效率,方便日后查找和使用其中涉及的知识点,这里整理了一份分布式/集群开发、运维的代码速查表资料,内容包括 Spark、Hadoop 及 Hive 等