http://acm.hdu.edu.cn/showproblem.php?pid=2371

题意:给出一个长度为n的字符串(标号为1~n),以及n个数代表字符串的变换规则,问该字符串是由哪个字符串按照变换规则变换m次得到的?如n=5,m=3,变换规则 2 3 1 5 4 (生成的下一个字符串即按照此标号的顺序对应的串), “hello" -> "elhol" -> "lhelo" -> "helol", 故helol 是由"hello''变换3次得到的。

思路:此类型的题目一般是找循环节,但是此题不能找字符串的循环节,因为数据范围太大,找字符串的循环节会超时。由于只有80个字符,所以可以找每个字符的循环节,并在查找过程中记录下来该字符在变换t次后所在的位置,这样就能通过m对循环节取余,找到该字符在目标串中的位置。

 #include <stdio.h>
#include <string.h>
const int N=;
int pos[N][N],p[N];
char str[N],s[N];
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
if (n==&&m==)
break;
for (int i = ; i < n; i++)
{
scanf("%d%*c",&p[i]);
p[i]--;
}
gets(s);
for (int i = ; i < n; i++)
{
int j = p[i];
int cnt = ;
pos[i][cnt++] = i;
while(j!=i)//找第i个字符的循环节
{
pos[i][cnt++] = j;//表示第i个字符在变换cnt次后所在的位置
j = p[j];
}
int t = m%cnt;//第i个字符变换的次数
str[pos[i][t]] = s[i];//将该字符存入其在目标串中的位置上
}
str[n] = '\0';
puts(str);
}
return ;
}

Decode the Strings的更多相关文章

  1. 【HDOJ】2371 Decode the Strings

    快速矩阵乘法.注意,原始字符串即为decode后的字符串.题目是要找到原始串. #include <cstdio> #include <cstring> #define MAX ...

  2. 矩阵十题【五】 VOJ1049 HDU 2371 Decode the Strings

    题目链接:https://vijos.org/p/1049 题目大意:顺次给出m个置换,重复使用这m个置换对初始序列进行操作.问k次置换后的序列.m<=10, k<2^31. 首先将这m个 ...

  3. Phonebook 导入SD上的.vcf联系人

    2014-01-11 17:29:22 1. 当用户选择Phonebook中从SD卡导入联系人的操作后,程序回调转到ImportVCardActivity,然后用户选择好要导入的.vcf文件,并点击“ ...

  4. Make Yahoo! Web Service REST Calls With C#

    原文 http://developer.yahoo.com/dotnet/howto-rest_cs.html The .NET Framework provides classes for perf ...

  5. Python: 在Unicode和普通字符串之间转换

    Unicode字符串可以用多种方式编码为普通字符串, 依照你所选择的编码(encoding): <!-- Inject Script Filtered --> Toggle line nu ...

  6. 详解JMeter函数和变量

    JMeter函数可以被认为是某种特殊的变量,它们可以被采样器或者其他测试元件所引用.函数调用的语法如下: ${__functionName(var1,var2,var3)} 其中,__function ...

  7. wince天气代码

    #ifndef COMMON_H #define COMMON_H #include <Windows.h> typedef struct _operateInfo { HANDLE hS ...

  8. Python 3中bytes/string的区别

    原文:http://eli.thegreenplace.net/2012/01/30/the-bytesstr-dichotomy-in-python-3 python 3中最重要的新特性可能就是将文 ...

  9. node爬取html乱码

    var http = require('http'), iconv = require('iconv-lite'); http.get("http://website.com/", ...

随机推荐

  1. 诊断:记一次存储异常CRASH致数据库无法正常打开的恢复

    数据库存储异常crash,首先控制文件出现问题 ORA-: ????? ???? ORA-: ???? : '/oracledata/oradata/orc11rac/orc11rac/system0 ...

  2. 「 Luogu P1231 」 教辅的组成

    题目大意 有 $\text{N1}$ 本书 $\text{N2}$本练习册 $\text{N3}$本答案,一本书只能和一本练习册和一本答案配对.给你一些书和练习册,书和答案的可能的配对关系.问你最多可 ...

  3. [Algorithm] 7. Serialize and Deserialize Binary Tree

    Description Design an algorithm and write code to serialize and deserialize a binary tree. Writing t ...

  4. localStorage前端存储数据

    <!DOCTYPE html> <html> <head> <title>localStorage演示</title> <meta c ...

  5. 剑指offer---以O(1)时间删除链表节点

    问题:删除链表节点 要求:以O(1)时间 对于删除指定索引的链表元素大家都很熟悉,思路一般是从头遍历链表直到指定索引位置删除元素,然后维护一下指针即可,时间复杂度O(n).代码如下: // 删除pos ...

  6. linux常用操作记录

    vim:多行注释 vim中多行注释和多行删除命令,这些命令也是经常用到的一些小技巧,可以大大提高工作效率.   多行注释:   1. 首先按esc进入命令行模式下,按下Ctrl + v,进入列(也叫区 ...

  7. MySQL数据库开启、关闭、查看函数功能的方法

    应用 MySQL 时,会遇到不能创建函数的情况.出现如下错误信息: ERROR 1418 : This function has none of DETERMINISTIC, NO SQL, or R ...

  8. 一:安装centos 7最小编程环境 xfce桌面

    1, u盘制作安装盘------------------------------------------------------安装时, table或者e进入编辑选项    如果不知道你的u盘的盘符 ...

  9. reading/writing files in Python

    file types: plaintext files, such as .txt .py Binary files, such as .docx, .pdf, iamges, spreadsheet ...

  10. 哈希表模板(Hash set)

    省选前最后的复(chui si)习(zheng zha). 上模板吧 namespace Hash_Table{ #define inf ~0U>>1 #define MaxN 10010 ...