51nod 1636 教育改革
令f[i][j][k]为第i天选择的课程为j,设置作业为a[j]+k时的最大作业量.
那么f[i][j][k]可以由哪些状态转移而来?先把课程按复杂度排序,那么可以转移来的课程是f[i-1][t][r],
其中t是<j,且复杂度a[t].c严格小于a[j].c. 这是前提条件, 其次, 对于a[t]布置的作业数量r,根据题意需要满足作业j布置的作业(a[j]+k) % r == 0,或者是 (a[j]+k) - K = r. 在这些状态转移中取最值即可.
需要留意的地方:因为bi-ai<=100,也就是说布置的作业量的状态属于[ai,bi],所以我们用差值来记录布置了多少作业,没必要朴素的真的去记录布置作业量,因为ai<=10^16..太大了.
其次,要用long long, 各个地方都别漏了. 再其次,转移的时候,需要上一个状态合法,即上一个状态的值非0.
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define FOR(i,a,b) for(int i=(a);i<=(b);++i)
ll N, M, K, cas;
struct node{ll l, r, c;} a[55];
bool cmp(node a, node b) {return a.c < b.c;}
bool ok(ll v, node nd) {return nd.l <= v && v <= nd.r;}
ll f[55][55][105], ans;
int main () {
while (~scanf("%lld%lld%lld", &N, &M, &K)) {
ans = 0;
memset(f, 0, sizeof f);
FOR(i, 1, M) scanf("%lld%lld%lld", &a[i].l, &a[i].r, &a[i].c);
sort(a + 1, a + 1 + M, cmp);
FOR(i, 1, M)
FOR(j, 0, a[i].r - a[i].l)
f[1][i][j] = a[i].l + j;
FOR(i, 2, N) {
FOR(j, 2, M) {
FOR(t, 1, j - 1) {
if (a[j].c <= a[t].c) continue;
FOR(k, 0, a[j].r - a[j].l) {
ll pre = a[j].l + k - K;
ll &cur = f[i][j][k];
if (ok(pre, a[t]) && f[i - 1][t][pre - a[t].l])
cur = max(cur, f[i - 1][t][pre - a[t].l] + a[j].l + k);
pre = (a[j].l + k) / K;
if ((a[j].l + k) % K == 0 && ok(pre, a[t])
&& f[i - 1][t][pre - a[t].l])
cur = max(cur, f[i - 1][t][pre - a[t].l]
+ a[j].l + k);
}
}
}
}
FOR(i, 1, M)
FOR(j, 0, a[i].r - a[i].l)
ans = max(ans, f[N][i][j]);
if (ans) printf("YES\n%lld\n", ans);
else puts("NO");
}
return 0;
}
51nod 1636 教育改革的更多相关文章
- 51nod 1636 教育改革 | DP
51nod 1636 教育改革 | DP 题面 最近A学校正在实施教育改革. 一个学年由n天组成.A学校有m门课程,每天学生必须学习一门课,一门课程必须在一天内学习完.在学习完第i门课程后,学生们会收 ...
- 51 Nod 1636 教育改革(dp)
1636 教育改革 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 最近A学校正在实施教育改革. 一个学年由n天 ...
- 51nod 1636
1636 教育改革 我看过题解了还下了数据,表示很惭愧不想说什么,但还是说两句吧 sol: 因为差值很小只有100,所以对数组下标存的是(选择的数值和左端点的差值) f[i][j][k]即为第i天选了 ...
- 教育改革——国家认证 “网红” 编程语言 Python
特大消息!!! 不止是上海计算机二级考试 ,全国计算机考试等级考试也有要求 如果你正打算考计算机等级,那你需要学习以下知识 要求学习的知识太多了,我就不一一在这里展示了! 一.考试改革的目标 据悉 ...
- 51nod-1636-dp
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1636 1636 教育改革 题目来源: CodeForces 基准时间限制 ...
- 好未来谢华亮:AI 在教育行业中的应用
11 月 23 日,在以「AI 产业技术的渗透与融合」为主题的 NIUDAY 北京站中,好未来 SEG 智慧教育事业部技术总监谢华亮为大家带来了关于「AI 在教育行业中的应用」的分享. 本文是对分享内 ...
- BZOJ 1036 && 树链剖分
还是太弱啊..各种数据结构只听过名字却没有一点概念..树链剖分也在这个范畴..今天来进一步深化一下教育改革推进全民素质提高. 性质 忘了在哪里看到的一篇blog有一句话讲得非常好,树链剖分不是一种数据 ...
- 加州wonders教材扫盲
加州语文教材主要包含以下内容: 1.主教材Reading/Writing Workshop(读写研讨) 2.拓展教材Literature Anthology(文学选集) 3.延伸阅读材料Leveled ...
- 龙芯将两款 CPU 核开源,这意味着什么?
10月21日,教育部计算机类教学指导委员会.中国计算机学会教育专委会将2016 CNCC期间在山西太原举办“面向计算机系统能力培养的龙芯CPU高校开源计划”活动,在活动中,龙芯中科宣布将GS132和G ...
随机推荐
- <context:component-scan>子标签:<context:include-filter>和<context:exclude-filter>使用时要注意的地方
在Spring MVC中的配置中一般会遇到这两个标签,作为<context:component-scan>的子标签出现. 但在使用时要注意一下几点: 1.在很多配置中一般都会吧Spring ...
- Java设计模式学习记录-抽象工厂模式
前言 上篇博客介绍了简单工厂模式和工厂方法模式,这次介绍抽象工厂模式,抽象工厂模式和工厂方法模式的区别在于需要创建对象的复杂程度上. 抽象工厂模式 抽象工厂模式是围绕着一个超级工厂创建其他工厂.这个超 ...
- 线程池ThreadPoolExecutor的一种扩展办法
概述 在JAVA的世界里,如果想并行的执行一些任务,可以使用ThreadPoolExecutor. 大部分情况下直接使用ThreadPoolExecutor就可以满足要求了,但是在某些场景下,比如瞬时 ...
- karma + jasmine 构建前端自动化测试
http://blog.fens.me/nodejs-karma-jasmine/ 很全的文档 执行karma init时报错如下: $ karma init > readline.js:5 ...
- LINQ to Objects系列(2)两种查询语法介绍
LINQ为我们提供了两种查询语法,分别是查询表达式和查询方法语法.这篇文章分为以下几个方面进行总结. 1,一个包含两种查询语法的简单示例 2,查询表达式的结构 3,查询方法相关的运算符 一个包含两种查 ...
- 通过代码动态创建Windows服务
开发完Windows服务后,一般通过如下命令进行注册Windows服务 @echo off %SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\inst ...
- [Android] (在ScrollView里嵌套view)重叠view里面的onTouchEvent的调用方法
在我前面的自定义裁剪窗口的代码中,我把裁剪的view放在了大的scrollview里,这样就出现了程序只能触发scrollview,无法操作我的裁剪窗口.所以我加了那篇博客下面最后两段代码.其实我遇到 ...
- Ajax 小实例
1.urls.py url(r'^jiafa', views.jiafa), 2.views.py def jiafa(request): if request.method == "GET ...
- 2018-9 Java.lang.StackOverflowError
问题: Java.lang.StackOverflowError at com.**Logger.**.**.StringFilter.isValueNull(StringFilter.java:81 ...
- 记一次服务器迁移后的nginx启动问题
背景 服务器A准备下线,故直接将上面的所有应用/资料打包迁移到服务器B.包括搭建的nginx,迁移到B服务器后,楼主偷懒,就想着直接./nginx启动,过程遇到如下问题. ./nginx ./ngin ...