• 通過 k-d tree 和乙個優先佇列,可以查詢距離乙個欽定點第 k 遠的點。
• 具體
操作看起來似乎比較暴力。
1. 首先將 k 個 「 空 」 的值存入佇列。
2. 暴力 dfs k-d tree 更新佇列。
• 所有點對中的第 k 遠點對顯然只需要將佇列全域性化。
1 #include2view code#define ll long long
3#define ls son[u][0]
4#define rs son[u][1]
5#define inf 1e9
6using
namespace
std;
7int
n,m,root,opt;
8int pos[100050
];9 ll val[100050][2],x[2
];10 ll l[100050][2],r[100050][2
];11
int son[100050][2
];12
struct
node
1320 }num[100050
];21 priority_queueq;
22void
calc_push(node u)
2327
bool cmp(int a,int b)
28void pushup(int
u)2935}
36void build(int &u,int l,int r,int
k)37
46ll dou(ll u)
4750
void calc_point(int
u)51
54void calc_kd(int
u)55
61void query(int
u)62
73else
7478}79
intmain()
8090 build(root,1,n,0
);91 scanf("
%d",&m);
92while(m--)
93);
97query(root);
98 printf("
%d\n
",q.top().pos);99}
100return0;
101 }
p4357 [cqoi2016]k遠點對
一組詢問,k 較大。
1 #include2view code#define ll long long
3#define ls son[u][0]
4#define rs son[u][1]
5#define inf 1e9
6using
namespace
std;
7int
n,m,root,opt;
8 ll dis[100050
];9 ll x[100050][2],y[2
];10 ll l[100050][2],r[100050][2
];11
int pos[100050
];12
int son[100050][2
];13 priority_queue, greater>q;
14bool cmp(int a,int b)
15void pushup(int
u)1622}
23void build(int &u,int l,int r,int
k)24
32ll dou(ll u)
3336
void calc_point(int
u)37
40void calc_kd(int
u)41
47void query(int
u)48
56calc_kd(ls);
57calc_kd(rs);
58if(dis[ls]>dis[rs])
5963
else
6468}69
intmain()
7079 build(root,1,n,0
);80
while(m--) q.push(0
);81
for(int i=n;i>=1;--i)
8287 printf("
%lld
",q.top());
88return0;
89 }
Luogu P4357K遠點對(寄蒜幾盒)
題目鏈結 考慮旋轉卡殼求出乙個最遠點對之後刪掉其中乙個點,把該點到其餘所有點的距離存進堆裡 最後堆輸出答案。我的 只有在開o2的情況下才不會re。為啥?include include include include include define maxn 300020 using namespace...
STL 排序類 解決第k大問題
前言 相信我們會遇到過在一堆無序的數字中,問你第k大的數字是哪乙個或者第k小的數字。當然,最簡單的做法就是排序,然後直接輸出第k大的數字,這樣的話時間複雜度約為n 3 2 給定乙個長度為n的整數數列,以及乙個整數k,請用快速選擇演算法求出數列的第k小的數是多少。輸入格式 第一行包含兩個整數 n 和 ...
解決4K屏電腦顯示問題
在科技飛速發展的年代,4k螢幕不斷成為電視 電腦廣告的亮點功能,它在顯示效果上,確實效果不錯,如下圖。但是,在電腦上使用是否會影響眼睛的健康問題,還沒有權威的論證。畢竟4k高畫質螢幕還不是主流,很多軟體對相容性不是好,導致顯示異常。預設顯示解析度和縮放比例如下 在win10系統中,可以通過調整 高d...