2016安徽程序设计竞赛D题

xiaoxiao2021-02-27  361

D.梯田AGAIN Time Limit: 1000 MS Memory Limit: 65536 KB Total Submissions: 1 Accepted: 1 Description 大家还记得去年的梯田吗?土豪YZK在一块小岛上有着一大片n*m的梯田,每块1*1的田地都有它的高度。奴隶们不甘被YZK剥削,他们联合起来决定发动一场海啸淹掉YZK的部分梯田。 奴隶们去年尝试了一下,结果发现,由于土质太过松软,水能够透过土地渗入到相邻的梯田,即对于海啸高度h,梯田中所有小于等于h的土地都会由于土质松软而被被淹没。 现在给你一个n*m的矩阵,代表梯田中每块田地的高度。然后给定q个询问,每个询问给定一个海啸高度h,问在此高度下,不被淹没的梯田数量是多少。 Input 第一行一个整数T,表示测试数据组数。 对于每组测试数据: 第一行三个数字n,m,q,表示梯田的行数,列数和询问数。 之后n行,每行m个数字,表示每块田地的高度,梯田高度不大于1000000。 之后q行,每行给出一个海啸高度h,问大于这个高度的梯田有多少块。 0<T<200<n,m<=2000<=q<10000<=h<=1000000. Output 对于每个询问,给出一个整数,表示大于这个海啸高度的梯田数量。 Sample Input 2 2 2 2 1 2 3 4 2 3 2 3 3 1 2 3 3 4 5 0 4 5 Sample Output ​2 1 6 1 0 =========================================================== #include <stdio.h> int main(){ int T; int n,m,q; int i,j,k; int count=0; scanf("%d",&T); while(T--){ scanf("%d %d %d",&n,&m,&q); int arr[n][m]; int ask[q]; for(i=0;i<n;i++){ for(j=0;j<m;j++){ scanf("%d",&arr[i][j]); } printf("\n"); } for(k=0;k<q;k++){ scanf("%d",&ask[k]); } for(k=0;k<q;k++){ for(i=0;i<n;i++){ for(j=0;j<m;j++){ if(arr[i][j]>ask[k]){ count++; } } } printf("%d\n",count); count=0; } } return 0; } ===========================================
转载请注明原文地址: https://www.6miu.com/read-3823.html

最新回复(0)