题目传送门:https://ac.nowcoder.com/acm/contest/551/H

题目描述

众所周知 CSL 不仅玩魔方很强,打麻将也很强。今天他打魔法麻将的时候,在路上撞到了一个被打乱的 n 维魔法拼图。每一块拼图的位置用一个 n 维的坐标 (p1,p2,…,pn)(p1,p2,…,pn) 来表示。将拼图的任意两块交换位置称为一步。CSL 赶着打魔法麻将时间很紧,对步数和时间也很严格,所以需要用恰好 t 步把拼图复原。请问他能做到吗?

输入描述:

第一行有一个整数 n,表示拼图的维数。

第二行有 n 个整数 d1,d2,…,dnd1,d2,…,dn,分别表示每一维的大小。
下面 2×∏ni=1di2×∏i=1ndi 行,每行有 n 个整数:第 2⋅i−12⋅i−1 行表示 第 i 块拼图的初始位置 (ai,1,ai,2,…,ai,n)(ai,1,ai,2,…,ai,n),第 2⋅i2⋅i 行表示第 i 块拼图的目标位置 (bi,1,bi,2,…,bi,n)(bi,1,bi,2,…,bi,n),保证不会有多个拼图在同一初始位置或目标位置。
 
最后一行有一个整数 t,表示 CSL 要求的步数。
 
1≤n≤101≤n≤10
n∏i=1di≤106∏i=1ndi≤106
1≤ai,j,bi,j≤dj1≤ai,j,bi,j≤dj
0≤t≤2⋅1060≤t≤2⋅106

输出描述:

如果 CSL 可以用恰好 t 步复原,在一行输出 "YES",否则输出 "NO"。
示例1

输入

复制

1
1
1
1
1

输出

复制

NO
示例2

输入

复制

2
2 2
1 2
2 1
1 1
2 2
2 1
1 2
2 2
1 1
2

输出

复制

YES

解题思路:

类似于前面的那道一维的交换题目 CSL的魔法

不过这里是多维的,怎样形成映射呢?

用 string !

AC code:

 #include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define LL long long
#define inc(i, j, k) for(int i = j; i <= k; i++)
#define rep(i, j, k) for(int i = j; i < k; i++)
#define mem(i, j) memset(i, j, sizeof(i))
#define gcd(i, j) __gcd(i, j)
#define pb push_back
using namespace std;
const int MAXN = 2e5+; string st[MAXN], ed[MAXN], str;
map<string, int>vis;
int N, t;
int main()
{
int num;
scanf("%d", &N);
int len = ;
inc(i, , N){
scanf("%d", &num);
len*=num;
}
// printf("len %d\n", len); getchar();
// /*
inc(i, , len){
getline(cin, str);
st[i] = str;
vis[str] = i;
getline(cin, str);
ed[i] = str;
}
scanf("%d", &t);
LL ans = ;
inc(i, , len){
if(st[i] != ed[i]){
ans++;
int tp = vis[ed[i]];
swap(st[i], st[tp]);
vis[st[i]] = i;
vis[st[tp]] = tp;
}
if(ans > t) break;
}
if(ans > t) puts("NO");
else if((t-ans)% == ) puts("YES");
else puts("NO");
// */
return ;
}

最新文章

  1. jquery获取所有被选中checkbox
  2. [UE4]自定义MovementComponent组件
  3. Ioc正解
  4. 简单几何(线段覆盖) POJ 3347 Kadj Squares
  5. oracle 定时备份
  6. 2014年第五届蓝桥杯试题C/C++程序设计B组——李白打酒
  7. HDU 3333 Turing Tree (树状数组)
  8. HDU 1062 Text Reverse
  9. Spring核心框架 - AOP的起源及介绍
  10. 深入理解7816(3)-----关于T=0
  11. Maven-12: 插件解析机制
  12. Part-Three 类与对象
  13. scala模式匹配及样本类
  14. 用 Python + itchat 写一个爬虫脚本每天定时给女朋友发微信暖心话
  15. 4. 多重背包问题 I
  16. 16-acrobat por 简单使用指南
  17. JMS(Java消息服务)
  18. 【收藏】常用SQL语句
  19. 【Android】Android如何实现手机震动
  20. Java中Map相关的快速查找算法与唯一性(转载)

热门文章

  1. Java中返回值的详解
  2. 移动端HTML5实现文件上传
  3. 普通平衡树Tyvj1728、luogu P3369 (splay)
  4. css 各种常见布局整理
  5. js 数据监听--对象的变化
  6. layui-table渲染不出来
  7. Activiti 数据库表自动生成策略
  8. Qt Quick程序的发布
  9. spring cloud Eureka client配置(consumer通过Eureka发起对provider的调用)
  10. Windows系统环境下安装dlib