ZJU-PAT 1056. Mice and Rice (25) 浙大2013年上机复试第四题

本文介绍了一个基于淘汰赛制的老鼠竞赛排名系统实现。系统通过多轮比赛逐步淘汰重量较轻的老鼠,最终确定每只老鼠的比赛轮次及排名。文章详细描述了竞赛流程的算法设计、数据结构的选择及其实现细节。
#pragma warning (disable:4786)
#include<iostream>
#include<string>
#include<cstdio>
#include<algorithm>
#include<map>
#include<queue>
using namespace std;

int n,m;
int B[100005];

int flag;

int cnt;//第几轮次被淘汰 

int group[1005],num_in_group;

struct mice
{
	int id;
	int weight;
	bool join;
	int rounds;
	int rank;
};
mice TT[100005];

bool judge()
{
	for(int i=0;i<n;i++) 
	{
		if(TT[i].join==false) return true;
	}
	return false;
}

bool cmp(mice a,mice b)
{
	return a.rounds >b.rounds;
}


bool cmp1(mice a,mice b)
{
	return a.id<b.id;
}

void process(int num)
{
	if(flag==n-1)
	{
		TT[group[0]].rounds=cnt;
		TT[group[0]].join=true;
		return;
	}

	int _id=-1,_max=-1,i;

	for(i=0;i<num;i++)
	{
		if(TT[group[i]].weight>_max) 
		{
			_max=TT[group[i]].weight;
			_id=i;
		}
	}
	for(i=0;i<num;i++)
	{
		if(i==_id) continue;
		TT[group[i]].rounds=cnt;
		TT[group[i]].join=true;
		flag++;
	}
}


int main()
{
	while(scanf("%d%d",&n,&m)!=EOF)
	{
		int i,j;
		
		//-------input--------
		for(i=0;i<n;i++) 
		{
			scanf("%d",&TT[i].weight);
			TT[i].join=false;
			TT[i].id=i;
		}
		for(i=0;i<n;i++) scanf("%d",&B[i]);
		
		
		//------group----------
		cnt=1;
		flag=0;
		while(judge())
		{
			num_in_group=0;
			
			for(i=0;i<n;i++) 
			{
				if(TT[B[i]].join==true) continue;
				group[num_in_group++]=B[i];
				
				if(num_in_group==m) 
				{
					process(num_in_group);
					num_in_group=0;
				}
			}
			if(num_in_group) process(num_in_group);
			cnt++;
		}

		//-------output----------
		sort(TT,TT+n,cmp);
		TT[0].rank=1;

		for(i=1;i<n;i++)
		{
			if(TT[i].rounds==TT[i-1].rounds)
				TT[i].rank=TT[i-1].rank;
			else TT[i].rank=i+1;
		}
		sort(TT,TT+n,cmp1);

		for(i=0;i<n;i++)
		{
			if(i!=n-1)
				printf("%d ",TT[i].rank);
			else
				printf("%d\n",TT[i].rank);
		}
	}
	return 0;
}

内容概要:本文详细介绍了利用二维时域有限差分法(2D FDTD)对光子晶体90度弯曲波导进行数值仿真的Matlab代码实现。该仿真方法旨在精确分析光子晶体波导在弯曲结构下的光传输特性,揭示其导光机制与缺陷模式的调控原理。资源包含完整的Matlab程序代码,支持对空间网格划分、介电常数分布、边界条件(如PML吸收边界)及光源参数等关键仿真要素的灵活设置与优化,便于用户复现结果并开展深入研究。通过仿真可直观获得光场在波导中的传播动态、透射谱特性以及能量损耗情况,为高性能光子器件的设计与优化提供理论依据和技术支持。; 适合人群:具备电磁场理论、光学基础和Matlab编程能力,从事光子学、集成光学或纳米光子器件研究的研究生、科研人员及工程技术开发者。; 使用场景及目标:①学习和掌握FDTD方法在周期性介质(光子晶体)器件仿真中的具体应用流程;②研究90度弯波导的光传输性能,分析弯曲损耗来源并探索低损耗结构优化方案;③作为光子集成电路中关键无源器件的设计与教学参考案例,服务于学术研究与工程实践。; 阅读建议:建议结合光子晶体能带理论与FDTD算法基本原理进行系统学习,运行代码时应逐步调整结构参数与仿真设置,观察光场演化和输出结果的变化,以深化对物理现象的理解,并可在此基础上拓展至其他复杂光子结构(如分束器、谐振腔)的仿真分析。
内容概要:本文系统研究了基于共识的捆绑算法(Consensus-Based Bundle Algorithm, CBBA)在多智能体多任务分配中的应用,重点聚焦于远程太空船交会与维修任务中的相对运动规划(RPO)问。通过构建多航天器协同任务场景,采用Matlab代码实现了CBBA算法的全过程仿真,展示了其在分布式决策框架下高效完成任务分配的能力。研究深入探讨了任务收益建模、路径规划约束、通信延迟与动态重规划等关键环节,验证了CBBA在确保任务分配一致性、避免资源冲突、适应动态环境变化以及优化整体任务效能方面的优越性能,为复杂空间任务中的自主协同提供了可靠的技术路径。; 适合人群:具备控制理论、航天动力学、分布式优化或多智能体系统等相关背景,从事航天任务规划、智能优化算法研究或相关工程实践的研究生、科研人员及航空航天领域工程师。; 使用场景及目标:①为多航天器在轨服务(如交会对接、空间维修)提供高效、鲁棒的分布式任务分配解决方案;②深入理解CBBA算法的核心机制及其在高动态、强约束空间任务中的适应性与优化潜力;③推动分布式人工智能算法在航天工程实际系统中的集成与应用验证。; 阅读建议:建议读者结合提供的Matlab代码,重点剖析任务建模逻辑、收益函数设计、共识迭代过程及收敛性分析模块,通过修改场景参数进行仿真实验,以深化对多智能体协同决策机制与算法性能边界条件的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值