博客
关于我
【DG特长生2018 T4】【SSL 2888】【luogu P2003】平板游戏问题 / PLATFORME 平板
阅读量:338 次
发布时间:2019-03-04

本文共 1488 字,大约阅读时间需要 4 分钟。

平板游戏问题:计算所需支柱总长度

问题背景

在平板游戏中,有一些横放的木板,每个木板需要支撑两端。这些支撑可以搭在木板下方,如果下方没有支撑就直接搭在地板上。我们的任务是计算所有支柱的总长度。

思路解析

解决这个问题的思路是通过模拟每个木板的位置,并记录每个x坐标上木板的高度。然后,对这些木板按高度从大到小排序。每个木板的支柱长度即为其高度减去下一个木板的高度。将所有这样的长度相加即可得到总支柱长度。

代码实现

#include 
#include
#include
using namespace std;struct block { int y, x1, x2;};struct bord { int y, num, important;};bool cmp(bord x, bord y) { if (x.y == y.y) return x.important > y.important; return x.y > y.y;}int main() { // 读取输入 int n; scanf("%d", &n); // 初始化数据结构 int number[10001]; int ans = 0; struct bord x[10001][104]; for (int i = 1; i <= n; ++i) { int y, x1, x2; scanf("%d %d %d", &y, &x1, &x2); x2--; // 调整右端点 for (int j = x1; j <= x2; ++j) { // 记录每个x坐标的木板信息 x[j][number[j]] = bord{y, i, 0}; if (j == x1 || j == x2) { // 标记边缘木板 x[j][number[j]].important = 1; important_num[j]++; // 记录重要木板数量 } } } // 处理每个x坐标的木板 for (int i = 1; i <= 10000; ++i) { if (!important_num[i]) continue; // 对木板按高度排序 sort(x[i] + 1, x[i] + number[i] + 1, cmp); // 计算支柱长度 for (int j = 1; j < number[i]; ++j) { if (x[i][j].important) { ans += x[i][j].y - x[i][j + 1].y; } } } printf("%d", ans); return 0;}

总结

通过对每个木板的高度进行排序,计算相邻高度之差,我们可以轻松得到所有支柱的总长度。这种方法确保了计算的准确性和高效性,适用于处理各种规模的平板游戏问题。

转载地址:http://jgvh.baihongyu.com/

你可能感兴趣的文章
Python 如果有很多或以收缩形式
查看>>
Python 子进程 Popen 与 Pyinstaller
查看>>
Python 子进程 Popen.communicate() 等价于 Popen.stdout.read()?
查看>>
Python 子进程 Popen:为什么会出现“ls *.txt“?不行?
查看>>
Python 子进程参数
查看>>
python 字典 key 和value 互换
查看>>
Python 字典 vs If 语句速度
查看>>
python 字典sorted自定义排序,按照key or value排序
查看>>
python 字典和列表区别_元组列表和字典的主要区别是什么?
查看>>
python 字符串中特定字符替换,截取
查看>>
Python 字符串总结
查看>>
python 字符串显示中文_Python字符串开头的b"、u"、r"与中文乱码
查看>>
Python 字符串的几种拼装方式
查看>>
python 存入数据库bigint_python基础_MySQL的bigint类型
查看>>
python 学习 面向对象编程
查看>>
Python 学习小结
查看>>
Python 学习日记第三篇 -- 字典
查看>>
Python 学习笔记(一)Data type
查看>>
python 安装 easy_install 和 pip 流程
查看>>
python 安装echarts
查看>>