题目意思为解码字符串,要输出第n个回文字符串,因为对称关系,前一半确定了,后一半也就跟着确定了,所以n其实就是前一半字符串的编码,还要减去1,直接解码出来再复制给后半即可

 #include<cstdio>
#include<cstring>
#include<iostream> using namespace std; typedef long long ll; int T,a[],st[],cas=,len;
ll n;
char s[]; ll fa(int &x)//阶乘
{
ll res=;
for(int i=;i<=x;i++)
res*=i;
return res;
} ll f(int*st)//种数
{
ll x=,y=;
int sum=;
for(int i=;i<;i++)
{
if(st[i]>) y*=fa(st[i]);
sum+=st[i];
}
x=fa(sum);
return x/y;
} ll code(char*s,int *st)//编码,这里没用到,开始理解错题意,以为是大于给出字符串的第n个回文字符串,打了一大堆才发现理解错题意了,main函数中的已删除,编码的就留着
{
ll x=;
for(int i=;i<len>>;i++)
{
int cnt=;
st[s[i]-'a']--;
for(int j=i+;j<len>>;j++) if(s[j]<s[i]) cnt++;
x+=cnt*f(st);
}
return x;
} void decode(ll &goal,int*st)//解码
{
int l=len>>;
for(int i=;i<l;i++)
{
ll x=;
for(int j=;j<;j++)
{
if(!st[j]) continue;
st[j]--;
ll y=f(st);
x+=y;
if(goal<x)//比如a开头的有6种,b开头的有3种,要找第八种,则应该是b开头的
{
s[i]=j+'a';
goal-=x-y;
break;
}
else st[j]++;
}
}
} int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%s%lld",s,&n);
printf("Case %d: ",cas++);
memset(a,,sizeof(a));
int i,x;
len=strlen(s);
for(i=;i<len;i++)
a[s[i]-'a']++;
i=;
if(len&)
{
for(;i<;i++)
{
if(a[i]&)
{
a[i]>>=;
x=i;//x记下长度为奇数时中间那个
break;
}
a[i]>>=;
}
i++;
}
for(;i<;i++)
{
if(a[i]&) break;
a[i]>>=;
}
if(i<)
{
puts("XXX");
continue;
}
ll goal,all;//最大可能是(30/2)!,超出了int范围,要用ll
all=f(a);
goal=n-;
if(goal>=all) strcpy(s,"XXX");
else
{
decode(goal,a);
for(int i=;i<len>>;i++)
s[len-i-]=s[i];
if(len&) s[len>>]=x+'a';
}
puts(s);
}
return ;
}

UVA 11027 - Palindromic Permutation的更多相关文章

  1. UVA 11404 Palindromic Subsequence[DP LCS 打印]

    UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...

  2. LPS UVA 11404 Palindromic Subsequence

    题目传送门 题意:求LPS (Longest Palidromic Subsequence) 最长回文子序列.和回文串不同,子序列是可以不连续的. 分析:1. 推荐->还有一种写法是用了LCS的 ...

  3. UVA 11404 Palindromic Subsequence

    Palindromic Subsequence Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVA ...

  4. 【UVa】Palindromic Subsequence(dp+字典序)

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=465&page=s ...

  5. uva 10252 - Common Permutation 字符串水题

    题意:給定兩個小寫的字串a與b,請印出皆出現在兩字串中的字母,出現的字母由a~z的順序印出,若同字母出現不只一次,請重複印出但不能超過任一字串中出現的次數.(from Ruby兔) 很水,直接比较输出 ...

  6. UVa 11404 Palindromic Subsequence (LCS)

    题意:给定一个字符串,问删除一些字符,使得它成为一个最长回访串,如果有多个,输出字典序最小的那个. 析: 我们可以把原字符串反转,然后求两个串的LCS,就得到最长回文串,不过要注意一些细节. 代码如下 ...

  7. [题解]UVA11027 Palindromic Permutation

    链接:http://vjudge.net/problem/viewProblem.action?id=19602 描述:给出一个字符串,求重新排列后第n个回文串,若没有则输出"XXX&quo ...

  8. UVA题目分类

    题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics ...

  9. [LeetCode] Palindrome Permutation II 回文全排列之二

    Given a string s, return all the palindromic permutations (without duplicates) of it. Return an empt ...

随机推荐

  1. HDU_1245_Saving James Bond_最短路

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1245 题意:给一个已知直径的圆形岛,然后岛的附近是湖,湖里有一些点,以坐标的形式给出,最外层是矩形的终 ...

  2. putty 中使用git

    提交git pwd 查看当前目录 进入目录cd /home/gongfu/tripb/master 修改代码目录 git status 查看 修改的文件(新增的,删除的) git commit -m ...

  3. 10.hibernate缓存机制详细分析(转自xiaoluo501395377)

    hibernate缓存机制详细分析   在本篇随笔里将会分析一下hibernate的缓存机制,包括一级缓存(session级别).二级缓存(sessionFactory级别)以及查询缓存,当然还要讨论 ...

  4. kettle连接Hbase中数据导入(8)

    http://wiki.pentaho.com/display/BAD/Loading+Data+into+HBase 1)下载样本文件 到官网去下载

  5. mysql启动

    mysql启动遇到的问题

  6. LeetCode OJ 84. Largest Rectangle in Histogram

    Given n non-negative integers representing the histogram's bar height where the width of each bar is ...

  7. EnumPrinters用法

    看API描述,不怎么理解,还是在网上找到用法,记载一下: 1: DWORD dwNeeded = 0, dwNum = 0; 2: EnumPrinters(PRINTER_ENUM_LOCAL, N ...

  8. 归并排序的go语言与C++实现对比

    最近对go语言发生了兴趣,发现go语言语法简洁,非常适合算法的描述和实现,于是对归并排序进行了实现. 例子中需要排序的队列是长度为100的从100到1的数列,排序算法是正序排序,排序正确的话,结果应当 ...

  9. 关于oracle数据库(1)

    兼容性的设置 cmd.exe是微软Windows系统的命令行程序,类似于微软的DOS操作系统.cmd.exe是一个16/32位的命令行程序,运行在Windows NT/2000/XP/2003/Vis ...

  10. robot framework -重点记录

    1.s2l打开的driver和webdriver打开的driver不是同一个driver. rf打开的浏览器.调用的是s2l的driver,而自己的库用的是webdriver的driver,这样在rf ...