UVALive - 3641 Leonardo's Notebook(polya计数)
题意:给出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计数)相关推荐
- 群论及Polya计数定理题目入门
本文以一些简单的题目为例,来研究一下群论及Polya计数在OI中的应用 注:本文无代码,仅介绍题目的思路和技巧,且难度较低,因为这些题目并不难写,在知道思路以后相信大家都能写出来,其实是因为我的代码写 ...
- 组合数学及其应用——polya计数
在处理类似下面的问题中,一般的计数方法会出现问题:假如你要用红.蓝两种颜色给一个正四面体的四个顶点着色,试问存在多少种不同的着色方案? 在高中我们常用的方法是模拟涂色过程,分情况讨论,然后基于分步乘法 ...
- Polya计数法总结 POJ24092154SGU282
Polya计数法原理可以看符文杰的集训队论文<<Polya原理及其应用>>.题目可以看陈瑜希的论文<<Polya计数法的应用>> 解题三步骤: 1.确定 ...
- Polya计数原理小记
Polya计数原理小记 Polya计数原理: 证明:emmm我不会 1)只有旋转(平面内旋转最小单位角度 360° / n, 一共n种旋转方案,第i种方案的旋转角度 i * 360° / n, 其循环 ...
- 【BZOJ1815BZOJ1488】有色图图的同构,Polya计数+暴力
P1815 P1488 思路: 之前看论文发现的一道题目 点的置换引起边的置换 1488是弱化版 直接套烧边引理显然是不科学的 写了一个Polya的暴力,复杂度是O(n!n2)O(n!n^2) 跑不出 ...
- Polya计数 学习笔记
置换 基本概念 置换是相对与群(当然我们讨论的是有限群= =)而言的一种操作. 通常我们这样来表示 (1a12a23a3⋯⋯nan)(123⋯na1a2a3⋯an) \left( \begin{mat ...
- poj 2409 Let it Bead Polya计数
旋转能够分为n种置换,相应的循环个数各自是gcd(n,i),个i=0时不动,有n个 翻转分为奇偶讨论,奇数时有n种置换,每种有n/2+1个 偶数时有n种置换,一半是n/2+1个,一半是n/2个 啃论文 ...
- HDU4633(Polya计数)
题目:Who's Aunt Zhang #include <iostream> #include <string.h> #include <stdio.h>usin ...
- 【BZOJ】1004: [HNOI2008]Cards(置换群+polya+burnside)
http://www.lydsy.com/JudgeOnline/problem.php?id=1004 学习了下polya计数和burnside引理,最好的资料就是:<Pólya 计数法的应用 ...
最新文章
- 不懂装饰器,就不是真正会 Python
- 关于Block的copy和循环引用的问题
- 打印show attend and tell的解码器网络结构
- forager有多少个机器人_诠视科技:VSLAM技术进展让移动机器人自主行驶有了更广阔的空间...
- Python《爬虫再练手》
- Dubbo3.0 简介
- sencha Touch 2.4 学习之 XTemplate模板
- 何为软件的Alpha、Beta、RC和GA发布版本?
- 23.TCP/IP 详解卷1 --- TCP的保活定时器
- atitit。企业组织与软件工程的策略 战略 趋势 原则 attilax 大总结
- 集合框架之Connection(马士兵教育视频教程总结笔记)
- c语言中指数常量注意什么意思,C语言入门知识:常量
- Microsoft.NET离线运行库合集
- c语言井号花括号怎么打,大括号怎么打,手把手教你word大括号怎么输入
- 浮点数的指数函数的计算
- 【MacOS】虚拟机Vmware安装MacOS
- Vue源码系列 - 前言
- Unity CustomFont (怎么制作图片文字)
- cocoapods——更新
- 智慧工厂之ZigBee定位技术下的化工厂人员定位解决方案-新导智能
热门文章
- Python源码深度解析—float类型对象
- Windows10系统下PaddleOCR文本检测和文本识别安装
- bzoj 1109: [POI2007]堆积木Klo(二维偏序)
- Tarjan边的双联通
- opencv 多边形近似物体形状
- [Python+debug] 设置Python环境变量-Windows10
- 一行代码指定python下载源为清华源【只需修改一次】
- fiddler限制网速
- 链表:链表中倒数第k个结点(2)
- C++11右值引用和std::move语句实例解析