第一题:能量项链

区间型动态规划

据说这题在当年坑了很多人。

f(i, j) 表示从第i个珠子开始合并j个珠子所释放的最大能量。

f(i, j) = max{ f(i, k} + f(i+k, j-k) + head(i) * head(i+k) * head(i+j) , 0<k<j}

边界条件:f(i, 1) = 0

第二题:金明的预算方案

背包型动态规划

01背包的加强版,对于每个主件有五种选择方式:不购买主件、购买主件、购买主件和附件1、购买主件和附件2、购买主件和附件1和2。

一个显著的时空优化:将物品的价格除以10.

第三题:作业调度方案

模拟

据说原来是一道搜索题,但是为了平衡整卷难度所以简化了许多。不难,仔细就好。

第四题:2^k进制数

递推、高精度

首先想到的递推式:用 f(i, j) 表示以数字 i 开头且有 j 位的数字个数,则

f(i, j) = sum{ f(i+1, j-1), f(i+2, j-1), ... }

那么最终答案也是将某些 f 值相加。

既然我们在状态转移和求最终结果时要的都是和,不妨直接在 f 中保存之前状态的和。

所以我们可以用 f(i, j) 表示第一位不小于 i 且有 j 位的数字个数,则

f(i, j) = f(i+1, j)+f(i+1, j-1)

解释一下,第一位不小于 i 有两种情况:

1. 第一位等于 i,那么第二位至少是 i+1,即 f(i+1, j-1)

2. 第一位大于 i,即第一位大于等于 i+1,即 f(i+1, j)。

那么最终答案的求解可以分类讨论:

  • 若 k | w,则答案等于 sum{ f(1, min(w/k-i, 2^k-1-i)), i∈[0, min(2^k-1, w/k)) }

解释:如果 w 能整除 k,那么枚举长度。我们知道 2^k-1 是 2^k 进制数一位上能达到的最大值,也是一个(无其他限制情况下)递增的 2^k进制数的最大位数。所以 min(w/k, 2^k-1) 就是当前情况下所能达到的最大位数。

  • 若 w mod k > 0,先做完上面的步骤,然后单独统计多出来的「不完整的」一位。在这种情况下,如果存在位数为 w div k + 1 的情况,第一位可以并不能取遍 1~2^k-1,而只能取 1~2^(w mod k)-1. 将这些值累加即可。

并不是对于所有的情况都要判断该情况是否可能出现,因为有些不可能的情况的 f 值并没有计算过,是等于 0 的。比如当 k=2, w=6 时,f(1, 3) 很明显是等于 0 的,所以即使将其累加也不影响最终结果。

noip2006提高组题解的更多相关文章

  1. noip2010提高组题解

    NOIP2010提高组题解 T1:机器翻译 题目大意:顺序输入n个数,有一个队列容量为m,遇到未出现元素入队,求入队次数. AC做法:直接开1000的队列模拟过程. T2:乌龟棋 题目大意:有长度为n ...

  2. NOIP 2014 提高组 题解

    NOIP 2014 提高组 题解 No 1. 生活大爆炸版石头剪刀布 http://www.luogu.org/problem/show?pid=1328 这是道大水题,我都在想怎么会有人错了,没算法 ...

  3. NOIP 2001 提高组 题解

    NOIP 2001 提高组 题解 No 1. 一元三次方程求解 https://vijos.org/p/1116 看见有人认真推导了求解公式,然后猥琐暴力过的同学们在一边偷笑~~~ 数据小 暴力枚举即 ...

  4. NOIP 2000 提高组 题解

    NOIP2000 提高组 题解 No 1. 进制转换 https://www.rqnoj.cn/problem/295 水题 对于n和基数r, 每次用n mod r, 把余数按照逆序排列 注意 mod ...

  5. 【NOIP2018】提高组题解

    [NOIP2018]提高组题解 其实就是把写过的打个包而已 道路铺设 货币系统 赛道修建 旅行 咕咕咕 咕咕咕

  6. [NOIP2006] 提高组 洛谷P1066 2^k进制数

    题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. (3)将r转换为2进制数q后 ...

  7. [NOIP2006] 提高组 洛谷P1064 金明的预算方案

    题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”.今 ...

  8. [NOIP2006] 提高组 洛谷P1063 能量项链

    题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定 ...

  9. [NOIP2006] 提高组 洛谷P1065 作业调度方案

    题目描述 我们现在要利用m台机器加工n个工件,每个工件都有m道工序,每道工序都在不同的指定的机器上完成.每个工件的每道工序都有指定的加工时间. 每个工件的每个工序称为一个操作,我们用记号j-k表示一个 ...

随机推荐

  1. html——a标签添加点击事件,火狐浏览器直接显示0

    一.问题描述 给一个a标签添加了点击事件,页面直接给了0如下图 二.问题解决 后台调试模式下,发现也进了后台方法,也返回了页面. 于是想到先把页面里大部分内容去掉,去掉所有js,查看是否是部分代码有问 ...

  2. WPF 资源

    https://wpftoolkit.codeplex.com/documentation http://www.codeproject.com/Articles/563862/Multi-Selec ...

  3. WPF 显示初始化界面

    今天在看<WPF编程宝典>时,看到了Application类,该类可以做很多事情,我认为比较实用的是显示初始化界面,因为之前有个项目在打开的时候要加载好多dll,非常耗时,让客户等的蛋疼, ...

  4. java Hotspot 内存管理白皮书(中文翻译)

    转自: http://my.oschina.net/u/568779/blog/166891 1引言 一个健壮的 Java™2平台,Standard Edition (J2SE™)拥有一个自动内存管理 ...

  5. 提交jar作业到spark上运行

    1.引入spark包:spark-assembly-1.4.0-hadoop2.6.0,在spark的lib目录下 File-->project structure 2.用IDEA建立一个sca ...

  6. struts2学习笔记(2)——简单的输入验证以及标签库的运用

    struts2自带了一些标签库,运用好这些标签库会减少开发周期. 1.struts2标签库是在哪定义的? struts2标签库定义在struts2-core-2.1.8.jar这个文件中,具体在这个j ...

  7. PKUSC 模拟赛 day2 上午总结

    今天上午考得不是很好,主要还是自己太弱QAQ 开场第一题给的图和题意不符,搞了半天才知道原来是走日字形的 然后BFS即可 #include<cstdio> #include<cstr ...

  8. lintcode : 平衡二叉树

    题目 平衡二叉树 给定一个二叉树,确定它是高度平衡的.对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1. 样例 给出二叉树 A={3,9,20,#,#,1 ...

  9. 从一次面试经历谈PHP的普通传值与引用传值以及unset

    关于这个概念一般都会在PHP的第一堂课说变量的时候给介绍,并且我以前还给其他PHPer介绍这个概念.但是作为一个工作一段时间的PHPer的我,竟然在面试的时候一下子拿不定主意最后还答错了,很觉得丢脸( ...

  10. @Override在JDK1.5和JDK1.6中用法区别

    @Override 注解在jdk1.5环境下,只能用于对基类(父类)的方法的重写.而不能用于对实现的接口的方法的实现.而在jdk1.6环境下,两者都适用.