问题描述
小王参加的考试是几门科目的试卷放在一起考,一共给 t 分钟来做。他现在已经知道每
门科目花的时间和得到的分数的关系,还有写名字要的时间(他写自己的名字很慢)请帮他
算一下他最高能得几分。总分一定时,第一门科目成绩尽量高,第一门科目成绩也一样时,
第二门科目成绩尽量高……以次类推。如果放弃某一门的考试(花的时间为 0),那么
名字也就不用写了。 输入格式
第一行三个正整数 t,n,name. t 是总时间,n 表示考 n 个科目,name 表示写名字要的
时间(每一门科目写名字时间一样)。接下来 n 行,每行 t 个正整数,第 i 个数表示时间为
i 时这门科目的分数(不一定递增)。时间为 0 时这门科目的分数为 0,所以就不读入了。 输出格式
一个数,即总分。 样例输入
5 3 1
1 2 3 4 5
2 3 3 4 6
3 3 3 2 5
样例输出
4 / 4 内部资料,版权所有
6
样例说明
第一门:0 分钟;第二门:3 分钟,写名字 1 分钟,做题目 2 分钟,得 3 分;第三门:2
分钟,写名字 1 分钟,做题目 1 分钟,得 3 分。总共得 6 分。
数据范围
对于 50 %的数据,n<=4
对于 100 %的数据,n<=10,t<=100, 所有数据都在 longint 范围内

这个题看起来蛮正经的,一种浓浓的背包气息散发出来。我们就直接按照01背包做就好了,每科可以选择做多长时间,然后一个dp数组,dp[i][j]表示查看前i科,花费j点时间,最多可以得多少分。顺推就好了(虽然感觉很难想的样子,但就是讲不出来……尽量讲清楚一点)。

下面就是代码了:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
long long n,t,name,e,shu;
long long sz[25][200];//开这么大有很多好处,首先不会re,我看着也顺眼
long long dp[25][200];
int main()
{
freopen("times.in","r",stdin);
freopen("times.out","w",stdout);//freopen
scanf("%lld%lld%lld",&t,&n,&name);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=t;j++)
{
scanf("%lld",&sz[i][j]);//读入
}
}
for(int i=0;i<=n;i++)
{
for(int j=0;j<=t;j++)//前2层循环是遍历科目和总时间的
{
for(int k=0;k<=t;k++)//k是准备在第i+1科考试做多长时间。
{
e=name+k+j;//已经用了j分钟,这一科做k分钟,写名字name分钟。
if(k==0)//这一科不做,就不用写名字
{
e-=name;
}
if(e>t)//时间不够了
{
break;
}//dp[i+1][e]是说,前i+1科,共用e分钟,得到的最大分数。
dp[i+1][e]=max(dp[i+1][e],dp[i][j]+sz[i+1][k]);//原来和这次的对比。
}
if(i==n)
{
shu=max(dp[i][j],shu);//不一定是递增的,所以j是几都要判断
}
}
}
cout<<shu<<endl;
return 0;
}

这玩意真难讲,明明可以很正当的想到,但讲不出来,如果大家觉得听不懂,可以看看别的大佬的博客。

T4 分配时间 题解的更多相关文章

  1. RQNOJ 140 分配时间:dp

    题目链接:https://www.rqnoj.cn/problem/140 题意: 小王参加的考试是几门科目的试卷放在一起考,一共给t分钟来做. 他现在已经知道第i门科目花k分钟可以拿到w[i][k] ...

  2. LOJ6346:线段树:关于时间 ——题解

    https://loj.ac/problem/6346 题目还是没法粘贴…… 一道蛮不错的题. 老年选手困了30min后才想要推式子实在是太懒了…… 我们可以对每次更新列表看成系数*x即可. 举例:第 ...

  3. Acwing P288 休息时间 题解

    Analysis 首先假设一天的第N小时与后一天的第一个小时不相连, 这种情况下DP转移比较好想 dp[i][j][0/1]dp[i][j][0/1]表示 考虑一天的前i个小时,已经休息了j小时,且第 ...

  4. 6.12友谊赛T4城市交通费题解

    与普通的最短路径不同的是,题目中新引入了一个计入总体的费用——城市建设费.由于城市建设费由整体的某最大值决定,导致解没有最优子结构的性质,给思维带来难度. 既然最棘手的是城市建设费,我们就对它分类讨论 ...

  5. Minimum Snap轨迹规划详解(2)corridor与时间分配

    在上一篇文章中,我们得到的轨迹并不是很好,与路径差别有点大,我们期望规划出的轨迹跟路径大致重合,而且不希望有打结的现象,而且希望轨迹中的速度和加速度不超过最大限幅值.为了解决这些问题有两种思路: 思路 ...

  6. 【ThinkingInC++】64、重载new和delete,来模仿内存的分配

    /** * 书本:[ThinkingInC++] * 功能:重载new和delete.来模仿内存的分配 * 时间:2014年10月5日14:30:11 * 作者:cutter_point */ #in ...

  7. 垃圾收集器与内存分配策略-HotSpot算法实现

    ①枚举根节点 可达性分析中,查找引用链这个操作,可作为GC Roots的节点主要在全局性的引用中(例如常量和静态属性)和执行上下文(例如栈帧中的本地变量表)中,现在很多应用本地方法区就有数百找,要一个 ...

  8. C++中关于new及动态内存分配的思考

    如何实现一个malloc? malloc_tutorial.pdf ———————————————————————————————————— 我们知道,使用malloc/calloc等分配内存的函数时 ...

  9. 题解【luoguP4053 bzojP1029 [JSOI2007]建筑抢修】

    洛谷题链 bzoj题链 PS: \(t_i\) : 在什么时候建筑 \(i\) 自爆 \(a_i\) : 修复 \(i\) 所花时间 题解 算法:贪心+堆维护 贪心策略: 直接按 \(t\) 贪心?显 ...

随机推荐

  1. php读取富文本处理html标签问题

    thinkphp的一项配置会将富文本编辑器的内容中的html标签进行转义处理 'DEFAULT_FILTER' => 'htmlspecialchars', // 默认参数过滤方法使用htmls ...

  2. Web前端 -- Webpack

    一.Webpack Webpack 是一个前端资源加载/打包工具.它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源. 二.Webpack安装 1.全局安装 npm i ...

  3. Appium 概括与环境安装

    Appium 是什么, 有什么用 Appium 用途和特点 appium 是一个移动 app 自动化工具 手机APP自动化有什么用? 自动化完成一些重要性的任务 比如微信客服机器人 爬虫 就是通过自动 ...

  4. CODING DevOps 系列第五课:微服务测试——微服务下展开体系化的微服务测试

    微服务测试的痛点与挑战 这张图可以形象地展示单体服务和微服务的对比,单体应用就像左边巨大的集装箱,软件模块和应用都包括其中:而微服务就像是由一个小集装箱组成,微小的服务组成一个庞大.完整的系统.单体服 ...

  5. vue全家桶(3.2)

    4.5.创建实例 可以创建一个自定义实例应用于多个请求接口 <template> <div class="page"> </div> </ ...

  6. node+ajax实战案例(5)

    6.添加客户 6.1.点击添加按钮,弹出表单框 // 添加用户 显示对话框 var addBtn = document.getElementById('add-btn'); var addUser = ...

  7. 【总结】LINQ查询基本操作列表

    每个LINQ查询都以from子句开始,from子句包括以下两个功能. 指定查询将采用数据源. 定义一个本地变量,表示数据源中单个元素. string[] values = { "中国&quo ...

  8. Oracle安装完成后修改服务器机器名,Oracle部分服务无法启动

    Oracle安装完成后修改服务器机器名,Windows server 2012 R2系统提示Oracle 11g下面3个服务无法启动: OracleDBConsoleorcl OracleOraDb1 ...

  9. 学习前端的时候,突然想起了Sharepoint母版页里的占位符,算知识的融会不?

    今天看到这个段话,我就想起来当时学习Sharepoint的时候,总是搞不明白我们老师讲的那个母版页里的占位符到底是干啥的.现在看到了类似的东西,让我想起来了之前一直搞不懂的东西,很感慨. (完)

  10. python-多任务-进程

    什么是进程? 程序是静态的,当程序运行起来就叫做进程. 进程是操作系统分配资源的基本单元. 进程.线程的区别与优缺点 1. 定义的不同: 进程是系统进行资源分配的最小单位. 线程是进程的一个实体,是C ...