题目链接:

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

题目大意:

改变所给字符串里面的字符的任意顺序,问组成回文串的方案数。

范围:

字符串长len<=1000。

思路:

根据回文串的性质,我们可以只考虑前半部分的串的构成。所以最多只有一种字母的个数为奇数。

所以剩下的情况就是组合数取几个的方案数的求和了。

代码:

#include<stdio.h>
#include<string.h>
#define ll __int64
#define mod 1000000007
ll c[1005][1005];
int main()
{char s[1005];int vis[26];int i,j,k,l,T,t;ll sum,ans,a,b;for(i=0;i<=1000;i++)c[i][0]=1;for(i=1;i<=1000;i++){for(j=1;j<=i;j++){if(i==j)c[i][j]=1;else if(i>j)c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;}}scanf("%d",&T);while(T--){sum=0;t=0;scanf("%s",s);l=strlen(s);memset(vis,0,sizeof(vis));for(i=0;i<l;i++){vis[s[i]-'a']++; }for(i=0;i<26;i++){if(vis[i]%2)t++;vis[i]/=2;sum+=vis[i];}if(t>1){printf("0\n");}else { ans=1; int len=l/2;for(j=0;j<26;j++){ans=((ans%mod)*(c[len][vis[j]]%mod))%mod;len-=vis[j];}printf("%I64d\n",ans%mod);}}
}

hdu5651 xiaoxin juju needs help(组合数学)相关推荐

  1. hdu5651 xiaoxin juju needs help (多重集的全排列+逆元)

    xiaoxin juju needs help 题意:给你一个字符串,求打乱字符后,有多少种回文串.                      (题于文末) 知识点: n个元素,其中a1,a2,··· ...

  2. hdu5651 xiaoxin juju needs help(逆元)

    xiaoxin juju needs help Accepts: 150 Submissions: 966 Time Limit: 2000/1000 MS (Java/Others) Memory ...

  3. bestcoder #77 xiaoxin juju needs help

    xiaoxin juju needs help  Accepts: 134  Submissions: 309  Time Limit: 2000/1000 MS (Java/Others)  Mem ...

  4. (回文串全排列个数) xiaoxin juju needs help

    题目 As we all known, xiaoxin is a brilliant coder. He knew palindromic strings when he was only a six ...

  5. 不畏浮云遮望眼--离散数学和组合数学

    不畏浮云遮望眼,基础很重要! 离散数学是算法和数据结构的基础,而算法和数据结构又是什么的基础?不解释了. 1.<离散数学及其应用> 作者: (美)Kenneth H. R 出版社: 机械工 ...

  6. szucodeforce训练1081C组合数学lucas定理,div2 627的D dfs +剪枝优化,697D Puzzles{dfs序+概率}

    给你n个方格排成一行,有m种颜色,然后要把这n个方格分成k+1段,每段涂不同的颜色,问有多少种方法. 组合数学Lucas定理 排列组合问题,首先要在n-1个位置里面选出k个位置当作段与段的分割点,然后 ...

  7. 【数学专题】组合数学与计数

    整理的算法模板合集: ACM模板 目录 AcWing 1307. 牡牛和牝牛(递推) AcWing 1308. 方程的解 AcWing 1309. 车的放置(组合数学,分类讨论) AcWing 131 ...

  8. 组合数学实验——二分图匹配算法

    2019独角兽企业重金招聘Python工程师标准>>> 大一时候写的代码,忽然翻了出来.... 算法:组合数学中文第4版 机械工业出版社 P234 ID就先隐藏掉了 // // // ...

  9. Sequence(组合数学,集合不同元素的个数)

    Sequence [组合数学] 时间限制: 3 Sec  内存限制: 128 MB 提交: 138  解决: 52 [提交][状态][讨论版] 题目描述 在某个夜黑月高的晚上,!!!,原谅我编不下去了 ...

  10. 【组合数学】指数生成函数 ( 指数生成函数求解多重集排列示例 2 )

    文章目录 一.指数生成函数求解多重集排列示例 2 参考博客 : 按照顺序看 [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相 ...

最新文章

  1. getchar()函数的返回值赋给char型,用if(ch=getchar() != EOF)测试,输入ctrl+z同样可以结束循环的分析...
  2. 心理成熟的十五条标准(转)
  3. MeanShift 目标跟踪
  4. 【Linux原理】Linux中硬链接和软链接的区别和联系
  5. 吴恩达家免费NLP课程上线啦!
  6. 移动时捕捉不到基点_CAD入门学习攻略:CAD软件中对象捕捉功能使用技巧汇总
  7. 使用 monitor 命令查看 redis 请求日志
  8. mysqlplus 批量插入_ibatis结合oracle批量插入三种方法的测评
  9. 实现Android-JNI本地C++调试
  10. IBM服务器巡检流程
  11. 【数据结构】栈的编写以及栈的简单应用
  12. 全球信息数据量陡增 大数据应用前景广阔
  13. 服务器PCI插槽上的固态硬盘,固态硬盘常见接口图解
  14. Bada学习-(五)多任务模式
  15. 华为Datacom认证和Routing Switching认证并行多久?
  16. 全网最全Fiddler攻略,十分钟了解Fiddler抓包
  17. 二进制数与十进制数相互转换 string陷阱(赋值错误) 汉字分为两个字符 string123 string字符串逆转
  18. win10系统如何设置虚拟回环
  19. [ZJOI] 物流运输
  20. Win10启动Telnet方式

热门文章

  1. pygame实现 飞机大战-第三版-仿写版
  2. python三阶魔方_三阶魔方还原公式
  3. (第三天)磁盘分区----LVE逻辑卷
  4. CSS权威指南(七)视觉格式化
  5. Android-你真的懂AIDL的oneway嘛?
  6. 【论文阅读】Extract Free Dense Labels from CLIP
  7. 基于深度卷积神经网络的图像超分辨率重建(SRCNN) 学习笔记
  8. 1. Boost.Asio入门
  9. Entry name 'META-INF/MANIFEST.MF' collided
  10. Entry name ‘META-INF/androidx.vectordrawable_vectordrawable.version‘ collided