update
This commit is contained in:
parent
cf2b7c528a
commit
3fb5c48ee5
@ -1,4 +1,5 @@
|
|||||||
#include<iostream>
|
#include<iostream>
|
||||||
|
#include<stack>
|
||||||
using namespace std;
|
using namespace std;
|
||||||
typedef long long ll;
|
typedef long long ll;
|
||||||
|
|
||||||
|
93
20240917/P1991/P1991.cpp
Normal file
93
20240917/P1991/P1991.cpp
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
#include <algorithm>
|
||||||
|
#include <cmath>
|
||||||
|
#include <iomanip>
|
||||||
|
#include <ios>
|
||||||
|
#include <iostream>
|
||||||
|
#include <istream>
|
||||||
|
|
||||||
|
const int MAX_P = 500+5;
|
||||||
|
|
||||||
|
struct Dir{
|
||||||
|
int x,y;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Edge{
|
||||||
|
int s,e;
|
||||||
|
double dis;
|
||||||
|
bool operator<(const Edge that)const {
|
||||||
|
return this->dis < that.dis;
|
||||||
|
}
|
||||||
|
}edges[MAX_P*MAX_P];
|
||||||
|
|
||||||
|
|
||||||
|
int s,p;
|
||||||
|
Dir dirs[MAX_P];
|
||||||
|
|
||||||
|
decltype(Edge::dis) square(const decltype(Edge::dis) &n){
|
||||||
|
return n*n;
|
||||||
|
}
|
||||||
|
|
||||||
|
int check_sets[MAX_P];
|
||||||
|
|
||||||
|
int find_set(const int n){
|
||||||
|
if(check_sets[n]==n){
|
||||||
|
return n;
|
||||||
|
}else{
|
||||||
|
check_sets[n] = find_set(check_sets[n]);
|
||||||
|
}
|
||||||
|
return check_sets[n];
|
||||||
|
}
|
||||||
|
|
||||||
|
void merge_set(const int a,const int b){
|
||||||
|
check_sets[find_set(a)] = check_sets[find_set(b)];
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
std::cin.sync_with_stdio(false),std::cin.tie(0),std::cout.tie(0);
|
||||||
|
|
||||||
|
std::cin>>s>>p;
|
||||||
|
|
||||||
|
for(int i=1;i<=p;i++){
|
||||||
|
check_sets[i]=i;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i=1;i<=p;i++){
|
||||||
|
std::cin>>dirs[i].x>>dirs[i].y;
|
||||||
|
}
|
||||||
|
|
||||||
|
int flag = -1;
|
||||||
|
for(int i=1;i<=p;i++){
|
||||||
|
for(int j=i+1;j<=p;j++){
|
||||||
|
flag++;
|
||||||
|
edges[flag].e=i,edges[flag].s=j,edges[flag].dis=std::sqrt(square(dirs[i].x-dirs[j].x)+square(dirs[i].y-dirs[j].y));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::sort(edges,edges+flag+1);
|
||||||
|
|
||||||
|
decltype(Edge::dis) ans{0};
|
||||||
|
|
||||||
|
// #define NV(v)std::cout<<#v<<" : "<<(v)<<"\n";
|
||||||
|
#define NV(v)
|
||||||
|
|
||||||
|
int cnt{0};
|
||||||
|
|
||||||
|
for(int i=0;i<flag;i++){
|
||||||
|
NV(find_set(edges[i].e));
|
||||||
|
NV(find_set(edges[i].s));
|
||||||
|
|
||||||
|
if(find_set(edges[i].e)!=find_set(edges[i].s)){
|
||||||
|
NV(edges[i].dis)
|
||||||
|
merge_set(edges[i].e,edges[i].s);
|
||||||
|
// std::cout<<"merge "<<edges[i].e<<" "<<edges[i].s<<"\n";
|
||||||
|
ans=edges[i].dis;
|
||||||
|
cnt++;
|
||||||
|
if(cnt>=p-s){
|
||||||
|
std::cout<<std::fixed<<std::setprecision(2)<<ans<<"\n";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -7,7 +7,7 @@ end
|
|||||||
if is_mode("release") and (is_plat("linux")or is_plat("mingw")) then
|
if is_mode("release") and (is_plat("linux")or is_plat("mingw")) then
|
||||||
add_cxxflags("-march=native")
|
add_cxxflags("-march=native")
|
||||||
end
|
end
|
||||||
set_languages("c++latest")
|
set_languages("c++23")
|
||||||
set_warnings("all")
|
set_warnings("all")
|
||||||
|
|
||||||
target("P1158")
|
target("P1158")
|
||||||
@ -60,4 +60,7 @@ target("oj1808")
|
|||||||
add_files("20240915/1808/1808.cpp")
|
add_files("20240915/1808/1808.cpp")
|
||||||
|
|
||||||
target("matchStr")
|
target("matchStr")
|
||||||
add_files("20240915/matchStr/*.cpp")
|
add_files("20240915/matchStr/*.cpp")
|
||||||
|
|
||||||
|
target("P1991")
|
||||||
|
add_files("20240917/P1991/P1991.cpp")
|
Loading…
Reference in New Issue
Block a user