题目链接

令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 教育改革的更多相关文章

  1. 51nod 1636 教育改革 | DP

    51nod 1636 教育改革 | DP 题面 最近A学校正在实施教育改革. 一个学年由n天组成.A学校有m门课程,每天学生必须学习一门课,一门课程必须在一天内学习完.在学习完第i门课程后,学生们会收 ...

  2. 51 Nod 1636 教育改革(dp)

    1636 教育改革  题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 最近A学校正在实施教育改革. 一个学年由n天 ...

  3. 51nod 1636

    1636 教育改革 我看过题解了还下了数据,表示很惭愧不想说什么,但还是说两句吧 sol: 因为差值很小只有100,所以对数组下标存的是(选择的数值和左端点的差值) f[i][j][k]即为第i天选了 ...

  4. 教育改革——国家认证 “网红” 编程语言 Python

     特大消息!!!  不止是上海计算机二级考试 ,全国计算机考试等级考试也有要求 如果你正打算考计算机等级,那你需要学习以下知识 要求学习的知识太多了,我就不一一在这里展示了! 一.考试改革的目标 据悉 ...

  5. 51nod-1636-dp

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1636 1636 教育改革 题目来源: CodeForces 基准时间限制 ...

  6. 好未来谢华亮:AI 在教育行业中的应用

    11 月 23 日,在以「AI 产业技术的渗透与融合」为主题的 NIUDAY 北京站中,好未来 SEG 智慧教育事业部技术总监谢华亮为大家带来了关于「AI 在教育行业中的应用」的分享. 本文是对分享内 ...

  7. BZOJ 1036 && 树链剖分

    还是太弱啊..各种数据结构只听过名字却没有一点概念..树链剖分也在这个范畴..今天来进一步深化一下教育改革推进全民素质提高. 性质 忘了在哪里看到的一篇blog有一句话讲得非常好,树链剖分不是一种数据 ...

  8. 加州wonders教材扫盲

    加州语文教材主要包含以下内容: 1.主教材Reading/Writing Workshop(读写研讨) 2.拓展教材Literature Anthology(文学选集) 3.延伸阅读材料Leveled ...

  9. 龙芯将两款 CPU 核开源,这意味着什么?

    10月21日,教育部计算机类教学指导委员会.中国计算机学会教育专委会将2016 CNCC期间在山西太原举办“面向计算机系统能力培养的龙芯CPU高校开源计划”活动,在活动中,龙芯中科宣布将GS132和G ...

随机推荐

  1. 【React 资料备份】React Hook

    Hooks是React16.8一个新增项,是我们可以不用创建class组件就能使用状态和其他React特性 准备工作 升级react.react-dom npm i react react-dom - ...

  2. 数组filter()参数详解,巧用filter()数组去重

    数组方法挺多,但是用来用去可能也就foreach,splice以及slice接触较多,filter()说实话之前也没过多了解.其实filter()为数组提供过滤功能,它会遍历数组所有元素,并返回满足条 ...

  3. C# 数组深拷贝

    数组深拷贝,即完全复制出一份新的数组,两个数组内容完全相同. 一般有四种方法: 1. 循环遍历复制 2. 数组的成员方法:CopyTo CopyTo方法用作将源数组全部拷贝到目标数组中,可以指定目标数 ...

  4. Oracle数据库基本常用命令汇总

    1.得到数据库名和创建日期SELECT name, created, log_mode, open_mode FROM v$database; 2.ORACLE数据库的计算机的主机名,ORACLE数据 ...

  5. VirtualBox配置centos7静态ip(详解)

    VirtualBox安装centos7配置静态ip地址可以本机访问,可以联网. 在开始之前先说一下,不知道为什么,我在网上百度的大多数是不能用的,或者只能主机访问,或者只能联网. 我的配置文件为ifc ...

  6. java项目运用server运行(eclipse、myeclipse通用)

    右键点击”new“选择“Other”,打开选项 勾选”Show All Wizards“ 然后在搜索处输入server,选择server,点击next 刚进来时此处都是空的,点击Configure r ...

  7. JSP学习笔记(7)-JSP的文件操作

    1.File类 File对象用来获取文件本身的一些信息,例如文件所在目录,文件的长度,文件读写权限等,不涉及文件的读写操作. 创建一个File对象的构造方法有3个: File(String filen ...

  8. 使用git将本地仓库同步到github远程仓库

    一.下载安装git客户端windows版本 二.建立本地仓库文件夹 三.在本地仓库里右键点击Git Bash Here 四.初始化本地仓库 [git init] 执行之后仓库中会创建隐藏的文件夹.gi ...

  9. openstack-on-centos7之各组件服务

    认证服务keystone(安装和配置) 在配置 OpenStack 身份认证服务前,必须创建一个数据库和管理员令牌 [用数据库连接客户端以root用户连接到数据库服务] # mysql -u root ...

  10. 《JavaScript DOM 编程艺术》读书笔记

    <JS DOM 编程艺术>笔记 一. 三种节点 元素节点.文本节点.属性节点 二. 获取元素 1.document.getElementById 2.(element)document.g ...