2081: [Poi2010]Beads

Time Limit: 10 Sec Memory Limit: 259 MB
Submit: 687 Solved: 246
[Submit][Status][Discuss]
Description

Zxl有一次决定制造一条项链,她以非常便宜的价格买了一长条鲜艳的珊瑚珠子,她现在也有一个机器,能把这条珠子切成很多块(子串),每块有k(k>0)个珠子,如果这条珠子的长度不是k的倍数,最后一块小于k的就不要拉(nc真浪费),保证珠子的长度为正整数。 Zxl喜欢多样的项链,为她应该怎样选择数字k来尽可能得到更多的不同的子串感到好奇,子串都是可以反转的,换句话说,子串(1,2,3)和(3,2,1)是一样的。写一个程序,为Zxl决定最适合的k从而获得最多不同的子串。 例如:这一串珠子是: (1,1,1,2,2,2,3,3,3,1,2,3,3,1,2,2,1,3,3,2,1), k=1的时候,我们得到3个不同的子串: (1),(2),(3) k=2的时候,我们得到6个不同的子串: (1,1),(1,2),(2,2),(3,3),(3,1),(2,3) k=3的时候,我们得到5个不同的子串: (1,1,1),(2,2,2),(3,3,3),(1,2,3),(3,1,2) k=4的时候,我们得到5个不同的子串: (1,1,1,2),(2,2,3,3),(3,1,2,3),(3,1,2,2),(1,3,3,2)

Input

共有两行,第一行一个整数n代表珠子的长度,(n<=200000),第二行是由空格分开的颜色ai(1<=ai<=n)。

Output

也有两行,第一行两个整数,第一个整数代表能获得的最大不同的子串个数,第二个整数代表能获得最大值的k的个数,第二行输出所有的k(中间有空格)。

Sample Input

21

1 1 1 2 2 2 3 3 3 1 2 3 3 1 2 2 1 3 3 2 1
Sample Output

6 1

2

HINT

Source

[Submit][Status][Discuss]

HOME Back


【分析】

题不是很难…应用到调和级数和哈希
嗯就是这样…哈希再套个map…虽然复杂度到了O(nlog^2),但还是能勉强卡过


【代码】

//bzoj 2081 beads
#include<bits/stdc++.h>
#define ll unsigned long long
#define fo(i,j,k) for(i=j;i<=k;i++)
using namespace std;
const int mxn=200005;
map <ll,bool> mp;
int ans[mxn],a[mxn];
int n,num,tot,mx,calc;
ll hs[mxn],pw[mxn],ano[mxn];
inline int read()
{int x=0;char ch=getchar();while(ch<'0'||ch>'9') ch=getchar();while(ch>='0'&&ch<='9') x=(x<<1)+(x<<3)+ch-'0',ch=getchar();return x;
}
int main()
{int i,j,k;n=read(),pw[0]=ano[n+1]=1;fo(i,1,n){a[i]=read();hs[i]=hs[i-1]*(n+1)+a[i];pw[i]=pw[i-1]*(n+1);}for(i=n;i>=1;i--) ano[i]=ano[i+1]*(n+1)+a[i];fo(k,1,n){tot=0,mp.clear();for(i=k;i<=n;i+=k){ll now=hs[i]-hs[i-k]*pw[k];ll tmp=ano[i-k+1]-ano[i+1]*pw[k];if(mp.count(now) || mp.count(tmp)) continue;mp[now]=true,tot++;}ans[k]=tot,mx=max(mx,tot);}
//  fo(i,1,n) printf("test=%d\n",ans[i]);fo(i,1,n) if(ans[i]==mx) num++;printf("%d %d\n",mx,num);fo(i,1,n)if(ans[i]==mx){calc++;printf("%d",i);if(calc<num) printf(" ");}puts("");return 0;
}

bzoj 2081 [Poi2010]Beads相关推荐

  1. bzoj 2081: [Poi2010]Beads 哈希

    题意 Zxl有一次决定制造一条项链,她以非常便宜的价格买了一长条鲜艳的珊瑚珠子,她现在也有一个机器,能把这条珠子切成很多块(子串),每块有k(k>0)个珠子,如果这条珠子的长度不是k的倍数,最后 ...

  2. BZOJ 2081 Beads Hash

    题目描述 Zxl有一次决定制造一条项链,她以非常便宜的价格买了一长条鲜艳的珊瑚珠子,她现在也有一个机器,能把这条珠子切成很多块(子串),每块有k(k>0)个珠子,如果这条珠子的长度不是k的倍数, ...

  3. BZOJ2081 [Poi2010]Beads

    我们只要暴力枚举块的大小就可以了... 枚举的总复杂度是O(n / 1 + n / 2 + n / 3 + ...) = O(n * logn)的 何如去重呢...直接暴力hash再丢进set里搞定, ...

  4. POI2010 Beads

    Beads Zxl有一次决定制造一条项链,她以非常便宜的价格买了一长条鲜艳的珊瑚珠子,她现在也有一个机器,能把这条珠子切成很多块(子串),每块有k(k>0)个珠子,如果这条珠子的长度不是k的倍数 ...

  5. 【bzoj2081】[Poi2010]Beads Hash

    题目描述 Zxl有一次决定制造一条项链,她以非常便宜的价格买了一长条鲜艳的珊瑚珠子,她现在也有一个机器,能把这条珠子切成很多块(子串),每块有k(k>0)个珠子,如果这条珠子的长度不是k的倍数, ...

  6. BZOJ 2084 [Poi2010]Antisymmetry(manacher)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2084 [题目大意] 对于一个01字符串,如果将这个字符串0和1取反后, 再将整个串反过 ...

  7. BZOJ 2095 [POI2010]Bridges (最大流、欧拉回路)

    洛谷上有这题,但是输出方案缺SPJ..(而且我也懒得输出方案了) 题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=2095 题解: 首先判 ...

  8. BZOJ 2084: [Poi2010]Antisymmetry(Hash+二分)

    求一个01序列的子串取反并反转后与原串相同的个数. 很显而易见的是,反转的话只要子串对应的i和n-i+1位相反即可,这个看一下样例能很快看出来. 所以我们正着求一遍hash,反着取反然后求hash. ...

  9. BZOJ 2095 [Poi2010]Bridges 二分 最大流(混合图欧拉回路)

    题目大意:给出一张n个点m条边的联通图,无重边,每条边有正反两个权值.现要从点1出发经过每条边每个点一次,问最大边权最小是多少. 最大最小容易想到二分,问题是如何判断是否有欧拉回路. 图不连通自然没有 ...

最新文章

  1. oracle全局索引 前缀索引_Oracle 分区索引介绍和实例演示
  2. centos iptables关于ping
  3. mysql 查询优化器跟踪_3. select语句执行过程-优化器
  4. 工程架构师对3月14号的白×××人节有什么看法??
  5. python3 open函数_python中open函数的基本用法示例
  6. silverlight5
  7. Ubuntu14.04LST安装weblogic11g
  8. python中怎么精确20位_Python中的精确处理
  9. 工业设计对计算机技术的应用,计算机在产品设计的应用
  10. php更新数据步骤,Thinkphp5模型更新数据方法
  11. 31 岁的我为何会在创业成功后选择编程?
  12. js空格占位符_灵活使用 console 让 js 调试更简单
  13. 【java读书笔记】——java开篇宏观把控 + HelloWorld
  14. 【RobotStudio学习笔记】(三)程序创建
  15. 【SW】利用3D打印机打印 PCB 钢网的方法
  16. 区块链技术学习路线图,区块链技术教程分享
  17. java遍历二级城市_java8用Lambda遍历省市区三级数据
  18. java 两张图片合成
  19. java 加权平均_java - 计算大数的加权平均值 - 堆栈内存溢出
  20. 华为如何不关闭进程_关闭华为手机后台程序的小技巧,终于知道了,再也不用担心内存了...

热门文章

  1. 物流仓储中先进的自动化系统 实现物料先进先出的自动化立体库
  2. 升级到Win 8之前必须关注的十个问题
  3. [Windows] IDM下载(已激活)
  4. 阳历(公历)转农历 1801-2099
  5. 时间格式化hh:mm:ss和HH:mm:ss区别
  6. 别让绑架式微信投票毁了朋友圈出现:去哪里给微信刷票、微信投票群怎么收费实属无奈
  7. 计算机专业笔记本电脑华为,2021适合计算机专业的笔记本电脑有哪些
  8. mysql AES加密存储,解密读取
  9. Piping OV7670 video to VGA output on ZYBO
  10. 达内教育扭亏为盈背后:私有化无限期搁置,市值缩水近2亿美元