关于读题的一些技巧

来源:互联网 发布:为什么python国内不火 编辑:程序博客网 时间:2024/05/19 16:27

在算法竞赛中,很多时候,题目的数据范围是非常有力的解题线索(其实不光光是数据范围,只要是一些有特点的限制或宽松都可以为你提供线索)。

举几个例子:


ZOJ 3777Problem Arrangement

数学题,求期望,难点在计数,经验丰富基本能够想到计数dp。如果经验不够丰富该怎么办呢?

其实本题的数据范围给了我们非常多的线索。

首先1<=N<=12,这个数据范围很多时候都代表了位压缩。毕竟阶乘承受不了,立方又太水。指数级别的复杂度就差不多,指数级别的算法基本就是位压缩了。

其次1<=M<=500,这个数据范围不是很大,无论是对空间还是时间都很友好。为dp状态定义所需要的空间以及对dp状态转移需要的时间都可以承受。

类似的还有很多,比如2017-GDCPC-B 1<=N<=16 ,状压DP。


FZU 2105 Digits Count
RMQ,区间位运算,询问区间和,难点在维护。特点是维护的值的范围是[0,16)。从这个特点下手,16是2^4,a[i]<16,可以考虑把一个数拆成4个二进制位,分别维护。


ZOJ 3779 Chessboard and Flowers

组合数学,需要用到一些简单的排列组合知识,但有些基本量不好计算,在数据范围很小的情况下,采用了暴力枚举的方法来计算。


FZU 2141 Sub-Bipartite Graph

给你一个简单图,由n个点,m条边。求它的一个二分子图,使得这个二分子图的边至少是m/2。

特点是,只需输出二分子图的两个点集,边至少是m/2。

值得思考的地方是:

1、为什么不要求求出具体的图,而只要求求出两个点集呢?

2、为什么边至少是m/2,而不是m/3或者其他值,也不是要求边数最多呢?

这两个地方就是突破口。

0 0