第一题:能量项链

区间型动态规划

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

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. 剑指offer--面试题15

    题目:打印单向链表中倒数第k个节点 以下为自己所写代码,未经过验证,只是写个思路... #include<iostream> #include<vector> #include ...

  2. 对于WIFI版ipad(无GPS芯片)定位功能的释疑

    把玩ipad(WIFI版ipad,无GPS芯片)很久时间了,曾今有很多人(包括我)也用过它的定位功能,发现它确实很准确,通常的误差在40米以内,所以很多人都怀疑这个版本的ipad是不是真的内置了GPS ...

  3. 时序列数据库武斗大会之TSDB名录 Part 2

    [编者按] 刘斌,OneAPM后端研发工程师,拥有10多年编程经验,参与过大型金融.通信以及Android手机操作系的开发,熟悉Linux及后台开发技术.曾参与翻译过<第一本Docker书> ...

  4. Network Saboteur(Rand版)

    poj2531:http://poj.org/problem?id=2531 题意:给你一个图,图中点之间会有边权,现在问题是把图分成两部分,使得两部分之间边权之和最大.题解:随机算法 #includ ...

  5. Minimum_Window_Substring两种方法求解

    题目描述: Given a string S and a string T, find the minimum window in S which will contain all the chara ...

  6. Matlab程序 转C++/Opencv基于Mat 不可不知的17个函数

    1.matlab中的imread相当于OpenCV中的cvLoadImage(imageName,  CV_LOAD_IAMGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR): ...

  7. spring是怎样面向接口编程的?

    1.只要分层,就涉及到接口来连接.各层之间只通过接口来向外暴露功能. 2.spring中service层调用dao层时候,service层声明接口变量,具体接口实现可以ioc注入

  8. ISO9001、ISO14001、OHSAS18000什么意思

    ISO9001是ISO9000族标准所包括的一组质量管理体系核心标准之一.ISO9000族标准是国际标准化组织(ISO)在1994年提出的概念,是指“由ISO/TC176(国际标准化组织质量管理和质量 ...

  9. Quartz动态添加、修改和删除定时任务

    任务调度开源框架Quartz动态添加.修改和删除定时任务 Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制.Quartz框架包含了调度器监听.作业和触 ...

  10. dubbo-admin管理平台搭建

    参考:http://blog.csdn.net/u013142781/article/details/50396621 一.前言 dubbo的使用,其实只需要有注册中心,消费者,提供者这三个就可以使用 ...