葫芦岛做网站的公司,网站域名注册服务商,网页怎么制作二维码,网站建设服务兴田德润目录地址
前言
水题不想说#xff0c;连自带快排都懒得用了 正题
有n个平台#xff0c;每个平台头尾有两根柱子支撑到地板或另一个平台上#xff0c;求支撑平台需要的柱子数 输入输出#xff08;需要自取#xff09;
Input
输入文件platforme.in第一行包括1个整数N…目录地址
前言
水题不想说连自带快排都懒得用了 正题
有n个平台每个平台头尾有两根柱子支撑到地板或另一个平台上求支撑平台需要的柱子数 输入输出需要自取
Input
输入文件platforme.in第一行包括1个整数N1 ≤ N ≤ 100即平板的总数。 接下来的N行每行都是一块平板的坐标是相应的YX1和 X2。即高度和水平的边缘坐标。所有的数都是不大于10000的正整数且满足X2 X11也可这样理解每一块平板的长度至少为2。 输入保证任意两块平板间没有重叠部分。
Output
输出文件platforme.out要撑起所有平板所需的支柱的总长度。
Sample Input
3 1 5 10 3 1 5 5 3 7
Sample Output
14 解题思路
排一下高度然后用数组表示每个x坐标处最高的平台。然后每次更新 代码
#includecstdio
#includealgorithm
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 i1;in;i){scanf(%d%d%d,a[i].h,a[i].x1,a[i].x2);a[i].x2-1;}for (int i1;in;i)for (int ji1;jn;j){if (a[i].ha[j].h) swap(a[i],a[j]);}//冒泡for (int i1;in;i){suma[i].h-hi[a[i].x1];suma[i].h-hi[a[i].x2];//计算两根柱子for (int ja[i].x1;ja[i].x2;j) hi[j]a[i].h;//更新}printf(%d,sum);//输出return 0;
}