问题标题: 洛谷:P1318 积水面积 请问为什么我WA了0分?

0
0
已解决
栾峻岩
栾峻岩
初级天翼
初级天翼

Code:

#include <iostream>
using namespace std;
int a[10010];
int main()
{
    int n,max=0;
    long long int sum=0; 
    cin>>n;
    for (int i=1;i<=n;i++)
    {
        cin>>a[i];
        if (a[i]>max)
			max=a[i]; 
    } 
    for (int i=1;i<=max;i++)
    {
        int l,r;
        for (int j=1;j<n-1;j++)
        {
        	if(a[j]>=i)
        	{
        		l=j;
        		break;
			}
		}
		for (int j=n-2;j>=1;j--)
        {
        	if(a[j]>=i)
        	{
        		r=j;
        		break;
			}
		}
		for (int j=1;j<=r;j++)
        {
        	if (a[j]<i)
        		sum++;
		}
    }
    cout<<sum<<endl;
    return 0;
}

 

大佬求助!

 

链接:https://www.luogu.org/problemnew/show/P1318

题目:

题目描述

一组正整数,分别表示由正方体叠起的柱子的高度。若某高度值为x,表示由x个正立方的方块迭起(如下图,0<=x<=5000)。找出所有可能积水的地方(图中蓝色部分),统计它们可能积水的面积总和(计算的是图中的横截面积。一个立方体的位置,为一个单位面积)。

如图:柱子高度变化为 0 1 0 2 1 2 0 0 2 0

图中蓝色部分为积水面积,共有6个单位面积积水。

输入输出格式

输入格式:

 

两行,第一行n,表示有n个数(3<=n<=10000)。第2行连续n个数表示依次由正方体迭起的高度,保证首尾为0。

 

输出格式:

 

一个数,可能积水的面积。

 

输入输出样例

输入样例#1: 复制

10
0 1 0 2 1 2 0 0 2 0

输出样例#1: 复制

6
栾峻岩在2019-05-17 18:42:42追加了内容

@葛新  @杨喆 @酷町喵~o( =∩ω∩= )o~ @贾敬波 


0
已采纳
黄钰杰
黄钰杰
初级守护
初级守护

#include<iostream> #include<algorithm> using namespace std; int main() { int n,a[11000],l,r,ans=0; cin>>n; for (int i=1;i<=n;i++) cin>>a[i]; //去0 l=1;while (a[l]==0) l++; r=n;while (a[r]==0) r--; //正搜 int tmp=0,j=l,k=l+1; while (k<=r+1) if (a[k]<a[j]) { tmp+=a[k]; k++; } else { ans+=(k-j-1)*a[j]-tmp; tmp=0; j=k; k++; } //倒搜 tmp=0;j=r;k=r-1; while (k>=l-1) if (a[k]<=a[j]) { tmp+=a[k]; k--; } else { ans+=(j-k-1)*a[j]-tmp; tmp=0; j=k; k--; } cout<<ans; return 0; }

0
0
我要回答