当前位置:网站首页>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;
}
边栏推荐
猜你喜欢
电子行业MES管理系统的主要功能与用途
TinyMCE禁用转义
Statistical words (DAY 101) Huazhong University of Science and Technology postgraduate examination questions
简单的顺序结构程序(C语言)
Cloud native - Kubernetes 】 【 scheduling constraints
What is next-generation modeling (with learning materials)
How to automatically push my new articles to my fans (very simple, can't learn to hit me)
leetcode:266. 回文全排列
MongoDB permission verification is turned on and mongoose database configuration
3. Actual combat---crawl the result page corresponding to Baidu's specified entry (a simple page collector)
随机推荐
gorm联表查询-实战
node使用redis
Brainstorm: Complete Backpack
【LeetCode】图解 904. 水果成篮
SQL association table update
Mysql_13 事务
刘润直播预告 | 顶级高手,如何创造财富
2022杭电多校 第三场 B题 Boss Rush
STC89C52RC的P4口的应用问题
进程间通信和线程间通信
canvas 高斯模糊效果
Flask框架 根据源码分析可扩展点
僵尸进程和孤儿进程
tiup update
关于使用read table 语句
How to automatically push my new articles to my fans (very simple, can't learn to hit me)
Senior game modelers tell newbies, what are the necessary software for game scene modelers?
【云原生--Kubernetes】调度约束
TinyMCE disable escape
SV 类的虚方法 多态