当前位置:网站首页>2022 Hangzhou Electric Multi-School 1004 Ball
2022 Hangzhou Electric Multi-School 1004 Ball
2022-08-05 00:22:00 【Rain Sure】
题目链接
题目大意
Topic given our two-dimensional plane n n n个点,Horizontal ordinate are no more than 100000 100000 100000,Ask we choose three points,Three points constitute three sides of the perimeter of the median is the number of primes scheme is how much?
题解
Direct enumeration three points,势必会TLE;So we consider all edge build up,时间复杂度 O ( n 2 ) O(n^2) O(n2),And then according to the edge of the smallest size,Then, in turn, enumerated each edge,If the current edge is prime,Assuming that the current edge two endpoints for a a a 和 b b b,We need to know the connection a a aThe number of the edge is smaller than the current edge weights in the,连接 b b bThe number of edge is bigger than the current edge weights;Similarly, in turn, requires a.Direct enumeration not goozyet,我们考虑使用 b i t s e t bitset bitset进行优化, p [ i ] p[i] p[i]What are said to i i iPoint distance less than or equal to the current edge,In the process of enumeration and maintenance can be.最终时间复杂度 O ( n 2 l o g ( n 2 ) ) O(n^2 log(n^2)) O(n2log(n2)).
代码
#include<iostream>
#include<cstring>
#include<bitset>
#include<algorithm>
using namespace std;
#define int long long
const int maxn = 2010, M = 200010;
#define x first
#define y second
typedef pair<int,int> PII;
PII a[maxn];
bool st[M];
int primes[M], cnt;
typedef struct node
{
int a, b, c;
bool operator < (const struct node &w) const {
return c < w.c;
}
}Node;
Node edges[maxn * maxn];
bitset<maxn> p[maxn];
int n, m;
void init(int n)
{
for(int i = 2; i <= n; i ++){
if(!st[i]) primes[cnt ++] = i;
for(int j = 0; primes[j] <= n / i; j ++){
st[primes[j] * i] = true;
if(i % primes[j] == 0) break;
}
}
}
int get_dist(PII a, PII b)
{
return abs(a.x - b.x) + abs(a.y - b.y);
}
signed main()
{
init(200000);
st[1] = true;
int t; cin >> t;
while(t --){
for(int i = 0; i < maxn; i ++) p[i].reset();
cin >> n >> m;
for(int i = 1; i <= n; i ++) cin >> a[i].x >> a[i].y;
int k = 0;
for(int i = 1; i <= n; i ++){
for(int j = i + 1; j <= n; j ++){
edges[k ++] = {
i, j, get_dist(a[i], a[j])};
}
}
int res = 0;
sort(edges, edges + k);
for(int i = 0; i < k; i ++){
int a = edges[i].a, b = edges[i].b, c = edges[i].c;
if(!st[c]) res += (p[a] ^ p[b]).count();
p[a][b] = 1, p[b][a] = 1;
}
cout << res << endl;
}
return 0;
}
边栏推荐
- 工业物联网 —— 新型数据库的召唤
- Three tips for you to successfully get started with 3D modeling
- leetcode:267. 回文排列 II
- 2022牛客暑期多校训练营5(BCDFGHK)
- tiup update
- 阅读笔记:如何理解DevOps?
- How to automatically push my new articles to my fans (very simple, can't learn to hit me)
- SV 类的虚方法 多态
- About I double-checked and reviewed the About staff page, returning an industry question
- 仿网易云音乐小程序-uniapp
猜你喜欢
Mysql_14 存储引擎
【LeetCode】Summary of Two Pointer Problems
Implementation principle of golang coroutine
TinyMCE disable escape
The master teaches you the 3D real-time character production process, the game modeling process sharing
仿网易云音乐小程序-uniapp
软件开发工具的技术要素
情侣牵手[贪心 & 抽象]
【Valentine's Day special effects】--Canvas realizes full screen love
QSunSync 七牛云文件同步工具,批量上传
随机推荐
gorm联表查询-实战
[CVA Valuation Training Camp] Financial Modeling Guide - Lecture 1
MAUI Blazor 权限经验分享 (定位,使用相机)
KT6368A Bluetooth certification problem_FCC and BQB_CE_KC certification or other instructions
#yyds dry goods inventory #Switching equipment serious packet loss troubleshooting
The master teaches you the 3D real-time character production process, the game modeling process sharing
Mysql_14 存储引擎
leetcode:269. 火星词典
Flask框架 根据源码分析可扩展点
软件开发工具的技术要素
2022 Niu Ke Summer Multi-School Training Camp 5 (BCDFGHK)
2 用D435i运行VINS-fusion
matlab中rcosdesign函数升余弦滚降成型滤波器
电赛必备技能___定时ADC+DMA+串口通信
机器学习(公式推导与代码实现)--sklearn机器学习库
关于我仔细检查审核过关于工作人员页面,返回一个所属行业问题
E - Many Operations (按位考虑 + dp思想记录操作后的结果
Metasploit-域名上线隐藏IP
2022牛客多校第三场 J题 Journey
Statistical words (DAY 101) Huazhong University of Science and Technology postgraduate examination questions