【2018.3.10】模拟赛之三-ssl2576 平台

目录地址

前言

水题不想说,连自带快排都懒得用了


正题

有n个平台,每个平台头尾有两根柱子支撑到地板或另一个平台上,求支撑平台需要的柱子数
from ssl


输入输出(需要自取)

Input

输入文件platforme.in第一行包括1个整数N,1 ≤ N ≤ 100,即平板的总数。
接下来的N行每行都是一块平板的坐标,是相应的Y,X1和 X2。即高度和水平的边缘坐标。所有的数都是不大于10000的正整数且满足X2 > X1+1(也可这样理解,每一块平板的长度至少为2)。
输入保证任意两块平板间没有重叠部分。

Output

输出文件platforme.out要撑起所有平板所需的支柱的总长度。

Sample Input

3
1 5 10
3 1 5
5 3 7

Sample Output

14


解题思路

排一下高度,然后用数组表示每个x坐标处最高的平台。然后每次更新


代码

#include<cstdio>
#include<algorithm>
using namespace std;
struct wood{
    int h,x1,x2;
}a[101];
int sum,n,hi[10001];
int main()
{
    //freopen("platforme.in","r",stdin);
    //freopen("platforme.out","w",stdout);
    scanf("%d",&n);
    for (int i=1;i<=n;i++)
    {
        scanf("%d%d%d",&a[i].h,&a[i].x1,&a[i].x2);
        a[i].x2-=1;
    }
    for (int i=1;i<n;i++)
      for (int j=i+1;j<=n;j++)
      {
          if (a[i].h>a[j].h) swap(a[i],a[j]);
      }//冒泡
    for (int i=1;i<=n;i++)
    {
        sum+=a[i].h-hi[a[i].x1];
        sum+=a[i].h-hi[a[i].x2];//计算两根柱子
        for (int j=a[i].x1;j<=a[i].x2;j++) hi[j]=a[i].h;//更新
    }
    printf("%d",sum);//输出
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值