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

wordpress自助建站网站不能上传附件

wordpress自助建站,网站不能上传附件,wordpress网站维护教程,h5产品是什么意思题目描述 在无限大的棋盘中有n个炮,第个炮的坐标是(xi,yi)。 已知每个炮的攻击方式是:先选一个攻击方向(上、下、左、右),该方向上看见的第一个棋子为“炮架”,该炮可以通过炮架攻击到炮架后面的棋子(只能攻击到炮架后面的第一个…

题目描述

在无限大的棋盘中有n个炮,第个炮的坐标是(xi,yi)。

已知每个炮的攻击方式是:先选一个攻击方向(上、下、左、右),该方向上看见的第一个棋子为“炮架”,该炮可以通过炮架攻击到炮架后面的棋子(只能攻击到炮架后面的第一个)。

小牛希望你求出每个炮第一次攻击能攻击到多少个炮。

输入描述

第一行输入一个正整数n,代表炮的数量。
接下来的几行,每行输入两个整数xi,yi,代表每个炮所在的坐标。
1<=n<=10^5
-10^9 <=xi,yi<= 10^9

输出描述

输出几行,每行输出一个整数,代表第i个炮可以攻击到的炮的数量。

示例1

输入:
6 
0 0 
0 1 
0 2 
1 0 
2 0 
3 0输出:
2
0
1
1
1
1

C++

#include <bits/stdc++.h>using namespace std;// 记录同一行的所有炮,key为行号,value为<列号, 炮的序号>
unordered_map<int, vector<pair<int, int>>> rows;
// 记录同一列的所有炮,key为列号,value为<行号, 炮的序号>
unordered_map<int, vector<pair<int, int>>> cols;int main() {int n;cin >> n;// 记录每个炮的攻击目标数vector<int> ans(n);// 读取输入数据for (int i = 0, x, y; i < n; i++) {cin >> x >> y;rows[x].emplace_back(y, i); // 按行分类,存储列号和炮的索引cols[y].emplace_back(x, i); // 按列分类,存储行号和炮的索引}// 遍历所有行,统计每个炮能攻击到的炮for (auto &p: rows) {vector<pair<int, int>> &lst = p.second;sort(lst.begin(), lst.end()); // 按列号排序for (int i = 0; i < lst.size(); i++) {int idx = lst[i].second;// 如果该炮右侧有两个炮,则可以攻击右侧if (i + 2 < lst.size()) ans[idx]++;// 如果该炮左侧有两个炮,则可以攻击左侧if (i - 2 >= 0) ans[idx]++;}}// 遍历所有列,统计每个炮能攻击到的炮for (auto &p: cols) {vector<pair<int, int>> &lst = p.second;sort(lst.begin(), lst.end()); // 按行号排序for (int i = 0; i < lst.size(); i++) {int idx = lst[i].second;// 如果该炮下侧有两个炮,则可以攻击下侧if (i + 2 < lst.size()) ans[idx]++;// 如果该炮上侧有两个炮,则可以攻击上侧if (i - 2 >= 0) ans[idx]++;}}// 输出每个炮能攻击的目标数for (int cnt: ans) {cout << cnt << endl;}return 0;
}

题目类型

本题属于 哈希表 + 排序 结合的题目,同时具有 扫描线思想,因为我们需要分别统计同一行和同一列上的炮的情况,以确定每个炮的攻击目标。


解题思路

1. 题目解析

  • 题目给定 n 个炮的坐标,炮的攻击方式是在选择一个方向(上、下、左、右)后,找到该方向上的 第一个棋子作为炮架,然后攻击炮架后面 最近的炮
  • 需要计算 每个炮可以攻击到的炮的数量

2. 主要思路

为了高效求解,可以采用 哈希表 + 排序 的方法:

  1. 使用哈希表分类存储炮的位置

    • unordered_map<int, vector<pair<int, int>>> rows 存储 同一行 的炮,key 为 行号,value 为 (列号,炮的索引)
    • unordered_map<int, vector<pair<int, int>>> cols 存储 同一列 的炮,key 为 列号,value 为 (行号,炮的索引)
  2. 对每一行、每一列的炮进行排序

    • 按照 列号 对同一行的炮进行排序,遍历后计算每个炮的可攻击数量。
    • 按照 行号 对同一列的炮进行排序,遍历后计算每个炮的可攻击数量。
  3. 计算每个炮的攻击目标

    • 经过排序后,我们遍历 每一行,如果某个炮 左侧第二个 存在,它可以攻击左侧目标;如果 右侧第二个 存在,它可以攻击右侧目标。
    • 同样遍历 每一列,如果某个炮 上侧第二个 存在,它可以攻击上侧目标;如果 下侧第二个 存在,它可以攻击下侧目标。
  4. 输出结果:每个炮能攻击到的炮的总数。

时间复杂度分析

  • 构造哈希表 需要遍历所有炮,时间复杂度为 O(n)

  • 排序部分:

    • 每个行/列最多包含 n 个元素,排序的时间复杂度为 O(k log k),其中 k 是该行/列的炮的数量。
  • 由于最坏情况下 所有炮都在同一行或同一列,排序时间复杂度为 O(n log n)

    • 遍历计算攻击目标 也是 O(n)

    综上,总时间复杂度为 O(n log n),可以高效处理 n ≤ 10^5 的情况。


空间复杂度分析

  • 哈希表 rowscols:在最坏情况下,所有炮分布在同一行或列,存储 O(n) 个元素。
  • 数组 ans:大小为 O(n)
  • 排序的临时空间:排序 O(1) 额外空间。

综上,总空间复杂度为 O(n)

整理题解不易, 如果有帮助到您,请给点个赞 ‍❤️‍ 和收藏 ⭐,让更多的人看到。🙏🙏🙏


文章转载自:

http://CJvG4sbZ.tmjhy.cn
http://B93BleiX.tmjhy.cn
http://FLIL9z1S.tmjhy.cn
http://5OysK5Pi.tmjhy.cn
http://6KjqTYdM.tmjhy.cn
http://ZMHu0v8K.tmjhy.cn
http://dWoCgeGg.tmjhy.cn
http://O433RqGK.tmjhy.cn
http://ZMMzSGA4.tmjhy.cn
http://N6XbnS6x.tmjhy.cn
http://vAISWhWH.tmjhy.cn
http://tXe1eY6H.tmjhy.cn
http://2GcLQXAp.tmjhy.cn
http://eDYW30ZX.tmjhy.cn
http://yFwkaygV.tmjhy.cn
http://SMTMdxyC.tmjhy.cn
http://Zg0Zdg7q.tmjhy.cn
http://YAnwPohB.tmjhy.cn
http://HQxUbNhw.tmjhy.cn
http://iW0Va4wv.tmjhy.cn
http://Dr7SXMTK.tmjhy.cn
http://RXwUao2M.tmjhy.cn
http://nZXGxKIW.tmjhy.cn
http://kmbQ0ozZ.tmjhy.cn
http://s58jsHtG.tmjhy.cn
http://PbCdX2w8.tmjhy.cn
http://kP0cMNKd.tmjhy.cn
http://4gFZomPz.tmjhy.cn
http://45JfdXGC.tmjhy.cn
http://UwIyrFr8.tmjhy.cn
http://www.dtcms.com/wzjs/643812.html

相关文章:

  • 从事网站开发学什么专业吴江住房城乡建设局网站
  • 赤峰网站建设red廊坊网站建设墨子
  • 韩城网站建设韩城网站推广动漫设计属于什么大类
  • 江门制作网站公司互联网技术的特征
  • 九一制作厂网站网页开发人员工具
  • 上海工商网站济宁网站建设服务
  • 网站建设哪家好网站建设哪家好网站建设哪家网站加视频播放设计怎么做的
  • 外国做的中国动画视频网站网络品牌推广的方法有哪些
  • 企业网站怎么建设大成建设株式会社网站
  • 四川企业网站模板步骤太原网站建设找山西云起时
  • 平度网站建设费用seo相关岗位
  • 深圳建设网站速成班软件开发一般多少钱
  • 商城网站建设解决方案南京公司网站建设怎么收费
  • 娱乐网站导航购物商城网站开发
  • 经典门户网站欣赏网上快速学做网站
  • 个人如何做微商城网站网页制作网页
  • asp.net 网站备份猎头公司怎么收费
  • 梅州住房和建设局网站做公司网站多钱
  • 网站建设案例百度云专业建站公司电话咨询
  • 网站常用文件夹牡丹江百度推广
  • 手机网站后台管理系统长沙九度网络科技
  • 张扬网站建设wordpress社交分享
  • 网站建设初步课程介绍厦门网站建设哪家比较好
  • 青海建筑网站建设公司无代码app制作平台
  • 网站被泛解析事件营销成功案例
  • 网站建设栏目分级个人做网站要注意什么条件
  • 有广告的网站网站开发工程师和前端
  • 营销推广运营 网站电子商务+网站建设
  • 莒县城阳网站建设怎么在新建网站上做分享代码
  • 地方信息网站源码网站建设开题报告数据库建立