2019 年百度之星·程序设计大赛 - 初赛二
传送门:
[1]:HDU
[2]:bestcoder
B.度度熊与排列(思维)
•题意
有一个数组 p,p 中包含的数为 1~m 的全排列,一个含 m 个字符的串 s;
在 s 上有一个操作,对于 s 中的第 i 个位置的字符,放到 p[ i ] 位置,构成一个新串 t;
即 si=tpisi=tpi;
给你 2n 个串,每两个串为一组,前一个串表示原串 s,后一个串表示经过 p 映射后的新串 t;
求是否存在某个 1~m 的全排列,使得这 n 组串都可以经过 p 由 s 变为 t;
如果存在,输出字典序最小的那组,如果不存在,输出 -1;
•思路
就s->t可以对应实现而言
每个s串的每个位置的字母,与每个t串的对应位置的字母是相同的
例如
s串 t串
abcdda addcba
azxcvv vvcxza
s串每个位置字母
1 2 3 4 5 6
a b c d d a
a z x c v v
t串每个位置字母
1 2 3 4 5 6
a d d c b a
v v c x z a
所以s与t位置对应
1->6,2->5,3->4,4->3,5->2,6->1
为了方便查找,我们可以将s串每一列按字典序排序,t串每一列按字典序排序
于是变成
s串
1 6 2 3 4 5
a a b c d d
a v z x c v
t串
6 1 5 4 3 2
a a b c d d
a v z x c v
排序之后s的每一列,与t的每一列应该是完全相同的,
s与t所对应的序号,就是对应的位置
•代码
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 pair<string,int> p1[55],p2[55]; 5 string s[25],t[25]; 6 7 int main() 8 { 9 int T; 10 cin>>T; 11 while(T--) 12 { 13 int n,m; 14 cin>>n>>m; 15 for(int i=1;i<=n;i++) 16 cin>>s[i]>>t[i]; 17 18 for(int j=0;j<m;j++) 19 { 20 string x,y; 21 for(int i=1;i<=n;i++) 22 { 23 x+=s[i][j]; 24 y+=t[i][j]; 25 } 26 p1[j].first=x,p2[j].first=y; 27 p1[j].second=j+1,p2[j].second=j+1; 28 } 29 sort(p1,p1+m); 30 sort(p2,p2+m); 31 32 int index[55]; 33 bool flag=true; 34 for(int i=0;i<m;i++) 35 { 36 if(p1[i].first!=p2[i].first) 37 { 38 puts("-1"); 39 flag=false; 40 break; 41 } 42 index[p1[i].second]=p2[i].second; 43 } 44 if(!flag) 45 continue; 46 for(int i=1;i<=m;i++) 47 { 48 if(i!=1) 49 printf(" %d",index[i]); 50 else 51 printf("%d",index[i]); 52 } 53 puts(""); 54 } 55 }View Code
转载于:https://www.cnblogs.com/MMMinoz/p/11379607.html
2019 年百度之星·程序设计大赛 - 初赛二相关推荐
- 2019 年百度之星·程序设计大赛 - 初赛一 C. HDU 6670 Mindis 离散化+dijkstra
题目链接 :http://acm.hdu.edu.cn/showproblem.php?pid=6670 Mindis Time Limit: 4000/2000 MS (Java/Others) M ...
- 2019 年百度之星·程序设计大赛 - 初赛一Game HDU 6669 (实现,贪心)
Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...
- 2019 年百度之星·程序设计大赛 - 初赛一 1003 Mindis
Mindis Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total S ...
- [2019 年百度之星·程序设计大赛 - 初赛三]简要题解?
UPD:AC代码放上去了 前言 老年贤者选手终于记得打百度之星了 Orz mayaohua2003 题目链接 最短路 1 n⊕1n \oplus 1n⊕1 Code #include <cstd ...
- 2019 年百度之星·程序设计大赛 - 初赛一
传送门 [1]hdu [2]bestcoder B.Game(贪心+思维) •题意 一步可以走一个或者两个,求依次进入n个区间[li,ri]的最少步数 •思路 就当前位置cur来说, 1)如果下一个任 ...
- 2019 年百度之星·程序设计大赛 - 初赛一 解题报告
题目链接 1001 Polynomial (基础数学) Accepts: 2234 Submissions: 5283 Time Limit: 2000/1000 MS (Java/Others) M ...
- 2021 年百度之星·程序设计大赛 - 初赛二 1001 签到(找规律,快速幂)
solution 找规律 #include <iostream> #include <algorithm>using namespace std;const int mod = ...
- 2021 年百度之星·程序设计大赛 - 初赛二 1003 魔怔(并查集,联通性,欧拉回路)
problem solution 发现除了起点和终点,剩下所有点周围的边都会被恰经过偶数次,所以这些点初始连向了偶数条白边. 考虑由白边连接形成的图,每个连通块中度数为奇数的点一定为偶数个. 所以起点 ...
- 2021 年百度之星·程序设计大赛 - 初赛二 1005 水题(贪心结论)
problem solution 开始还以为是CF987E,但是奇偶性并不一样,,结果是个贪心乱搞..样例都没过交了能过,醉了. #include<bits/stdc++.h> using ...
最新文章
- jQuery实现用户注册的表单验证
- Android之Animation动画的介绍及用法
- 阅读副本和Spring Data第2部分:配置基础项目
- java面试题4 牛客:运行下列代码,运行结果为
- DOS命令之ping命令大全详解
- 没有信号无服务器,没有信号不用怕“音离”你身边的便携式基站
- Python3.2官方文件翻译-工具列表和十进制浮点计算
- 【Flask】ORM 关系一对一
- javax.comm的API
- [HNOI2008]越狱
- 从零基础入门Tensorflow2.0 ----五、24TF1.0dataset使用
- 团队作业7——第二次项目冲刺(Beta版本)-第一篇
- 《凤凰架构》读书笔记
- 微软重新评估收购雅虎提议
- 汉信码生成和识别SDK
- 查看各类系统端口占用情况
- Linux/Windows快速镜像安装包下载
- 以太坊开发入门,完整入门篇(小白可以看看,高手看看自己有没有遗漏的
- tomcat重启警告:Abandoned connection cleanup thread 服务器宕机解决方案
- 开源前端脚本错误监控及跟踪解决项目BadJS试用
热门文章
- MySQL分页查询慢的方案解决
- 磁盘分区格式FAT32与NTFS
- java vnc_linux下配置vnc的方法
- springmvc执行流程(简述易懂)
- 火狐浏览器服务器意外响应,Firefox 火狐浏览器 83 发布,已修复任意代码执行漏洞...
- android xe 调用 java,Delphi XE6 for Android 让手机震动(调用Java的函数)
- mysql使用索引扫描做排序_「Mysql索引原理(八)」使用索引扫描做排序
- linux path在哪个文件夹,linux PATH环境变量全解析
- 三次握手和四次挥手图解_图解TCP三次握手和四次挥手
- stm32f7linux,STM32F7串口5初始化失败