当前位置: 首页 > 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;}

相关文章:

  • 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如何攻克高速数据传输技术瓶颈​​
  • 怎样做展示型网站/江苏做网站的公司有哪些
  • 台州高端网站建设/宁波网站推广专业服务
  • 网站建设模板平台/好的在线crm系统
  • 用php做网站/seowhy论坛
  • 南京网站优化公司排名/百度top排行榜
  • 商城网站多少钱/百度网盘搜索引擎官方入口