[杂题] pku 2019

解题报告: Cornfields Lcftc 题目类型:搜索,简单,PKU2019题 一、 题目: Cornfields Description FJ has decided to grow his own corn hybrid in order to help the cows make the best possible milk. To that end, he's looking to build the cornfield on the flattest piece of land he can find. FJ has, at great expense, surveyed his square farm of N x N hectares (1 <= N <= 250). Each hectare has an integer elevation (0 <= elevation <= 250) associated with it. FJ will present your program with the elevations and a set of K (1 <= K <= 100,000) queries of the form "in this B x B submatrix, what is the maximum and minimum elevation?". The integer B (1 <= B <= N) is the size of one edge of the square cornfield and is a constant for every inquiry. Help FJ find the best place to put his cornfield. Input * Line 1: Three space-separated integers: N, B, and K. * Lines 2..N+1: Each line contains N space-separated integers. Line 2 represents row 1; line 3 represents row 2, etc. The first integer on each line represents column 1; the second integer represents column 2; etc. * Lines N+2..N+K+1: Each line contains two space-separated integers representing a query. The first integer is the top row of the query; the second integer is the left column of the query. The integers are in the range 1..N-B+1. Output * Lines 1..K: A single integer per line representing the difference between the max and the min in each query.
Sample Input 5 3 1 5 1 2 6 3 1 3 5 2 7 7 2 4 6 1 9 9 8 6 5 0 6 9 3 9 1 2 Sample Output 5 Source USACO 2003 March Green 二、 题目简述: 给定一个N*N (1<=N<=250)的矩阵,给定一个数B (1<=B<=N) 和K(K<1000000)对坐标(xi,xj),求由(xi,xj)为左上点,边长为B的正方形的方框内,最大数和最小数之差. 三、 分析: 最简单的做法是强搜,每次要找到B*B中最大的数,和最小的数,最坏要N*N;而且要找K次,所以总的复杂度是O(N*N*K),最坏下要250*250*1000000=6.25*10^10,肯定TLE了. 首先考虑K,K有1000000次,但是最多的不同点只有250*250个,所以K的实际大小为250*250,这只要建一张表查就可以了。但是这次复杂度为250^4,还是不够的。我们想到,每次都进行N*N的搜索是不是太奢侈了?这是当然的。 我们可以进行一下预处理。我们定义一个maxa[251][251]的数组(为什么不叫max[][]呢?因为和STL中的max有冲突,呵呵),maxa[i][j]表示从area[i][j]到area[i+B][j]中的最大值。同样的,定义一个mina[251][251]的数组,表示从area[i][j]到area[i+B][j]中的最小值。每当一对点要计算差值时,只要进行一次maxa[][]的列扫描,一次
mina[][]的列扫描,就可以得到B*B中的最大和最小值了。 这样,问题的复杂度就降下来了,预处理时间为O(N*N*N),计算K个点的时间为O(N*K),根据前面说到的查表,可以降为O(N*N*N),所以总的时间复杂度为O(N*N*N),至此,问题圆满解次。 这里,还有一个问题,有人会问,那我预处理可不可以设一个max[251][251]的数组和min[251][251]的数组,直接把以点(i,j)为左上点,B*B大小的最大值、最小值求出来,这不是比只处理行更快麻?从处理K点上来说,每次只要O(1)时间就可以求出差值。但是,这里有个但是,预处理时间会达到O(N^4),我们又回到原来了最坏的算法上了……万事都要有个度,过了,就不好了,俗话说,物极必反。 四、 参考程序: #include<iostream> using namespace std; const int MAX=251; int small(int x, int y){return x<y?x:y;} int big(int x, int y){return x>y?x:y;} int area[MAX][MAX], maxa[MAX][MAX], mina[MAX][MAX]; int table[MAX][MAX]; int main(){ int n, b, k, x, y, i, j, q, ans1, ans2; while(scanf("%d%d%d",&n,&b,&q)!=EOF){ memset(table,-1,sizeof(table)); for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&area[i][j]); for(j=0;j<n;j++){ for(i=0;i<=n-b;i++){ maxa[i][j] = area[i][j]; mina[i][j] = area[i][j]; for(k=1;k<b;k++){ maxa[i][j] = big(maxa[i][j],area[i+k][j]); mina[i][j] = small(mina[i][j], area[i+k][j]); } } }
for(i=0;i<q;i++){ scanf("%d%d",&x,&y); x--, y--; if(table[x][y]!=-1){ printf("%d/n",table[x][y]); continue; } ans1 = maxa[x][y], ans2 = mina[x][y]; for(k=1;k<b;k++){ ans1 = big(ans1, maxa[x][y+k]); ans2 = small(ans2, mina[x][y+k]); } table[x][y]=ans1-ans2; printf("%d/n",ans1 - ans2); } } } 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PKU VehicleID数据集是由北京大学智能交通与多媒体实验室提供的一个用于车辆识别的图像数据库。该数据集包含了车辆在不同环境、不同拍摄条件下的图像,旨在用于车辆相关研究的数据训练和测试。 PKU VehicleID数据集收集了超过8万辆车的图像,涵盖了2000多个车型和16000多个车例。这些图像是在不同的拍摄条件下捕捉到的,包括不同的光照、天气、角度和距离。这使得该数据集在车辆识别和相关研究领域具有较高的多样性和可用性。 PKU VehicleID数据集不仅提供了车辆图像,还包含了车辆的标注信息,如车辆类型、颜色、品牌等。这些标注信息为研究者提供了更多的可用数据,可以辅助他们进行车辆特征识别、车辆分类等相关研究。 PKU VehicleID数据集可以广泛应用于车辆识别、车辆检测、交通监控等领域的研究和实践中。通过利用该数据集,研究者可以进行车辆模型的建立与识别、车辆行为的分析与预测等工作,从而为智能交通和城市管理提供更好的技术支持和解决方案。 综上所述,PKU VehicleID数据集是一个丰富的车辆图像数据库,它提供了大量的车辆图像和标注信息,为车辆识别和相关研究领域的研究者提供了重要的资源和工具。通过该数据集的应用,我们可以更好地理解和研究车辆特征识别、车辆分类等问题,为智能交通和城市管理带来更多的创新和进步。 ### 回答2: PKU VehicleID数据集是由北京大学人工智能与自动化研究所于2016年发布的一个车辆检测和识别的数据集。这个数据集主要包含了来自北京市道路监控系统的车辆图像和相关的车辆属性信息。 PKU VehicleID数据集的特点主要有以下几点。首先,该数据集包含了非常大量的车辆图像,总计约50万张,涵盖了丰富的场景和车型样本。其次,这些图像都是以野外真实道路监控视频截取得到的,具有较高的真实性和复杂性。此外,数据集中的每一辆车都被分配了一个唯一的ID号码,用于标识和跟踪车辆。最后,PKU VehicleID数据集还提供了诸如车辆类型、颜色、品牌等属性信息,方便进行车辆属性识别和分类任务。 PKU VehicleID数据集在车辆检测、跟踪和识别领域有着广泛的应用价值。通过利用这个数据集,可以开展车辆检测算法的研究和性能评估。同时,也可以进行车辆属性识别、车型分类等应用任务的研究。这个数据集的发布对于提升车辆智能监控和交通管理系统的性能具有重要意义。此外,PKU VehicleID数据集还可以为自动驾驶、交通安全和交通流量分析等领域的研究提供有价值的实验数据基础。总之,PKU VehicleID数据集是一个丰富而有用的资源,为车辆相关研究提供了有力的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值