居然是动规专场。这样不好吧?

 

采药

【问题描述】

辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:"孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。"

如果你是辰辰,你能完成这个任务吗?

【输入】

输入的第一行有两个整数 n 和 m,用一个空格隔开。m 代表总共能够用来采药的时间,n 代表山洞里的草药的数目。接下来的 n 行每行包括两个整数,分别表示采摘某株草药的时间 Ti 和这株草药的

价值 Vi。

【输出】

输出包括一行,这一行只包含一个整数,表示在规定的时间内,可以采到的草药的最大总价值。

【输入样例】

3 9

10 10

8 1

1 2

【输出样例】

3

【数据规模】

对于 50%的数据,n,m≤1000;

对于 100%的数据,n,m≤100000,Ti,Vi≤10。

【解题过程】

这个题目描述几乎和 NOIP2006 的那道采药一毛一样以至于我差点写了裸的 01背包。看到数据范围实在吓了一跳。但是要注意这个很强的限制:Ti,Vi≤10。也就是说 Ti*Vi 最多有 121 种取值(姑且算上 0 的情况),那么这 10^6 个物品中大多数都是重复的,可以合并为同一种物品。然后就是多重背包了,二进制拆分就能过。

第一次提交 AC。

 

方格取数

【问题描述】

给定一个 n×m 的矩阵,记录左上角为(1,1),右下角为(n,m),现在从(1,1)开始取数,每次只能向下或向右移动一个单位,最终到达(n,m),我们把路径上所有的数相乘,结果记为 C。使 C 的结果最大已经不能满足我们了,现在我们想让 C 末尾的零个数最少。

PS. 11000 末尾有三个零,100000100 末尾有两个零。

【输入】

第一行是两个正整数 n 和 m,表示矩阵大小。

接下来 n 行每行 m 个正整数,给出了整个矩阵。

【输出】

一个整数:最少的零的个数。

【输入样例】

3 3

1 2 3

10 5 100

10 8 9

【输出样例】

1

【数据规模】

对 30%的数据有:n,m≤5;

对 100%的数据有:1<n,m≤1000,所有输入数据不超过 32 位整数范围。

【解题过程】

乘积末尾 0 的个数取决于所有乘数质因数分解后 2 和 5 的个数的较小值。但是很难做到同时兼顾两个最小,那就可以用 f(i, j) 表示最少取到的 2 的个数,g(i, j) 表示最少取到的 5 的个数,我们取 f(n, m) 和 g(n, m) 中的较小值就是答案。

一开始有疑问,如果 f(n, m) 走过的路中 5 反而少于 2 呢?假设这个过程中取到的 5 的个数为 x,则 x>=g(n,m),也就是说这种情况在 g(n, m) 中就已经考虑到了;反过来,g(n, m) 取的 2 的个数少于 5 的个数也没有关系。

可以预处理出每个点上的数字分解后有几个2 几个 5.

但是要注意边界条件,把走不到的点设成 INF。

第一次提交 20 分左右。

 

统计

【问题描述】

对于排列(P1,P2,P3,…Pn),定义(i,j)为逆序对当且仅当 i<j 且 Pi>Pj。统计{1,2,3,…,n}的所有排列中,逆序对数量为 m 的排列个数。

【输入】

仅一行,两个正整数 n,m。

【输出】

仅一个整数,表示满足条件的排列个数对 124567 取模。

【输入样例】

3 1

【输出样例】

2

【数据规模】

对于 30%的数据,有 n≤10;

对于 100%的数据,有 0<n,m≤1000。

【解题过程】

这数据范围简直就是赤裸裸的暗示啊。

用 f(i, j) 表示 1...i 这些数的排列中逆序对有 j 对的情况数,则

f(i, j) = sum{ f(i-1, k), k<=j }

注意必须用前缀和优化。

第一次提交 AC。

07day2的更多相关文章

  1. 二模07day2解题报告

    T1.采药(medic) 有n个草药,要在m的时间内获得最大价值. 乍一看像是01背包,然而数据只能过50分. 考虑数据范围,t<=10,w<=10,所以只有121种草药.考虑多重背包的二 ...

随机推荐

  1. jQuery学习记录1

    jquery 和 js css里面都是坑呀 this.style.backgroundColor 和 css {background:#8df;} 是冲突的,用了前者,再$(this).addClas ...

  2. POJ 2533 Longest Ordered Subsequence

    题目描述:LIS(Longest Increasing Subsequence)模板题 分析:O(n^2)的方法 状态表示:d[i]表示以i结尾的最长上升子序列长度 转移方程:d[i]=max{ 1, ...

  3. 深入浅出ES6(十):集合

    作者 Jason Orendorff  github主页  https://github.com/jorendorff 前段时间,官方名为“ECMA-262,第六版,ECMAScript 2015语言 ...

  4. CentOS系统配置solr

    1.新建一个文件夹 比如soft   cd /soft   wget http://apache.fayea.com/lucene/solr/6.0.0/solr-6.0.0-src.tgz  --下 ...

  5. JLINK固件丢失或升级固件后提示Clone的解决办法

    J-LINK V8固件烧录指导 J-LINK 是使用过程中,如果内部固件意外损坏或丢失,请参考下面操作步骤说明,重新烧录JLINK固件. 安装固件烧录软件 请ATMEL官方网址下载AT91-ISP下载 ...

  6. 新Android工程src和layout文件夹为空

    问题:SDK和ADT版本冲突 解决方案: 1.菜单->Help->Install  New Software.. 2.在work with放入地址:http://dl-ssl.google ...

  7. 307. Range Sum Query - Mutable

    题目: Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclu ...

  8. Android 自定义View,仿微信视频播放按钮

    闲着,尝试实现了新版微信视频播放按钮,使用的是自定义View,先来个简单的效果图...真的很简单哈. 由于暂时用不到,加上时间原因,加上实在是没意思,加上……,本控件就没有实现自定义属性,有兴趣的朋友 ...

  9. CentOS 快速安装pip

    python的很多组件都必须依靠pip来安装,比如elasticsearch驱动.postgres驱动 Python2.7以后的版本自带pip,centos6.5之前yum自带的python为2.6, ...

  10. 最短路径BellmanFord , Dijsktra

    最短路径算法也是常用的图算法,在网上看到了一份c的代码,写的很清楚,今天有空给写成java的了,就当练手了.另,算法导论362页详细介绍了Bellman-Ford算法,本来打算再写个Dijsktra算 ...