luogu T40984Chino的成绩
题目描述
Chino非常注重自己的成绩
Chino有m种方式给自己增加rp以增加成绩,她的每种增加rp的方式都有n个阶段,第i种的第j个阶段增加的rp表示为Aij,表示连续进行了j天第i种增加rp的方式
Chino连续进行同一种方式,效果可能更好也可能更差,她想要知道在n天里能获得的最大rp,你能帮帮可爱的Chino吗?
输入输出格式
输入格式:
第一行,两个正整数n,m
接下来m行,第i+1行为n个整数A[i][1]~A[i][n]
输出格式:
一行一个数,最大的rp
输入输出样例
3 3
3 2 1
3 1 1
3 3 1
9
3 3
3 2 1
3 5 2
4 1 1
12
说明
本题分为3个Subtask
第一个Subtask,2组数据 ,保证n \leq 50n≤50, m \leq 5000m≤5000, a_i \leq 1e9ai≤1e9
对于第二个Subtask,4组数据,保证n \leq 70n≤70, m \leq 10000m≤10000, a_i \leq 1e9ai≤1e9
对于第三个Subtask,4组数据,保证n \leq 100n≤100, m \leq 5000m≤5000, a_i \leq 1e9ai≤1e9
其中每组数据4分,对于每个Subtask及其中的每个数据点,取分数和。
样例解释1
第 1 天进行第 1 项活动,获得 A11=3 点rp。
第 2 天进行第 2 项活动,获得 A21=3 点rp。
第 3 天进行第 1 项活动,获得 A11=3 点rp。
样例解释2
第 1 天进行第 2 项活动,获得 A21=3 点rp。
第 2 天进行第 2 项活动,获得 A22=5 点rp(因为已经连续进行了 2 次第 2 项活动,因而是 A22 而不是 A21。
第 3 天进行第 3 项活动,获得 A31=4 点rp。
这个坑留了好久吧,终于回来填坑了
sol:
首先如果a = {3, 2, 1}, 如果取三天只能是6, 9是不合法的,这个要搞清楚
所以当前这个方案取了几天一定要有
f(i, j)表示到第i天,以第j中方案结尾的最大rp
g(i, j)记录当前这个方案取了几天
1、继续采用当前的方案
f(i,j)=f(i−1,j)+a[j][g(i−1,j)+1])
g(i,j)=g(i−1,j)+1
2、更换方案
f(i,j)=max(f(i−1,k)+a[j][1])(k!=j)
g(i,j)=1
然后这个k可以用前缀和处理掉,(滚存一下)
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n, m, a[][];
int f[][], g[][];
int pre[], suf[];
int main()
{
scanf("%d%d", &n, &m);
for(int i = ; i <= m; i++)
for(int j = ; j <= n; j++)
scanf("%d", &a[i][j]);
memset(f, , sizeof f);
memset(g, , sizeof g);
for(int i = ; i <= n; i++)
{
for(int j = ; j <= m; j++)
{
if (f[i - ][j] + a[j][g[i - ][j] + ] > max(pre[j - ], suf[j + ]) + a[j][])
{
f[i][j] = f[i - ][j] + a[j][g[i - ][j] + ];
g[i][j] = g[i - ][j] + ;
}
else
{
f[i][j] = max(pre[j - ], suf[j + ]) + a[j][];
g[i][j] = ;
}
}
memset(pre, , sizeof pre);
memset(suf, , sizeof suf);
for(int j = ; j <= m; j++)
pre[j] = max(pre[j - ], f[i][j]);
for(int j = m; j >= ; j--)
suf[j] = max(suf[j + ], f[i][j]);
}
int ans = ;
for(int i = ; i <= m; i++)
ans = max(ans, f[n][i]);
printf("%d\n", ans);
}
luogu T40984Chino的成绩的更多相关文章
- 「Luogu 2367」语文成绩
更好的阅读体验 Portal Portal1: Luogu Description 语文老师总是写错成绩,所以当她修改成绩的时候,总是累得不行.她总是要一遍遍地给某些同学增加分数,又要注意最低分是多少 ...
- CJOJ 1331 【HNOI2011】数学作业 / Luogu 3216 【HNOI2011】数学作业 / HYSBZ 2326 数学作业(递推,矩阵)
CJOJ 1331 [HNOI2011]数学作业 / Luogu 3216 [HNOI2011]数学作业 / HYSBZ 2326 数学作业(递推,矩阵) Description 小 C 数学成绩优异 ...
- Luogu 1068 - 分数线划定 - [快速排序]
题目链接:https://www.luogu.org/problemnew/show/P1068 题目描述世博会志愿者的选拔工作正在 A 市如火如荼的进行.为了选拔最合适的人才,A 市对所有报名的选手 ...
- Luogu 1093 - 奖学金 - [排序水题]
题目链接:https://www.luogu.org/problemnew/show/P1093 题目描述某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金.期末,每个学生 ...
- [JLOI 2016]成绩比较
Description 题库链接( \(\text{bzoj}\) 不知道为什么过不了啊... \(\text{luogu loj}\) 都能过...就给 \(\text{luogu}\) 的链接了. ...
- [luogu P3216] [HNOI2011]数学作业
[luogu P3216] [HNOI2011]数学作业 题目描述 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正整数 N 和 M,要求计算 Concatenate (1 ...
- hyfhaha大事记——luogu
成就墙 AK CSP-J 初赛 AK CSP-J 复赛 CSP- J 一等奖 CSP-S 一等奖 大事记 2017-09-20 13:54 注册洛谷账号 之后洛谷一直处于沉沦状态 2018 2018- ...
- sql面试题(学生表_课程表_成绩表_教师表)
原帖链接:http://bbs.csdn.net/topics/280002741 表架构 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程 ...
- 2016福州大学软件工程Beta阶段团队作业成绩汇总
1.评分规则 本次Beta阶段团队作业评分方法如下: 团队得分=[[7次scrum过程评分+(小组互评得分+教师评分)/2]/2],其中过程.小组.教师各30分 说明:由于没有规定提交团队贡献比,因此 ...
随机推荐
- MySQL 数据库规范--调优篇(终结篇)
前言 这篇是MySQL 数据库规范的最后一篇--调优篇,旨在提供我们发现系统性能变弱.MySQL系统参数调优,SQL脚本出现问题的精准定位与调优方法. 目录 1.MySQL 调优金字塔理论 2.MyS ...
- java基础 容器 API
- 在IDEA中构建Tomcat项目流程
在IDEA中构建Web项目流程 打开你的IDEA,跟着我走! 第一步:新建项目 第二步:找到Artifacts 点击绿色的+号,如图所示,点一下 这一步很关键,目的是设置输出格式为war包,如果你的项 ...
- 自己制作Chrome便携版实现多版本共存
本文只针对Windows下的Chrome浏览器的使用. 有时候我们需要使用老版本Chrome,或者仅仅体验一下最新版. 上古时代有IETester用来测试多个IE版本,和本机的IE不冲突. Chrom ...
- SQL 显示表名显示列名
显示表名:show 表名: 显示列(Field)名:show columns from 表名:
- [Loadrunner参数化]一个文件输两列参数的取值
关于LoadRunner参数化的内容,在脚本开发中属于非常重要的一个知识点.关于这部分知识,在书上和网上到处都能找到,本篇只讲一种特殊情况:一个参数化文件为File类型,有多列值,如何进行参数化取值. ...
- Python-生成器_36
#生成器函数 def generator(): print(1) return 'a' ret = generator() print(ret) #只要含有yield关键字的函数都是生成器函数 # y ...
- amd,cmd规范
AMD 和 CMD 的区别有哪些? AMD规范与CMD规范的区别 回顾:前端模块化和AMD.CMD规范(全) 浅析JS模块规范:AMD,CMD,CommonJS 理解AMD ,CMD,CommonJS ...
- jquery中ajax使用
JQuery的Ajax操作,对JavaScript底层Ajax操作进行了封装, <script type="text/javascript"> $.ajax({ url ...
- asp.net mvc5 action多个参数
需要完成http://site.com/user/add/1/2这样的url解析 使用action的参数直接获取数据的方式 Action声明如下 ) { ViewBag.clubID = id; ) ...