POJ 4070 积水量问题

来源:互联网 发布:淘宝网登陆页 编辑:程序博客网 时间:2024/04/30 09:48

题目链接:http://bailian.openjudge.cn/practice/4074/

老实说我都不知道这道题考的是什么知识点,就这么莫名其妙AC了,方法是通过统计每一层不能积水的方块,然后用每一层的起始到终止的距离减去不能积水的方块,由此得到积水量,美中不足题目中没有说明路面高度的限制所以就随便开了个数组,这是我看着最不爽的地方,希望能找到更好的算法。AC代码如下:

#include <stdio.h>#include <string.h>int main (){int floor[20001];int ans;int sum[1001];int m,n,flag,begin,end,cnt;scanf("%d", &m);while(m--){ans=0;memset(floor,0,sizeof(floor[20001]));scanf("%d", &n);for(int i=0;i<n;i++){scanf("%d", &floor[i]);}for(int i=1;i<=1000;i++){ flag=0; begin=0; end=0; cnt=0; memset(sum,0,sizeof(sum[1001]));for(int j=0;j<n;j++){if(flag==0){if(floor[j]>=i){flag=1;cnt++;begin=j;}}else{if(floor[j]>=i){cnt++;end=j;}}}if(end==0)sum[i]=0;else sum[i]=end-begin-cnt+1;}       for(int i=1;i<=100;i++){   ans+=sum[i];   }   printf("%d\n", ans);}return 0;}


0 0
原创粉丝点击