北极通讯网络

传送门:北极通讯网络

思路:坐标化点存边,已知每0台卫星设备和1台没有区别最少需要两台才能消除一条最大边,在克鲁斯卡尔算法求最小生成树的过程中会产生多个连通块,连通块之间的边都是最大的那几条,也是要用卫星设备消除的那几条,k台设备一共可以消去k-1条边,所以只剩k个连通块时,最大的d就是已经在各个连通块中的最大的边

代码:

#include<iostream>
#include<cstring>
#include <cmath>
#include<algorithm>
#include <vector>
#include <stack>
#define x first
#define y second
using namespace std;
typedef long long LL;
typedef pair<int,int>PII;
const int N=510,M=N*N;
int cnt;
int n,m,k;
int f[N];
PII p[N];
struct edge
{
    int a,b;
    double c;
}edges[M];

bool cmp(edge a,edge b)
{
    return a.c<b.c;
}
double get_dist(PII a,PII b)
{
    int dx=a.x-b.x;
    int dy=a.y-b.y;
    return sqrt(dx*dx+dy*dy);
}
int get(int x)
{
    if(f[x]==x)
       return x;
        return f[x]=get(f[x]);
}

int main()
{
    cin>>n>>k;
    int m=0;
    int ans=0;
    for(int i=1;i<=n;i++)
        f[i]=i;
        
  for(int i=1;i<=n;i++)
    cin>>p[i].x>>p[i].y;
    
    for(int i=1;i<=n;i++)
    for(int j=1;j<i;j++)
    edges[++m]={i,j,get_dist(p[i],p[j])};
    sort(edges+1,edges+m+1,cmp);
    
  int cnt=n;
  double res=0;

  for(int i=1;i<=m;i++)
  {
      if(cnt<=k) break;
      int a=get(edges[i].a),b=get(edges[i].b);
      double w=edges[i].c;
      if(a!=b)
      {
          f[a]=b;
          cnt--;
          res=w;
      }
  }
  printf("%.2lf\n",res);
        return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
北极地区的通信面临着很多挑战,包括地理障碍和恶劣的天气条件。为了实现甚低频通信覆盖北极地区,需要使用大型天线和高功率发射器,以及复杂的信号处理技术。 以下是一个简单的MATLAB代码示例,用于模拟甚低频通信的传输和接收过程: ```matlab % 定义常量 fc = 30000; % 信号频率 (Hz) c = 299792458; % 光速 (m/s) lambda = c/fc; % 波长 (m) h_ant = 30; % 天线高度 (m) R = 6371000 + h_ant; % 发射/接收地球半径 (m) B = 100; % 信号带宽 (Hz) % 定义发射信号 t = 0:1/fc:1; % 时间 (s) s = cos(2*pi*fc*t); % 信号 % 定义接收天线位置 lat = 90; % 纬度 (度) lon = 0; % 经度 (度) h_ant_rx = 30; % 接收天线高度 (m) % 计算信号传输 d = distance(lat, lon, lat, lon+180); % 计算北极两点之间的距离 (km) d = d*1000; % 转换为米 theta = asin(R*sin(d/R)/R); % 计算信号下倾角 (弧度) L = 1.22*lambda/R; % 计算地球弯曲损失 Prx = Pt*Gt*Gr*(lambda^2/(4*pi*d)^2)*cos(theta)^2/(L^2); % 计算接收功率 (W) SNR = Prx/(k*B*Ts*10^(NF/10)); % 计算信噪比 % 解调信号 s_demod = fmdemod(s,fc,fc*2,B,3*fc); % 显示解调信号 plot(t,s_demod); xlabel('时间 (s)'); ylabel('幅度'); title('解调信号'); ``` 在上面的代码中,我们首先定义了一些常量,如信号频率、光速、波长、天线高度等。然后我们定义了一个简单的信号,并计算了接收天线的位置。接下来,我们计算了信号传输过程中的下倾角、地球弯曲损失和接收功率,并计算了信噪比。最后,我们使用MATLAB的fmdemod函数解调信号,并显示了解调后的信号。 请注意,这只是一个简单的示例代码,实际的甚低频通信系统可能需要更复杂的信号处理技术和更高级的算法来实现可靠的通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值