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. iOS多媒体框架介绍

    媒体层 媒体层包含图形技术.音频技术和视频技术,这些技术相互结合就可为移动设备带来最好的多媒体体验,更重要的是,它们让创建外观音效俱佳的应用程序变得更加容易.您可以使用iOS的高级框架更快速地创建高级 ...

  2. LINUX-APT 软件工具 (Debian, Ubuntu 以及类似系统)

    apt-get install package_name 安装/更新一个 deb 包 apt-cdrom install package_name 从光盘安装/更新一个 deb 包 apt-get u ...

  3. Android 找不到资源的问题

    偶尔会遇到R.layout.***或R.id.***找不到资源的问题,明明在文件夹中有啊,那为什么嘞? 结合我自己遇到的情况和网上的资料,总结出以下几点可能的原因: 导入了android.R.这个是最 ...

  4. PAT 1129 Recommendation System

    Recommendation system predicts the preference that a user would give to an item. Now you are asked t ...

  5. 【Codeforces 9989C】A Mist of Florescence

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 四个大角 然后每个大角里面包着一些其他颜色的就好 [代码] #include <bits/stdc++.h> using name ...

  6. 学习MongoDB--(5-2):索引(查看索引的使用,管理索引)

    前一篇简单介绍了索引,并给出了基本的索引使用,这一次,我们进一步说一下MongoDB中的索引,包括如何查看查询是否走索引,如何管理索引和地理空间索引等. [使用explain和hint] 前面讲高级查 ...

  7. 玩一玩MEAN

    参考的书如下: Manning.Getting.MEAN.with.Mongo.Express.Angular.and.Node. 开始再次了解.

  8. nyoj_600_花儿朵朵_201404162000

    花儿朵朵 时间限制:1000 ms  |  内存限制:65535 KB 难度:5   描述 春天到了,花儿朵朵盛开,hrdv是一座大花园的主人,在他的花园里种着许多种鲜花,每当这个时候,就会有一大群游 ...

  9. Clojure: 寻找项目依赖项目

    Clojure寻找项目依赖项目: lein deps :tree

  10. Android从源码看ListView的重用机制

    不管是android还是iOS,列表视图应该是最复杂的控件了.android中的listview从命名能够看出是个一维数组,而iOS中的tableview则是二维数组.但事实上须要注意的地方是差点儿相 ...