区间求最值 |
Time Limit: 3000ms, Special Time Limit:7500ms, Memory Limit:32768KB |
Total submit users: 68, Accepted users: 45 |
Problem 11460 : No special judgement |
Problem description |
给定一个长度为N 的数组,有q个询问。每一个询问是求在数组的一段区间内那个元素的因子的个数最大。比方24的因子的个数就是8。 |
Input |
首先是一个整数t。表示有t组測试数据,每组測试数据的第一行是一个整数N(1<=N<=10^6),第二行有N个整数ai(1<=ai<=10^6,i=1,2,.....N)表示数组的元素。
第三行有一个整数q(1<=q<=10^5),代表有q个询问,接下来每一行有两个整数。li,ri(li<=ri,li>=1,ri<=N).代表数组的一段区间,而且li+1>=li,ri+1>=ri。 |
Output |
对于每组数据的每一个询问都输出一个整数表示在这段区间里面元素因子个数的最大值。 |
Sample Input |
1 |
Sample Output |
4 |
Problem Source |
HUNNU Contest 这题感觉非常巧妙,首先学到了怎么把给定范围因子数打表,然后 怎么减少时间复杂度。 假设打表后每次直接在给定范围内比較出最大值是会超时的,可是我们能够把前一次比較出来的最大值下标赋值出来,下次查找的话。直接从这个下标開始。会节约非常多时间。 #include <cstdio> |
版权声明:本文博客原创文章。博客,未经同意,不得转载。