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

2024蓝桥杯C/C++ B组国赛

P10907 [蓝桥杯 2024 国 B] 蚂蚁开会 - 洛谷

暴力枚举:

把每条线段经过的整数点都求出,然后用map<pair<int, int>, int> 来记录每条线段上的每个点,会被访问多少次

如何求线段上的整点?

分别计算两点x轴坐标和y轴之差,取绝对值后,求出gcd,然后循环把整点为键,其值加一

最后从头到位遍历map,统计大于1的点有多少个

来看代码:

#include <bits/stdc++.h>
#include<unordered_map>
using namespace std;int gcd(int a, int b)
{if (b == 0){return a;}else{return  gcd(b, a % b);}
}map<pair<int, int>, int>arr;
vector<int>X1;
vector<int>Y1;
vector<int>X2;
vector<int>Y2;
void find_points(int now)
{int dx = X2[now] - X1[now];int dy = Y2[now] - Y1[now];int step = gcd(abs(dx), abs(dy));if (step == 0){arr[{dx, dy}]++;}dx /= step;dy /= step;for (int i = 0; i <= step; i++){arr[{X1[now] + i * dx, Y1[now] + i * dy }]++;}
}int main()
{int n;cin >> n;X1 = vector<int>(n);Y1 = vector<int>(n);X2 = vector<int>(n);Y2 = vector<int>(n);for (int i = 0; i < n; i++){cin >> X1[i] >> Y1[i] >> X2[i] >> Y2[i];}//每条线段 都把整点求出for (int i = 0; i < n; i++){find_points(i);}int ans = 0;for (auto &it : arr){if (it.second > 1){ans++;}}cout << ans;}

http://www.dtcms.com/a/244616.html

相关文章:

  • EtherCAT转CANopen网关实现与伺服系统连通的配置实例探究
  • Spring Cache+Redis缓存方案 vs 传统redis缓存直接使用RedisTemplate 方案对比
  • Oracle集群OCR磁盘组掉盘问题处理
  • git pull 和 git fecth 的区别,远程仓库创建了新分支,可以用git fetch更新,可以看到远程创建的新分支
  • K8S中应用无法获取用户真实ip问题排查
  • 基于微信小程序的天气预报app
  • Vue 数据代理机制实现
  • BYC8-1200PQ超快二极管!光伏逆变/快充首选,35ns极速恢复,成本直降20%!
  • 3-16单元格区域尺寸调整(发货单记录保存-方法2)学习笔记
  • 3-15单元格偏移设置(发货单记录保存-方法1)学习笔记
  • 云原生核心技术 (12/12): 终章:使用 GitLab CI 将应用自动部署到 K8s (保姆级教程)
  • 力扣-121.买卖股票的最佳时机
  • Linux常用命令详解
  • 【PmHub面试篇】集成 Sentinel+OpenFeign实现网关流量控制与服务降级相关面试题解答
  • SSE 数据的传输无法流式获取
  • 全连接层和卷积层等效情况举例
  • 【知识图谱构建系列1】数据集介绍
  • Gogs:一款极易搭建的自助 Git 服务
  • TBrunReporter 测试生成报告工具使用教程(Windows)
  • ​​5G通信设备线路板打样:猎板PCB如何攻克高速数据传输技术瓶颈​​
  • 期权末日轮实值期权盈利未平仓怎么办?
  • 采用模型上下文协议和 AIStor 的代理人工智能
  • 【热更新知识】学习三 XLua学习
  • 腾讯位置商业授权危险地点查询开发指南
  • P2834 纸币问题 3
  • 香橙派3B学习笔记10:snap打包C/C++程序与动态链接库(.so)
  • 通过一个本地存草稿的示例记录sqflite的使用
  • 国债与企业债:稳健与高收益的债券选择
  • 用Woot助力Prime Day
  • Java + Spring Boot + MyBatis 事务注解 @Transactional 使用规范说明