当前位置: 首页 > news >正文

OD C卷 - 多线段数据压缩

多段 线 数据压缩 (200)

  • 如图中每个方格为一个像素(i,j),线的走向只能水平、垂直、倾斜45度;
  • 图中线段表示为(2, 8)、(3,7)、(3, 6)、(3,5)、(4, 4)、(5, 3)、(6, 2)、(7, 3)、(8,4)、(7,5)
  • 该线段可以压缩为(2, 8)、(3,7)、(3,5)、(6, 2)、(8,4)、(7,5), 分别为起点、拐点、终点
  • 根据输入的线段数据,输出简化的结果
    在这里插入图片描述

输入描述:
2 8 3 7 3 6 3 5 4 4 5 3 6 2 7 3 8 4 7 5
每两个一组(i, j) i,j 范围为【0,64】
输入至少包含两个坐标点
输出描述:
2 8 3 7 3 5 6 2 8 4 7 5

思路:

  • 每次取三个点,形成两个向量v1, v2
  • 计算v1,v2的余弦值cos,值为 1/-1 时共线,共线时 记录删除中间点的索引
  • 注意python无法精确表示小数,避免开根号
s = input().strip()
n = len(s)# 字符串转为点
points = []
remove_points = []
for i in range(0, n, 4):points.append(list(map(int, s[i:i+4].strip().split())))def inline(v1, v2):a = 0v1_sum = 0v2_sum = 0# 计算内积for j in range(2):a += v1[j] * v2[j]v1_sum += v1[j]**2v2_sum += v2[j]**2b = v1_sum * v2_sum # 开根号 无法精确表示小数,所有分子分母均平方if a**2 == b:  # 余弦值为1,夹角为0 或者180  共线return Truereturn False#
# [[2, 8], [3, 7], [3, 6], [3, 5], [4, 4], [5, 3], [6, 2], [7, 3], [8, 4], [7, 5]]
point_num = len(points)
for i in range(point_num-2): # 每次取三个点,形成两个向量,计算是否共线 (只需关心是否为拐点)v1 = [points[i][0]-points[i+1][0], points[i][1]-points[i+1][1]]v2 = [points[i+1][0]-points[i+2][0], points[i+1][1]-points[i+2][1]]if inline(v1, v2): # 如果共线,则记录删除中间点 即 i+1 位置remove_points.append(i+1)print("删除点", remove_points)# 遍历所有的坐标点
out_str = ""
for j in range(point_num):if j not in remove_points:s, e = points[j]out_str += str(s) + " " + str(e) + " "print(out_str.strip())
http://www.lryc.cn/news/415412.html

相关文章:

  • 密码学基础:搞懂Hash函数SHA1、SHA-2、SHA3(2)
  • C++ 异步编程:std::async、std::future、std::packaged_task 和 std::promise
  • OD C卷 - 石头剪刀布游戏
  • 关于k8s集群中kubectl的陈述式资源管理
  • XML 学习笔记
  • MongoDB未授权访问漏洞
  • 数据安全、信息安全、网络安全区别与联系
  • Jenkins未授权访问漏洞 *
  • 【爬虫原理】
  • 计算机组成原理 —— 指令流水线的基本概念
  • Python爬虫技术 第31节 持续集成和自动化部署
  • 数据结构(C语言版)(第2版)课后习题答案
  • 打开轮盘锁问题(LeetCode)的分析总结及进一步提问
  • python——joblib进行缓存记忆化-对计算结果缓存
  • Linux文件管理
  • 《Unity3D网络游戏实战》学习与实践--制作一款大乱斗游戏
  • 文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑源-荷不确定性的省间电力现货市场潮流风险概率评估》
  • Pinterest 选择采用 TiDB
  • 【Python】 如何用 Docker 打包一个 Python 脚本
  • 从“幕后”到“台前”:一文读懂API经济如何促进企业的创新与增长
  • 解锁PDF新姿势:2024年PDF转图片工具精选
  • Node.js(8)——Express的基本使用
  • Linux--应用层协议HTTP
  • Flux:Midjourney的新图像模型挑战者
  • RabbitMQ高级特性 - 消费者消息确认机制
  • PermX-htb
  • 解密RCE漏洞:原理剖析、复现与代码审计实战
  • 打造智能家居:用React、Node.js和WebSocket构建ESP32设备控制面板(代码说明)
  • 计网:从输入URL到网页显示期间发生了什么
  • 龚宇引以为傲的“爆款制造营”,爱奇艺怕是要爽约了