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

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.xdnf.cn/news/13636.html

相关文章:

  • C primer plus (第六版)第七章 编程练习第4题,第5题
  • SecureRandom.getInstanceStrong() 与虚拟机的爱恨情仇
  • ImportError: cannot import name ‘PfeifferConfig‘ from ‘transformers‘【已解决】
  • 考试中关于机动车安全技术检验标准(如 GB 7258、GB 21861 等)的考核重点有哪些?
  • java单元测试写法
  • Element:Table表头全部或单个表头颜色header-row-style
  • 鸿蒙开发:DevEcoTesting中的稳定性测试
  • 【Python 算法零基础 6.贪心算法】
  • 基于51单片机和8X8点阵屏、独立按键的跳跃躲闪类小游戏
  • 在WordPress中彻底关闭生成缩略图的方法
  • c++经典好题
  • 机器学习基本概念与建模流程
  • day031-Shell自动化编程-数组与案例
  • 【全开源】码小象租车系统源码+uniapp前端+开发文档接口
  • 【粤语ASRTTS】粤语语音识别与合成:重塑粤语智能化标杆
  • android studio开关控制
  • 小知识点二:无刷电机开环控制
  • 创建型设计模式
  • linux系统实时监控top命令
  • Spring Boot 完整教程 - 从入门到精通(全面版)
  • 鹰盾视频加密器播放器倍速播放中变速不变声的技术原理解析
  • 开源生态新势能: 驱动国产 DevSecOps 与 AI 工程新进展
  • DeepSeek-R1与Claude 4.0 Sonnet:开源与闭源大模型的商业生态博弈
  • 快速生成树协议(RSTP)深度解析
  • 基于 tinyfsm 的状态机
  • 未来智能设备的三大核心能力:自检测、自修复与自决策
  • 套接字类型与协议设置
  • 微信小程序之页面跳转(路由),navigateTo redirectTo reLaunch
  • 大型语言模型的中毒攻击的系统评价
  • 一款自制的OpenMV4模块