当前位置:网站首页>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;
}
边栏推荐
猜你喜欢
Implementation principle of golang coroutine
KT6368A Bluetooth certification problem_FCC and BQB_CE_KC certification or other instructions
[Cloud Native--Kubernetes] Pod Controller
10 种常见的BUG分类
2022杭电多校第三场 K题 Taxi
TinyMCE禁用转义
软件质量评估的通用模型
标识符、关键字、常量 和变量(C语言)
机器学习(公式推导与代码实现)--sklearn机器学习库
2022 Niu Ke Summer Multi-School Training Camp 5 (BCDFGHK)
随机推荐
2022杭电多校第一场 1004 Ball
[LeetCode] Summary of Matrix Simulation Related Topics
Senior game modelers tell newbies, what are the necessary software for game scene modelers?
IDEA 文件编码修改
QSunSync 七牛云文件同步工具,批量上传
MAUI Blazor 权限经验分享 (定位,使用相机)
Getting started with 3D modeling for games, what modeling software can I choose?
仿网易云音乐小程序-uniapp
The master teaches you the 3D real-time character production process, the game modeling process sharing
Modelers experience sharing: model study method
论文解读( AF-GCL)《Augmentation-Free Graph Contrastive Learning with Performance Guarantee》
what is MVCC
Three tips for you to successfully get started with 3D modeling
2022杭电多校第三场 L题 Two Permutations
KT148A voice chip ic working principle and internal architecture description of the chip
GO中sync包自由控制并发的方法
2022杭电多校 第三场 B题 Boss Rush
tiup uninstall
leetcode:269. 火星词典
网站最终产品页使用单一入口还是多入口?