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

牛客周赛 Round 109 (小红的直角三角形

小红的直角三角形

思路:

当作向量来求,向量乘为0;

#include<bits/stdc++.h>
#define ll long long 
#define endl "\n"
using namespace std;
typedef pair<ll, ll> pll;
int n;
vector<pll> u;
void solve() {int x, y, l, r;cin >> x >> y >> l >> r;if (x * l + y * r == 0 || -x * (l - x) + (-y) * (r - y) == 0 || -l * (x - l) + (-r) * (y - r) == 0) {cout << "Yes" << endl;}else {cout << "No" << endl;}return;
}
int main(){ios::sync_with_stdio(false);        // 禁用同步std::cin.tie(nullptr),std::cout.tie(nullptr);             // 解除cin与cout绑定int t = 1;//cin >> t;while (t--) {solve();}return 0;
}

小红的好点对

思路:

因为在坐标轴上,所以只有同x轴/y轴相差为1才成立,(0,0)单独讨论与(1,0)(0,-1)(-1,0)(0,1)的情况;

#include<bits/stdc++.h>
#define ll long long 
#define endl "\n"
using namespace std;
typedef pair<int, int> pii;
int n;
void solve() {int n;cin >> n;vector<int>a, b;bool pan = false;int x, y;for (int i = 0; i < n; i++) {cin >> x >> y;if (x == 0 && y == 0) {pan = true;}else if(x==0) {a.push_back(y);}else {b.push_back(x);}}sort(a.begin(), a.end());sort(b.begin(), b.end());int ans = 0;if (!a.empty() && (a[0] == -1 || a[0] == 1)&&pan) {ans++;}for (int i = 1; i < a.size(); i++) {if (a[i] == 1 || a[i] == -1) {if (pan)ans++;}if (a[i] - a[i - 1] == 1) {ans++;}}if (!b.empty() && (b[0] == -1 || b[0] == 1) && pan) {ans++;}for (int i = 1; i < b.size(); i++) {if (b[i] == 1 || b[i] == -1) {if (pan)ans++;}if (b[i] - b[i - 1] == 1) {ans++;}}cout << ans << endl;return;
}
int main(){ios::sync_with_stdio(false);        // 禁用同步std::cin.tie(nullptr),std::cout.tie(nullptr);             // 解除cin与cout绑定int t = 1;//cin >> t;while (t--) {solve();}return 0;
}

小红的整数三角形

思路:

两种情况,若y1!=y2,C点位(x1+(-)2,y1)或(x2+(-)2,y2)  S=2*|y1-y2|/2;

若y1=y1,C点位(x1,y+(-)21)或(x2,y2+(-)2)   S=2*|x1-x2|/2;

#include<bits/stdc++.h>
#define ll long long 
#define endl "\n"
using namespace std;
typedef pair<int, int> pii;
int n;
void solve() {ll x, y, l, r;cin >> x >> y >> l >> r;ll q = y - r;if (q != 0) {cout << l + 2 << " " << r << endl;}else {cout << l << " " << r+2 << endl;}return;
}
int main(){ios::sync_with_stdio(false);        // 禁用同步std::cin.tie(nullptr),std::cout.tie(nullptr);             // 解除cin与cout绑定int t = 1;//cin >> t;while (t--) {solve();}return 0;
}

小红的马

思路:

两个map,一个存可以吃到兵的所以点位+该点位可以吃几个兵,第二个map存,兵的点位

最后遍历第一个map,并舍去第二个map存在的点后,取最大值。

#include<bits/stdc++.h>
#define ll long long 
#define endl "\n"
using namespace std;
typedef pair<int, int> pii;
pii b[8] = { {-1,2},{-1,-2},{1,2},{1,-2},{-2,1},{-2,-1},{2,1},{2,-1} };
void solve() {int n;cin >> n;pii a;map<pii, int> f, pan;for (int i = 0; i < n; i++) {cin >> a.first >> a.second;pan.insert({ a, 0 });for (int j = 0; j < 8; j++) {auto it = f.find({ a.first + b[j].first,a.second + b[j].second });if (it == f.end()) {f.insert({ { a.first + b[j].first,a.second + b[j].second },1 });}else {(*it).second++;}}}int max_f = 0;pii g = { n,n };for (auto& it : f) {if (it.first.first < 1 || it.first.second < 1) {continue;}auto yy = pan.find(it.first);if (yy == pan.end()) {if (max_f < it.second) {g = it.first;max_f = it.second;}}}cout << g.first<<" "<<g.second << endl;return;
}
int main(){ios::sync_with_stdio(false);        // 禁用同步std::cin.tie(nullptr),std::cout.tie(nullptr);             // 解除cin与cout绑定int t = 1;//cin >> t;while (t--) {solve();}return 0;
}

小红的好矩形

思路:

  1. 预处理:将点按 x 坐标和 y 坐标分别排序,方便后续处理。
  2. 查找满足条件的点:对于每个点,检查是否存在 (x+1, y) 或 (x, y+1)
  3. 统计点对
    • 对于相同 x 坐标的点,统计满足 (x+1, y) 存在的点数目,计算组合数。
    • 对于相同 y 坐标的点,统计满足 (x, y+1) 存在的点数目,计算组合数。
  4. 去重处理:如果存在点同时满足 (x+1, y) 和 (x, y+1),需要减去重复计数的情况。
#include<bits/stdc++.h>
#define ll long long 
#define endl "\n"
using namespace std;
typedef pair<int, int> pii;
int n;
vector<pii> u;
bool find(pii q) {q.first++;int l = 0, r = n - 1;while (l < r) {int mid = (l + r) / 2;if (u[mid] > q) {r = mid - 1;}else if(u[mid]<q) {l = mid + 1;}else {return true;}}if (u[l] == q) {return true;}else {return false;}
}
void solve() {cin >> n;vector<pii> a(n), b(n);for (int i = 0; i < n; i++) {cin >> a[i].first >> a[i].second;b[i].second = a[i].first, b[i].first = a[i].second;}sort(a.begin(), a.end());sort(b.begin(), b.end());ll ans = 0;int i = 0;u = a;while (i < n) {while (i<n&&!find(a[i])) {i++;}if (i >= n) {break;}pii w = a[i];i++;if (i >= n) {break;}ll sum = 1;for (; i < n&&w.first==a[i].first; i++) {if (find(a[i])) {sum++;}}ans += (sum - 1) * sum / 2;}i = 0;u = b;while (i < n) {while (i < n && !find(b[i])) {i++;}if (i >= n) {break;}pii w = b[i];i++;if (i >= n) {break;}ll sum = 1;for (; i < n && w.first == b[i].first; i++) {if (find(b[i])) {sum++;}}ans += (sum - 1) * sum / 2;}for (int i = 0; i < n; i++) {if (i + 1 < n && b[i].first == b[i + 1].first &&b[i+1].second-b[i].second==1&& find(b[i]) && find(b[i + 1])) {ans--;}}cout << ans << endl;return;
}
int main(){ios::sync_with_stdio(false);        // 禁用同步std::cin.tie(nullptr),std::cout.tie(nullptr);             // 解除cin与cout绑定int t = 1;//cin >> t;while (t--) {solve();}return 0;
}

文章转载自:

http://3JotxWvN.jrsgs.cn
http://BgRgbWTQ.jrsgs.cn
http://QcVJ5bEN.jrsgs.cn
http://sbYIHBwd.jrsgs.cn
http://RCASjFW2.jrsgs.cn
http://2eATwfut.jrsgs.cn
http://bSU6cS2w.jrsgs.cn
http://760cOHkL.jrsgs.cn
http://xtXX7VWG.jrsgs.cn
http://rJdsOp47.jrsgs.cn
http://miC23M5m.jrsgs.cn
http://Kj31LpVn.jrsgs.cn
http://O4ScPzth.jrsgs.cn
http://VizUXByU.jrsgs.cn
http://NbDCcYh3.jrsgs.cn
http://kW3c2T3Z.jrsgs.cn
http://94hIi4ZT.jrsgs.cn
http://IZIdTDUt.jrsgs.cn
http://9mQHRtM3.jrsgs.cn
http://TN9irUDs.jrsgs.cn
http://Al9eWAzk.jrsgs.cn
http://5Nk0gIeo.jrsgs.cn
http://dlvIt5Xe.jrsgs.cn
http://31X4XW56.jrsgs.cn
http://55QimJ6q.jrsgs.cn
http://2QCQocVv.jrsgs.cn
http://B9D9F7cH.jrsgs.cn
http://gqC11NTM.jrsgs.cn
http://SdDvFLPj.jrsgs.cn
http://WkfbiPvU.jrsgs.cn
http://www.dtcms.com/a/385617.html

相关文章:

  • 【C++实战⑬】解锁C++文件操作:从基础到实战的进阶之路
  • 股票进阶之成交量买卖法
  • 【LangChain指南】Prompt templates
  • CSS基础 - 选择器备忘录 --笔记5
  • Vue-30-利用Vue3大模型对话框设计之切换主题时显示对应的session列表
  • 全光谱 LED 太阳光模拟器的原理
  • 权限更改centos中系统文件无法创建文件夹,使用命令让普通用户具备操作文件夹
  • 【WebGIS】Vue3使用 VueLeaflet + 天地图 搭建地图可视化平台(基础用法)
  • 69-SQLite应用
  • Day06 双指针扫描 | 11. 盛最多水的容器
  • LeetCode 刷题【77. 组合、78. 子集、79. 单词搜索】
  • Jenkins 构建清理策略:自带功能 vs Discard Old Build 插件,全场景实操指南
  • DevOps历程-Gogs的安装与部署
  • FreeRTOS 任务静态创建与句柄详解
  • 嵌入式音视频开发——RTMP协议详解
  • 每日一题(6)
  • 信号量主要API及综合应用
  • 【开题答辩全过程】以 B站用户视频喜好倾向数据分析系统为例,包含答辩的问题和答案
  • ARM架构学习6.2——中断理解
  • 搭建Qt5.14.2+msvc2017_x64项目测试Opencv4.10功能
  • Steger 算法 的原理和流程
  • WD5030K:一款7-30V宽输入范围、12A高效同步降压DC-DC转换器芯片详解
  • 《2025年AI产业发展十大趋势报告》五十七
  • 滴滴试点返程费自主议价将会怎么改变市场?
  • 【嵌入式原理系列-第八篇】USART从原理到配置全解析
  • Python4-seaborn
  • 使用 Aamzon Step Functions 重构无服务器工作流
  • 模电基础:场效应管
  • Typescript工具类型
  • Spring异步编程- 浅谈 Reactor 核心操作符