题意:给出26个大写字母的置换B,问是否存在一个置换A,使A*A=B?

两个长度为N的相同循环相乘,当N为奇数时结果也是一个长度为N的循环,当N为偶数时分裂为两个长度为N/2的循环。相反,对于一个任意长度为N的奇数循环B,都能找到一个长度为N的循环A使得A*A=B,对于任意两个长度为N(N不一定为偶数)的不相交循环B和C,都能找到一个长度为2N的循环A使得A*A=B*C。

于是只要判断置换B里循环长度相同的且都为偶数(2,4,6, 8.....)的循环个数是不是都为偶数(偶数就能两两配对),只要一个不是的答案就是NO,否则YES。

#include <bits/stdc++.h>
using namespace std;
char s[26];
bool vis[26];
int cnt[27],t;
int main()
{cin>>t;while(t--){scanf("%s",s);memset(vis,0,sizeof vis);memset(cnt,0,sizeof cnt);for(int i=0;i<26;i++){if(vis[i])continue;vis[i]=1;int res=1,tmp=i;while(1){tmp=s[tmp]-'A';if(vis[tmp])break;vis[tmp]=1;res++;}cnt[res]++;}bool ok=1;for(int i=2;i<=26;i+=2)if(cnt[i]&1)ok=0;printf("%s\n",ok?"Yes":"No");}return 0;
}

  

转载于:https://www.cnblogs.com/wshh/p/3959981.html

UVALive - 3641 Leonardo's Notebook(polya计数)相关推荐

  1. 群论及Polya计数定理题目入门

    本文以一些简单的题目为例,来研究一下群论及Polya计数在OI中的应用 注:本文无代码,仅介绍题目的思路和技巧,且难度较低,因为这些题目并不难写,在知道思路以后相信大家都能写出来,其实是因为我的代码写 ...

  2. 组合数学及其应用——polya计数

    在处理类似下面的问题中,一般的计数方法会出现问题:假如你要用红.蓝两种颜色给一个正四面体的四个顶点着色,试问存在多少种不同的着色方案? 在高中我们常用的方法是模拟涂色过程,分情况讨论,然后基于分步乘法 ...

  3. Polya计数法总结 POJ24092154SGU282

    Polya计数法原理可以看符文杰的集训队论文<<Polya原理及其应用>>.题目可以看陈瑜希的论文<<Polya计数法的应用>> 解题三步骤: 1.确定 ...

  4. Polya计数原理小记

    Polya计数原理小记 Polya计数原理: 证明:emmm我不会 1)只有旋转(平面内旋转最小单位角度 360° / n, 一共n种旋转方案,第i种方案的旋转角度 i * 360° / n, 其循环 ...

  5. 【BZOJ1815BZOJ1488】有色图图的同构,Polya计数+暴力

    P1815 P1488 思路: 之前看论文发现的一道题目 点的置换引起边的置换 1488是弱化版 直接套烧边引理显然是不科学的 写了一个Polya的暴力,复杂度是O(n!n2)O(n!n^2) 跑不出 ...

  6. Polya计数 学习笔记

    置换 基本概念 置换是相对与群(当然我们讨论的是有限群= =)而言的一种操作. 通常我们这样来表示 (1a12a23a3⋯⋯nan)(123⋯na1a2a3⋯an) \left( \begin{mat ...

  7. poj 2409 Let it Bead Polya计数

    旋转能够分为n种置换,相应的循环个数各自是gcd(n,i),个i=0时不动,有n个 翻转分为奇偶讨论,奇数时有n种置换,每种有n/2+1个 偶数时有n种置换,一半是n/2+1个,一半是n/2个 啃论文 ...

  8. HDU4633(Polya计数)

    题目:Who's Aunt Zhang #include <iostream> #include <string.h> #include <stdio.h>usin ...

  9. 【BZOJ】1004: [HNOI2008]Cards(置换群+polya+burnside)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1004 学习了下polya计数和burnside引理,最好的资料就是:<Pólya 计数法的应用 ...

最新文章

  1. 不懂装饰器,就不是真正会 Python
  2. 关于Block的copy和循环引用的问题
  3. 打印show attend and tell的解码器网络结构
  4. forager有多少个机器人_诠视科技:VSLAM技术进展让移动机器人自主行驶有了更广阔的空间...
  5. Python《爬虫再练手》
  6. Dubbo3.0 简介
  7. sencha Touch 2.4 学习之 XTemplate模板
  8. 何为软件的Alpha、Beta、RC和GA发布版本?
  9. 23.TCP/IP 详解卷1 --- TCP的保活定时器
  10. atitit。企业组织与软件工程的策略 战略 趋势 原则 attilax 大总结
  11. 集合框架之Connection(马士兵教育视频教程总结笔记)
  12. c语言中指数常量注意什么意思,C语言入门知识:常量
  13. Microsoft.NET离线运行库合集
  14. c语言井号花括号怎么打,大括号怎么打,手把手教你word大括号怎么输入
  15. 浮点数的指数函数的计算
  16. 【MacOS】虚拟机Vmware安装MacOS
  17. Vue源码系列 - 前言
  18. Unity CustomFont (怎么制作图片文字)
  19. cocoapods——更新
  20. 智慧工厂之ZigBee定位技术下的化工厂人员定位解决方案-新导智能

热门文章

  1. Python源码深度解析—float类型对象
  2. Windows10系统下PaddleOCR文本检测和文本识别安装
  3. bzoj 1109: [POI2007]堆积木Klo(二维偏序)
  4. Tarjan边的双联通
  5. opencv 多边形近似物体形状
  6. [Python+debug] 设置Python环境变量-Windows10
  7. 一行代码指定python下载源为清华源【只需修改一次】
  8. fiddler限制网速
  9. 链表:链表中倒数第k个结点(2)
  10. C++11右值引用和std::move语句实例解析