洛谷P3000 [USACO10DEC]牛的健美操Cow Calisthenics

这题一眼看上去十分的吓人
于是我决定写一个暴力然后过了…奇妙
首先看到所求的最大值最小,我们能确定肯定用二分
但是如何保证森林里的最大直径小于所二分的值呢
我们按照天天爱跑步的存边长度方式,树上链的形成
分为两种

1、该点子节点的子链的最大值和次大值
2、该点最长链加上面的部分

那么我们如何保证链最小呢,我们先不管第二点,我们把该点的子链长度放入一个vector
排序后,每次取出最大值和最小值,排除最大值,直到最大加次打小于所二分的值
此时该点的最长链的长度就是最大值
那么第二点如何处理呢,实际上不用管,因为在根节点的分叉点只存在情况一,我们只需要
每次求出合法的最大子链长度即可,于是就是一个很简单的处理了
PS.我的写法有一丢丢问题,所以加了一点点特判

#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<queue>
using namespace std;
const int maxn = 100007;
const int INF = 2147483647;
struct node{
	int to,next,w;
}edge[maxn*2];
int cnt,head[maxn];
void add(int from,int to){
	edge[++cnt].to=to;
	edge[cnt].next=head[from];
	head[from]=cnt;
}

int cut,leaf[maxn],n,m;
bool cmp1(int a,int b){return a>b;}
void dp(int u,int fa,int ML){
	//cout<<u<<endl;
	int son=0;
	vector<int>me;
	for(int i=head[u];i;i=edge[i].next){
		int to=edge[i].to;
		if(to==fa)continue;
		son++;
		dp(to,u,ML);
		me.push_back(leaf[to]+1);
	}
	if(son==0)return;
	sort(me.begin(),me.end(),cmp1);
	/*cout<<u<<" :";
	for(int i=0;i<me.size();i++)cout<<me[i]<<" ";
	cout<<endl;*/
	if(me[son-1]>ML){
		cut+=son;
		return;
	}
	int temp=0;
	leaf[u]=me[temp++];
	while(temp<me.size()&&leaf[u]+me[temp]>ML){
		cut++;leaf[u]=me[temp];temp++;
	}
}

int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<n;i++){
		int x,y;
		scanf("%d%d",&x,&y);
		add(x,y),add(y,x);
	}
	int l=1,r=n-1,ans=INF;
	while(l<=r){
		int mid=l+r>>1;
		//cout<<l<< " "<<r<< " "<<mid<<endl;
		memset(leaf,0,sizeof(leaf));
		cut=0,dp(1,0,mid);
		/*cout<<endl<<cut<<endl;
		for(int i=1;i<=n;i++)cout<<leaf[i]<<" ";
		cout<<endl;*/
		if(cut>m)l=mid+1;
		else ans=min(ans,mid),r=mid-1;
		
	}
	cout<<ans;
}
【博士论文复现】【阻抗建模、验证扫频法】光伏并网逆变器扫频与稳定性分析(包含锁相环电流环)(Simulink仿真实现)内容概要:本文档围绕“博士论文复现”主题,重点介绍了光伏并网逆变器的阻抗建模与扫频法稳定性分析,涵盖锁相环和电流环的Simulink仿真实现。文档旨在通过完整的仿真资源和代码帮助科研人员复现相关技术细节,提升对新能源并网系统动态特性和稳定机制的理解。此外,文档还提供了大量其他科研方向的复现资源,包括微电网优化、机器学习、路径规划、信号处理、电力系统分析等,配套MATLAB/Simulink代码与模型,服务于多领域科研需求。; 适合人群:具备一定电力电子、自动控制或新能源背景的研究生、博士生及科研人员,熟悉MATLAB/Simulink环境,有志于复现高水平论文成果并开展创新研究。; 使用场景及目标:①复现光伏并网逆变器的阻抗建模与扫频分析过程,掌握其稳定性判据与仿真方法;②借鉴提供的丰富案例资源,支撑博士论文或期刊论文的仿真实验部分;③结合团队提供的算法与模型,快速搭建实验平台,提升科研效率。; 阅读建议:建议按文档目录顺序浏览,优先下载并运行配套仿真文件,结合理论学习与代码调试加深理解;重点关注锁相环与电流环的建模细节,同时可拓展学习其他复现案例以拓宽研究视野。
内容概要:本文系统解析了嵌入式通信协议栈系列项目的实践路径,围绕通信原理与工程实现,阐述在资源受限的嵌入式环境中构建稳定、可扩展通信能力的方法。文章从通信基础模型出发,强调分层设计思想,涵盖物理层到应用层的职责划分,并依次讲解通信驱动、数据收发机制、帧格式解析、状态机控制、错误处理等核心技术环节。项目实践注重底层可靠性建设,如中断响应、缓冲区管理与数据校验,同时关注上层应用对接,确保协议栈支持设备配置、状态上报等实际业务。文中还突出性能优化与资源管理的重要性,指导开发者在内存与处理效率间取得平衡,并通过系统化测试手段(如异常模拟、压力测试)验证协议栈的健壮性。; 适合人群:具备嵌入式系统基础知识,有一定C语言和硬件接口开发经验,从事或希望深入物联网、工业控制等领域1-3年工作经验的工程师。; 使用场景及目标:①掌握嵌入式环境下通信协议栈的分层架构设计与实现方法;②理解状态机、数据封装、异常处理等关键技术在真实项目中的应用;③提升在资源受限条件下优化通信性能与稳定性的工程能力; 阅读建议:建议结合实际嵌入式平台动手实践,边学边调,重点关注各层接口定义与模块解耦设计,配合调试工具深入分析通信流程与异常行为,以全面提升系统级开发素养。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值