【G - Arctic Network】

思路:

  • 最小生成树Kruskal
  • 先分析一波,因为可以任意设置 S 条零花费的道路,那么如果使用单树根的 Prim 恐怕会 WA,应使用以为本的 Kruskal。一共连 N - S 条边即可,剩下的联通块都使用免费路。
  • 枚举所有边,注意枚举严格上三角即可。

代码:

  • 282ms 2776kB
//282ms		2776kB


#include <iostream>
#include <cstring>
#include <queue>
#include <cmath>
#include <cstdio>
#include <algorithm>

using namespace std;

const int maxn = 505;

int S,N;
double ans;
int par[maxn];
struct NODE{
	int x,y;
}node[maxn];
struct EDGE{
	int u,v;
	double w;
	EDGE(int u,int v,double w) : u(u) , v(v) , w(w) {} ;
	friend bool operator > (EDGE a,EDGE b)
	{
		return a.w > b.w;
	}
};
priority_queue <EDGE , vector<EDGE> , greater<EDGE> > Q;

void INIT(){
	ans = 0;
	memset(par , -1 , sizeof(par));
	while(Q.size())
		Q.pop();
	return ;
}

int FIND(int i){
	return par[i] == -1 ? i : par[i] = FIND(par[i]);
}

void UNION(int l,int r){
	par[r] = l;
	return ;
}

void KRUSKAL(){
	int cnt = max(N-S , 0);
	while(Q.size() && cnt){
		EDGE cur = Q.top() ; Q.pop();
		int u = cur.u;
		int v = cur.v;
		double w = cur.w;
		int parl = FIND(u);
		int parr = FIND(v);
		if(parl != parr){
			UNION(parl , parr);//
			ans = max(ans , w);
			cnt--;
		}
	}
	return ;
}

int main(){
	int T;cin>>T;
	while(T--){
		INIT();
		cin>>S>>N;
		for(int i=1;i<=N;i++)
			scanf("%d%d" , &node[i].x , &node[i].y);
		for(int i=1;i<=N;i++)
			for(int j=i+1;j<=N;j++){
				double w = sqrt((node[i].x - node[j].x)*(node[i].x - node[j].x) + (node[i].y - node[j].y)*(node[i].y - node[j].y));
				Q.push(EDGE(i,j,w));
			}
		KRUSKAL();
		printf("%.2f\n" , ans);
	}
	return 0;
}
我是一名大学生 现在需要写毕业论文 论文题目是基于Android系统的聊天软件的设计与开发 主要研究内容是研究安卓系统的体系架构;研究安卓系统中的设计方法及设计语言;熟悉安卓系统的设计软件AS软件;分析聊天软件的组成及功能,利用AS软件设计基于安卓系统的聊天软件,并实现其功能。要求是在研究安卓系统的设计方法和设计语言,熟悉安卓系统设计软件AS的基础上,分析聊天软件的组成及功能,利用AS软件设计基于安卓系统的聊天软件,并实现其功能。### **目录**   **第一章 引言**   1.1 研究背景与意义   1.2 国内外研究现状   1.3 论文主要研究内容   1.4 论文组织结构   **第二章 Android系统相关技术研究**   2.1 Android系统体系架构   2.1.1 Linux内核层   2.1.2 系统运行时与库层   2.1.3 应用框架层   2.1.4 应用层   2.2 Android设计方法与开发语言   2.2.1 MVC/MVP/MVVM架构模式   2.2.2 Java/Kotlin语言特性   2.2.3 XML布局设计   2.3 Android Studio开发工具   2.3.1 AS功能模块分析   2.3.2 调试与性能优化工具   **第三章 聊天软件需求分析**   3.1 功能模块划分与核心需求 3.1.1 用户管理模块(注册、登录、安全验证) 3.1.2 消息通信模块(文本、图片、语音) 3.1.3 联系人管理模块(添加、分组、黑名单)  3.1.4 文件传输模块(类型支持、大小限制)  3.2 非功能需求与实现约束  3.2.1 性能与实时性(延迟、并发)  3.2.2 安全性设计(数据传输与存储)  3.2.3 兼容性要求(Android版本、屏幕适配) 3.3 技术选型与可行性验证  3.3.1 开发工具链选型(Android Studio、Firebase)  3.3.2 网络协议选择(WebSocket vs. XMPP)  3.3.3 数据库与加密方案(SQLite + SQLCipher) **第四章 系统设计与实现**   4.1 系统总体架构设计   4.1.1 客户端-服务器模式   4.1.2 技术选型(如Socket/WebSocket、XMPP协议)   4.2 核心模块设计   4.2.1 用户认证模块   4.2.2 消息传输模块(文本、图片、语音)   4.2.3 数据库设计(SQLite/Realm)   4.2.4 网络通信模块(Retrofit/OkHttp)   4.3 界面设计与实现   4.3.1 Material Design规范应用   4.3.2 核心界面原型(聊天列表、对话窗口)   4.4 安全性设计   4.4.1 HTTPS通信加密   4.4.2 本地数据加密存储   第五章 系统测试与优化 5.1 测试策略与方法    5.1.1 测试环境配置(硬件+软件)    5.1.2 自动化测试框架(Espresso+JUnit) 5.2 功能测试用例与结果    5.2.1 核心功能验证(消息收发/文件传输)    5.2.2 边界条件测试(弱网/高负载) 5.3 性能测试与分析    5.3.1 基准性能测试(响应时间/吞吐量)    5.3.2 压力测试(并发用户/消息洪峰) 5.4 安全性与兼容性测试    5.4.1 OWASP Top 10漏洞扫描    5.4.2 多设备适配测试 5.5 优化策略与效果    5.5.1 消息队列优化(优先级队列)    5.5.2 内存泄漏治理(LeakCanary)   **第六章 总结与展望**   6.1 研究成果总结   6.2 存在的问题与改进方向   **参考文献**   **附录**(代码片段、界面截图、测试报告等)根据以上要求和目录完成一篇工科毕业论文 要求符合大学生毕业论文水平 清晰明了 需要图文结合 要有数据支撑 文献准确 需要整个项目的完整可运行的代码
最新发布
03-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值