【Codeforces】1136C Nastya Is Transposing Matrices (矩阵转置)

博客围绕矩阵转置变换展开,提出判断第一个矩阵能否通过转置变成第二个矩阵的问题,指出转置后对角线元素不变,还提及可用map或vector解决,以及判断两个vector相等。

http://codeforces.com/contest/1136/problem/C

第一个矩阵可否通过转置,变换成第二个矩阵,可以的话输出“YES”,不可以的话,输出“NO”

转置之后,对角线元素是不变的

用map,或者vector 都可以

#include <iostream>
#include <map>
#include <cstdio>

using namespace std;

const int maxn = 505;

int a[maxn][maxn];
int b[maxn][maxn];

map<int,int> mp[2*maxn];
int main ()
{
	int i,j,n,m;
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++)
		{
			scanf("%d",&a[i][j]);
			mp[i+j][a[i][j]]++;
		}
	}
	int flag=1;
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++)
		{
			scanf("%d",&b[i][j]);
			if(mp[i+j][b[i][j]]<=0)
			{
				flag=0;
				break; 
			} 
			mp[i+j][b[i][j]]--;
		}
	}
	if(flag)
		printf("YES");
	else
		printf("NO");
	return 0;
} 

 

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

const int maxn = 505;

int main() {
    
    ios_base::sync_with_stdio(0);
    cin.tie(0);
	
	int n, m, i, j;
	cin>>n>>m;
	
	vector<int> a[2*maxn], b[2*maxn];
	for(i=1;i<=n;i++)
	{
	    for(j=1;j<=m;j++)
	    {
	        int test;
	        cin>>test;
	        a[i+j].push_back(test);
	        
	    }  
	}
	for(i=1;i<=n;i++)
	{
	    for(j=1;j<=m;j++)
	    {
	        int test;
	        cin>>test;
	        b[i+j].push_back(test);
	        
	    }   
	}
	for(i=1;i<=n+m;i++)
	{
		sort(a[i].begin(),a[i].end());
		sort(b[i].begin(),b[i].end());
	}
	int flag=0;
	for(i=1;i<=n+m;i++)
	{
		if(a[i]!=b[i])
		{
			flag = 1;
			break;
		}
	}
	if(flag)
		cout << "NO";
	else
		cout << "YES";
	   
	return 0;
}

 

 

判断两个vector 相等

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main ()
{
	vector<int> v1,v2;
	vector<int>::iterator it;
	v1.push_back(1);
	v1.push_back(3);
	v1.push_back(100);
	v2.push_back(100);
	v2.push_back(1);
	v2.push_back(3);
	for(it=v1.begin();it!=v1.end();it++)
	{
		cout << *it  << " ";
	}
	cout << endl;
	for(it=v2.begin();it!=v2.end();it++)
	{
		cout << *it << " ";
	}
	cout << endl;
	//sort(v1.begin(),v1.end());
	//sort(v2.begin(),v2.end());
	//没有sort之前,输出NO
	//sort之后,输出YES 
	if(v1==v2)
		cout << "YES";
	else
		cout << "NO";
	return 0;
}

 

内容概要:本文研究基于豪猪算法(CPO)实现多无人机协同集群在三维空间中的避障路径规划,旨在通过优化目标函数(最低成本,涵盖路径长度、飞行高度、威胁规避转弯角度)来提升无人机集群的任务执行效率与安全性。该方法采用Matlab进行算法设计与仿真验证,系统性地展示了CPO算法在复杂三维动态环境下的路径搜索能力与优化性能,突出其在多机协同、动态障碍物规避资源最优分配方面的优势。研究不仅实现了路径规划的核心算法构建,还提供了完整的代码资源与仿真案例,便于进一步对比分析与工程应用。; 适合人群:具备一定Matlab编程基础,从事无人机控制、智能优化算法、路径规划、协同导航、自动化系统等相关领域的科研人员、研究生及工程技术人员。; 使用场景及目标:①开展多无人机协同作业中的三维路径规划研究;②评估并对比豪猪算法(CPO)与其他智能优化算法(如GA、PSO、GWO、TTHHO等)在路径规划任务中的性能差异;③实现复杂环境中多无人机的安全避障、能耗优化与飞行稳定性提升的仿真与验证。; 阅读建议:建议结合提供的Matlab代码进行仿真实践,重点关注目标函数的建模方式、CPO算法的迭代机制与参数敏感性分析,并通过与其它算法的对比实验深入理解其收敛性、鲁棒性及适用范围。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值