首页 > 其他分享 >2021 ICPC 沈阳 J Luggage Lock

2021 ICPC 沈阳 J Luggage Lock

时间:2023-01-17 20:25:00浏览次数:63  
标签:tmp 10 dist Luggage int Lock 2021 debug 0000

链接:

vJudge

题意:

有一个4位数字的密码锁,一次操作你可以选择连续的若干位同时向上或向下旋转一位,现问你从一个状态变换到另一个状态的最少操作次数

思路:

  1. 化繁为简,首先可以想到把所有的 \(a_0a_1a_2a_3 -> b_0b_1b_2b_3\) 转换为 \(0000 -> c_0c_1c_2c_3\),其中 \(c_0c_1c_2c_3\) 为 \(a_0a_1a_2a_3 -> b_0b_1b_2b_3\) 每一位数字正向(或逆向)移动的次数
  2. 本质上是求一个起点到其他所有点的最短路,且每条边边权为1,可以用 \(BFS\) 求解【这里没想到】

code

#include <bits/stdc++.h>
using namespace std;
#define endl "\n"
#define DEBUG
#define debug(x) cerr << #x << " = " << x << "\n";
using db = long double;
using ll = long long;
// head
// 每个状态有20种移动方式
int d[20][4] = {
	{0, 0, 0, 1},
	{0, 0, 1, 0},
	{0, 1, 0, 0},
	{1, 0, 0, 0},
	{0, 0, 1, 1},
	{0, 1, 1, 0},
	{1, 1, 0, 0},
	{0, 1, 1, 1},
	{1, 1, 1, 0},
	{1, 1, 1, 1},
	{0, 0, 0, -1},
	{0, 0, -1, 0},
	{0, -1, 0, 0},
	{ -1, 0, 0, 0},
	{0, 0, -1, -1},
	{0, -1, -1, 0},
	{ -1, -1, 0, 0},
	{0, -1, -1, -1},
	{ -1, -1, -1, 0},
	{ -1, -1, -1, -1},
};
// dist数组存最短路
unordered_map<string, int> dist;
void bfs() {
	queue<string> q;
	q.push("0000");
	dist["0000"] = 0;
	while (!q.empty()) {
		auto t = q.front();
		q.pop();
		for (int i = 0; i < 20; i++) {
			string tmp = "0000";
			for (int j = 0; j < 4; j++) {
				tmp[j] = (t[j] - '0' + d[i][j] + 10) % 10 + '0';
			}
			// debug(tmp);
			if (!dist.count(tmp)) {
				dist[tmp] = dist[t] + 1;
				q.push(tmp);
			}
			// debug(dist[tmp]);
		}
	}
}
void solve() {
	string s1, s2;
	cin >> s1 >> s2;
	string s = "0000";
	// 0000 -> C0C1C2C3
	for (int i = 0; i < 4; i++) {
		s[i] = (s2[i] - s1[i] + 10) % 10 + '0';
	}
	// debug(s);
	cout << dist[s] << "\n";
}
int main() {
	ios_base::sync_with_stdio(false); cin.tie(nullptr); // debug调试注释,提交代码要有
	bfs();
	int T = 1; cin >> T;
	for (int cases = 1; cases <= T; cases++) {
		solve();
	}
	return 0;
}

标签:tmp,10,dist,Luggage,int,Lock,2021,debug,0000
From: https://www.cnblogs.com/Silly3kidZ/p/17058627.html

相关文章

  • 2021-01-17
    写点什么呢!今天上班的第四天,来的时候寻思着日记本带着不方便,就留在书架上了,啊!!我真的烦,刚想着写点什么,我妈又和我姐在群里吵起来了。哈哈哈!!!还得我出面解决纷争。两个人一点都......
  • tailscal DERP服务搭建,解决netcheck: UDP is blocked问题
    tailscalDERP服务搭建1.前言习惯了zerotier,但这个问题实在忍不了,就是跑不满千兆网卡,我这边最多120Mbps,这速度内网传文件真实太淡疼了,虽然有些办法可以临时解决,但总感觉......
  • The 2021 Shanghai Collegiate
    D-Zztrans的班级合照如果没有对序列大小关系的限制,只需要考虑\(a_i\)应该放在第一个序列还是第二个序列,我们定义\(f_{i,j}\)表示前\(i\)个数,第二个序列放了\(j\)......
  • 回顾 2021,展望 2022
    回顾在2021年初,部门经理因为个人职业规划提出离职,领导安排我接手部门经理的职位。我从潜心研究代码的开发者的角色转变为技术研发+管理,一开始是有些......
  • audition 2021 for Mac(au2021) v14.2直装版
    audition2021直装版哪里可以下载使用呢?audition2021mac版直装版是一款专业数字音频编辑软件,提供先进的音频混音、编辑和效果处理功能,专为音频和视频专业人员设计。无论是......
  • luogu P7323 [WC2021] 括号路径
    题面传送门为了方便,我们仅保留\((v,u,-w)\)的反向边。可以发现,如果某个点\(u\)到\(v_1,v_2\)同时有相同边权的边,那么\((v_1,v_2)\)就是一个合法的点对。因此可以这样暴力......
  • 【跨域报错解决方案】Access to XMLHttpRequest at ‘http://xxx.com/xxx‘ from orig
    错误背景描述:在使用ajax调用api接口的时候:发生错误如下​​​AccesstoXMLHttpRequestat‘http://xxxx.com/xxx’fromorigin‘null’hasbeenblockedbyCORSpolic......
  • 2020-2021 ACM-ICPC Latin American Regional
    K-Keylogger就是你可以显然的发现一个\(O(n^3)\)级别的动态规划。设\(dp_{i,j}\)表示第\(i\)位密码,现在按的键是\(j\)的答案。然后发现矩阵的每一行是单调递......
  • 盖瑞特行业首创电动涡轮增压技术斩获2021美国汽车新闻PACE大奖
    领先的汽车行业差异化技术供应商盖瑞特(纳斯达克代码:GTX)日前凭借电动涡轮增压技术荣获了2021美国汽车新闻PACE大奖。PACE奖项全称为全球汽车供应商杰出创新贡献奖,旨在表彰对......
  • 20211217|写给一年后的培民的一封信
    亲爱的民:培民,见面如晤,没错这是一封来自一年前的信。自四月份考试结束,我就游荡于广州和深圳,记4.14下午自广州到深圳,第一站即是找立彬,我自知今年插本已是与我无缘,随即开始......