题目意思为解码字符串,要输出第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. DD应用实例

    1.将本地的/dev/hdb整盘备份到/dev/hdd dd if=/dev/hdb of=/dev/hdd2.将/dev/hdb全盘数据备份到指定路径的image文件dd if=/dev/hdb o ...

  2. 浅析const标识符在C++函数的功能

    范例: class matrix { public: matrix(){}; const double getvalue(const unsigned row, const unsigned colu ...

  3. 2016腾讯"创益24小时"互联网公益创新大赛总结

    上周末参加了腾讯的"创益24小时"互联网公益大赛,和两个小伙伴(设计师Beryl和产品经理Benny)浴血奋战两天一夜,完成了一个叫"彩虹桥"的公益项目. (一 ...

  4. web.py 学习(-)Rocket web框架

    Rocket是一个轻量级,多线程,符合WSGI规范的web框架. Rocket使用一个线程监听连接,接收到连接之后放到Queue中,有worker线程进行处理. Rocket含有以下属性: metho ...

  5. openwrt启动过程(脚本)

    来源:  http://wiki.openwrt.org/doc/techref/preinit_mount#first.boot 基本的openwrt启动顺序为: 1.boot loader loa ...

  6. MaskEdit组件的EditText属性和Text属性

    MaskEdit组件主要是EditMask属性 是string属性. 掩码字符串EditMask属性分为3个部分,分别用分号隔开,形式是“XXXXX;X;X” 第一部分是掩码字符串的主要部分,它确定输 ...

  7. jxls导出EXCEL模板

    http://jxls.sourceforge.net/ InputStream templateInput = null; InputStream in = null; OutputStream o ...

  8. Openjudge-计算概论(A)-点与正方形的关系

    描述: 有一个正方形,四个角的坐标(x,y)分别是(1,-1),(1,1),(-1,-1),(-1,1),x是横轴,y是纵轴.写一个程序,判断一个给定的点是否在这个正方形内.输入输入坐标x,y输出ye ...

  9. Value '0000-00-00' can not be represented as java.sql.Date

    Value '0000-00-00' can not be represented as java.sql.Date 时间 2014-07-30 09:00:50 ITeye-博客 原文  http: ...

  10. sqlserver 经典入门基础书籍

    1.SQLServer2005T-SQL数据库设计 作者:胡百敬等著 ISBN:10位[7121053632]13位[9787121053634] 出版社:电子工业出版社 出版日期:2008-1-1 ...