博客
关于我
【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/

你可能感兴趣的文章
org.springframework.boot:spring boot maven plugin丢失---SpringCloud Alibaba_若依微服务框架改造_--工作笔记012
查看>>
SQL-CLR 类型映射 (LINQ to SQL)
查看>>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
查看>>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
查看>>
org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded
查看>>
org.tinygroup.serviceprocessor-服务处理器
查看>>
org/eclipse/jetty/server/Connector : Unsupported major.minor version 52.0
查看>>
org/hibernate/validator/internal/engine
查看>>
Orleans框架------基于Actor模型生成分布式Id
查看>>
SQL-36 创建一个actor_name表,将actor表中的所有first_name以及last_name导入改表。
查看>>
ORM sqlachemy学习
查看>>
Ormlite数据库
查看>>
orm总结
查看>>
ORM框架 和 面向对象编程
查看>>
OS X Yosemite中VMware Fusion实验环境的虚拟机文件位置备忘
查看>>
os.environ 没有设置环境变量
查看>>
os.path.join、dirname、splitext、split、makedirs、getcwd、listdir、sep等的用法
查看>>
os.removexattr 的 Python 文档——‘*‘(星号)参数是什么意思?
查看>>
os.system 在 Python 中不起作用
查看>>
OS2ATC2017:阿里研究员林昊畅谈操作系统创新与挑战
查看>>