首页 > 其他分享 >2022 RoboCom 世界机器人开发者大赛-本科组(国赛)个人题解

2022 RoboCom 世界机器人开发者大赛-本科组(国赛)个人题解

时间:2023-06-18 14:55:21浏览次数:40  
标签:int 题解 国赛 xx 2022 ans define op

RC-u4 变牛的最快方法

思路

最短编辑距离+记录路径板子题,不懂最短编辑距离的可以看看网上的博客。不懂为什么官方题解用的bfs写法,然后网上所有的题解就是bfs了。我这里就是双重for循环实现,参考下写法即可。

代码

点击查看代码
#include<bits/stdc++.h>
#define x first
#define y second
#define PII pair<int,int>
using namespace std;
const int N = 1e3+9;
int a[N],b[N],n,m,dp[N][N],op[N][N];
PII pre[N][N];
int main() {
	int xx;
	while(cin>>xx&&xx!=-1) a[++n]=xx;
	while(cin>>xx&&xx!=-1) b[++m]=xx;
	memset(op,-1,sizeof op);
	//初始化很重要 
	for(int i=0; i<=n; ++i) dp[i][0]=i,op[i][0]=0,pre[i][0]={i-1,0};//删除 
	for(int i=0; i<=m; ++i) dp[0][i]=i,op[0][i]=3,pre[0][i]={0,i-1};//插入 
	for(int i=1; i<=n; ++i) {
		for(int j=1; j<=m; ++j) {
			int c=(a[i]!=b[j]);
			int add = dp[i][j-1]+1;//在a[i]前面添加b[j]
			int del = dp[i-1][j]+1;//删除a[i]
			int rce=dp[i-1][j-1]+c;//替换a[i]为b[j]
			dp[i][j]=min(add,min(del,rce));
			if(dp[i][j]==rce) {
				op[i][j]=1;//记录操作 
				pre[i][j]={i-1,j-1};//记录从哪里转移来的,下面同理 
				if(a[i]==b[j]) op[i][j]=2;
			}
			else if(dp[i][j]==add) op[i][j]=3,pre[i][j]={i,j-1};
			else  op[i][j]=0,pre[i][j]={i-1,j};
		}
	}
	cout<<dp[n][m]<<endl;
	//从右下角(n,m)根据pre数组,往回找路径 
	PII t = {n,m};
	vector<int> ans;
	while(t.x||t.y){
		ans.push_back({op[t.x][t.y]});
		t=pre[t.x][t.y]; 
	}
	reverse(ans.begin(), ans.end());
	for(auto &it : ans) cout<<it;
	return 0;
}
/*
in: 
1 -1
3 2 1 -1
out:
2
332 
*/



标签:int,题解,国赛,xx,2022,ans,define,op
From: https://www.cnblogs.com/Jin-yt/p/17489143.html

相关文章

  • Windows Server 2022 上添加无线网卡组件的批处理命令 启用 Windows Server 2022 无线
    在WindowsServer2022上添加无线网卡组件的批处理命令:打开记事本,将以下命令复制粘贴到记事本中:dism/online/enable-feature/featurename:Wireless-Networking/All将文件保存为后缀名为.bat的批处理文件,比如"install_wireless_component.bat"。在Windowsserver2022......
  • 使用以下命令来禁用 Windows Server 2022 上的密码复杂性要求
    使用以下命令来禁用WindowsServer2022上的密码复杂性要求:打开记事本,将以下命令复制粘贴到记事本中:netaccounts/minpwlen:0netaccounts/maxpwage:unlimitednetaccounts/minpwage:0将文件保存为后缀名为.bat的批处理文件,比如"disable_password_complexity.bat"。......
  • 禁用 Windows Server 2022 密码过期策略的批处理命令 密码永不过期
    禁用WindowsServer2022密码过期策略的批处理命令:打开记事本,将以下命令复制粘贴到记事本中:wmicpathWin32_UserAccountwhere"LocalAccount=TrueANDPasswordExpires=True"setPasswordExpires=False将文件保存为后缀名为.bat的批处理文件,比如"disable_password_expi......
  • 使用以下命令来关闭 Windows Server 2022 上的 Internet Explorer 安全增强
    使用以下命令来关闭WindowsServer2022上的InternetExplorer安全增强:打开记事本,将以下命令复制粘贴到记事本中:@echooffregadd"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ActiveSetup\InstalledComponents{A509B1A7-37EF-4b3f-8CFC-4F3A74704073}"/vIsInstalled/tR......
  • 使用以下命令来禁止 Windows Server 2022 在登录时自动启动服务器管理器
    使用以下命令来禁止WindowsServer2022在登录时自动启动服务器管理器:打开记事本,将以下命令复制粘贴到记事本中:regadd"HKLM\Software\Microsoft\ServerManager"/vDoNotOpenServerManagerAtLogon/tREG_DWORD/d1/f将文件保存为后缀名为.bat的批处理文件,比如"disabl......
  • 使用以下命令将 Windows Server 2022 上的 Bluetooth 服务全部设置为自动启动
    使用以下命令将WindowsServer2022上的Bluetooth服务全部设置为自动启动:打开记事本,将以下命令复制粘贴到记事本中:scconfigbthservstart=autoscconfigBluetoothAudioGatewayServicestart=autoscconfigBluetoothAVRCPServicestart=autoscconfigBluetoothUse......
  • CF1840C题解
    题目描述题目传送门\(T\)组数据,每组数据给定\(n\),\(k\),\(q\)和一个长度为\(n\)的数组\(a\),求\(a\)中长度大于等于\(k\)且最大值小于等于\(q\)的序列个数。\(\sum{n}\le2e5\)。题目解析解法一:数据结构解法显然可以利用数据结构维护。考虑ST表预处理出区间最大......
  • JOI Final 2020 题解
    JOI2020JustLongNeckties首先一定是贪心将两个从小到大排。然后考虑维护\(a_i-b_i\)的前缀max与\(a_{i+1}-b_i\)的后缀max即可。https://qoj.ac/submission/113106JOI2020JJOOII2考虑维护出每个点往前跳\(k\)个J/O/I跳到哪里。于是枚举右端点,然后往前跳找......
  • 蓝桥杯嵌入式第十三届客观题解析
    (文章目录)前言本篇文章将带大家来学习蓝桥杯嵌入式的客观题了,蓝桥杯嵌入式的客观题涉及到模电,数电,单片机等知识,需要非常扎实的基础,客观题不能急于求成只能脚踏实地一步步的积累,下面就让我们正式进入客观题的讲解。一、题目1第一题是一个多选题选ABC在参考手册中我们可以清......
  • 2023冲刺国赛模拟20
    2023冲刺国赛模拟20越来越废物了。A.树染色\(f_{x,1/0}\)表示考虑\(x\)子树内,第一条链为黑色/白色,不考虑第一条链在子树外方案数的答案。转移枚举第一条链是哪个,用组合数给各个子树的链定序。code#include<bits/stdc++.h>usingnamespacestd;typedeflonglong......