【29.27%】【hdu 5908】Abelian Period
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/131072 K (Java/Others)
问题描述
设SS是一个数字串,定义函数occ(S,x)occ(S,x)表示SS中数字xx的出现次数。
例如:S=(1,2,2,1,3),occ(S,1)=2,occ(S,2)=2,occ(S,3)=1S=(1,2,2,1,3),occ(S,1)=2,occ(S,2)=2,occ(S,3)=1。
如果对于任意的ii,都有occ(u,i)=occ(w,i)occ(u,i)=occ(w,i),那么我们认为数字串uu和ww匹配。
例如:(1,2,2,1,3)\approx(1,3,2,1,2)(1,2,2,1,3)≈(1,3,2,1,2)。
对于一个数字串SS和一个正整数kk,如果SS可以分成若干个长度为kk的连续子串,且这些子串两两匹配,那么我们称kk是串SS的一个完全阿贝尔周期。
给定一个数字串SS,请找出它所有的完全阿贝尔周期。
输入描述
输入的第一行包含一个正整数T(1\leq T\leq10)T(1≤T≤10),表示测试数据的组数。
对于每组数据,第一行包含一个正整数n(n\leq 100000)n(n≤100000),表示数字串的长度。
第二行包含nn个正整数S_1,S_2,S_3,…,S_n(1\leq S_i\leq n)S
1
,S
2
,S
3
,…,S
n
(1≤S
i
≤n),表示这个数字串。
输出描述
对于每组数据,输出一行若干个整数,从小到大输出所有合法的kk。
输入样例
2
6
5 4 4 4 5 4
8
6 5 6 5 6 5 5 6
输出样例
3 6
2 4 8
【题解】
可以知道这个周期k一定是n的一个因数。
所谓的两两相同。其实就是全都相同。
涉及到两个“集合”是否相同的判断.
做法是
把第一个集合里面的元素全都加到平衡树里面。
然后第二个集合里面。遇到一个元素就尝试在平衡树里面删除掉这个元素。
如果发现没有这个元素就表示不相同。
最后如果平衡树不为空也不相同。
以上判断都做完之后就可以判断两个集合是相同的了。
我们不必写一个平衡树。用现成的map即可。
枚举k
nextj..nextj+k-1.代表一段区间。
和1..k区间比较是否”相同即可”;
如果一个元素的map值为0了。就要erase掉。
这样才能用empty()函数判断map是否为空。
#include <cstdio>
#include <map>
using namespace std;
const int MAXN = 101000;
int t,n,a[MAXN];
map <int,int> dic;
int main()
{
//freopen("F:\\rush.txt", "r", stdin);
scanf("%d", &t);
while (t--)
{
bool flag = false;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
scanf("%d", &a[i]);
for (int k = 1;k <= n;k++)
if ((n%k) == 0)
{
int j = 1;
int nextj = 1 + k;
bool judge = true;
while (nextj <= n)
{
dic.clear();
for (int l = 1; l <= k; l++)
dic[a[l]]++;
for (int l = nextj; l <= nextj + k - 1; l++)
{
dic[a[l]]--;
if (dic[a[l]] == 0)
dic.erase(a[l]);
}
if (!dic.empty())
{
judge = false;
break;
}
nextj += k;
}
if (judge)
{
if (!flag)
printf("%d", k);
else
printf(" %d", k);
flag = true;
}
}
printf("\n");
}
return 0;
}
【29.27%】【hdu 5908】Abelian Period的更多相关文章
- 【改革春风吹满地 HDU - 2036 】【计算几何-----利用叉积计算多边形的面积】
利用叉积计算多边形的面积 我们都知道计算三角形的面积时可以用两个邻边对应向量积(叉积)的绝对值的一半表示,那么同样,对于多边形,我们可以以多边形上的一个点为源点,作过该点并且过多边形其他点中的某一个的 ...
- 【HDU 5647】DZY Loves Connecting(树DP)
pid=5647">[HDU 5647]DZY Loves Connecting(树DP) DZY Loves Connecting Time Limit: 4000/2000 MS ...
- 【HDU 2255】奔小康赚大钱 (最佳二分匹配KM算法)
奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- 【二分】【最长上升子序列】HDU 5489 Removed Interval (2015 ACM/ICPC Asia Regional Hefei Online)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5489 题目大意: 一个N(N<=100000)个数的序列,要从中去掉相邻的L个数(去掉整个区间 ...
- 【贪心】【模拟】HDU 5491 The Next (2015 ACM/ICPC Asia Regional Hefei Online)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5491 题目大意: 一个数D(0<=D<231),求比D大的第一个满足:二进制下1个个数在 ...
- 【动态规划】【二分】【最长上升子序列】HDU 5773 The All-purpose Zero
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5773 题目大意: T组数据,n个数(n<=100000),求最长上升子序列长度(0可以替代任何 ...
- 【动态规划】【KMP】HDU 5763 Another Meaning
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5763 题目大意: T组数据,给两个字符串s1,s2(len<=100000),s2可以被解读成 ...
- 【归并排序】【逆序数】HDU 5775 Bubble Sort
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5775 题目大意: 冒泡排序的规则如下,一开始给定1~n的一个排列,求每个数字在排序过程中出现的最远端 ...
- 【中国剩余定理】【容斥原理】【快速乘法】【数论】HDU 5768 Lucky7
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5768 题目大意: T组数据,求L~R中满足:1.是7的倍数,2.对n个素数有 %pi!=ai 的数 ...
随机推荐
- UVa 11743 - Credit Check
题目:推断卡号是否合法,给你4组4位的数字.偶数位的2倍的位和加上奇数位的和,推断尾数是否为0. 分析:简单题,模拟. 直接依照提议推断就可以. 说明:460题,加油! #include <io ...
- ubuntu下sudo命令不再输入密码
ubuntu下普通用户是没有root权限,很多命令在使用时都需要使用命令sudo 'cmd',但系统需要user验证自己,即需要输入普通用户的密码.但普通用户是否有执行该cmd的权限,需要到系统文件/ ...
- git -处理分支合并
1.分支间的合并 1)直接合并:把两个分支上的历史轨迹合二为一(就是所以修改都全部合并) zhangshuli@zhangshuli-MS-:~/myGit$ vim merge.txt zhangs ...
- 4.使用fastjson进行json字符串和List的转换
转自:https://blog.csdn.net/lipr86/article/details/80833952 使用fastjson进行自定义类的列表和字符串转换 1.环境 jdk1.8,fastj ...
- Zabbix主动代理模式 + 主动模式agent客户端
2.1.1 安装软件 ]# rpm -qa zabbix* zabbix-proxy-sqlite3-3.4.15-1.el7.x86_64 zabbix-proxy-mysql-3.4.15-1.e ...
- 2.5 Legacy APIs官网剖析(博主推荐)
不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ 2.5 Legacy APIs A more limited legacy prod ...
- 将vue-cli 2.x的项目升级到3.x
尝试将vue-cli 2.x的项目升级到3.x,记录一下升级过程,和遇到的坑 1. 直接复制替换src文件夹 2. 安装项目需要的依赖 (可以将原来package.json dependencies下 ...
- Direct2D开发:MFC下从资源文件中加载位图
转载请注明出处:http://www.cnblogs.com/ye-ming 0X01 概述: 相对于GDI处理界面,Direct2D有得天独厚的优势,下图就是Direct2D与GDI的效果对比,wi ...
- 大数据- Hive
构建在Hadoop之上的数据仓库,数据计算使用MR,数据存储使用HDFS 由于数据计算使用mapreduce.因此通经常使用于进行离线数据处理 Hive 定义了一种类 SQL 查询语言 ...
- C#泛型(一)泛型方法
namespace GenericsTest { class Program { // https://www.cnblogs.com/dotnet261010/p/9034594.html stat ...