我们只要暴力枚举块的大小就可以了。。。

枚举的总复杂度是O(n / 1 + n / 2 + n / 3 + ...) = O(n * logn)的

何如去重呢。。。直接暴力hash再丢进set里搞定,总复杂度O(n * log2n)

 1 /**************************************************************
 2     Problem: 2081
 3     User: rausen
 4     Language: C++
 5     Result: Accepted
 6     Time:4932 ms
 7     Memory:18312 kb
 8 ****************************************************************/
 9
10 #include <cstdio>
11 #include <algorithm>
12 #include <set>
13 #include <vector>
14
15 using namespace std;
16 typedef unsigned long long ull;
17 const int N = 5e5 + 5;
18 const int base = 200191;
19
20 int n, a[N], ans;
21 ull b[N], h1[N], h2[N];
22 vector <int> Ans;
23 vector <int> ::iterator it;
24
25 inline int read() {
26     int x = 0, sgn = 1;
27     char ch = getchar();
28     while (ch < '0' || '9' < ch) {
29         if (ch == '-') sgn = -1;
30         ch = getchar();
31     }
32     while ('0' <= ch && ch <= '9') {
33         x = x * 10 + ch - '0';
34         ch = getchar();
35     }
36     return sgn * x;
37 }
38
39 ull calc1(int l, int r) {
40     return h1[r] - h1[l - 1] * b[r - l + 1];
41 }
42
43 ull calc2(int l, int r) {
44     return h2[l] - h2[r + 1] * b[r - l + 1];
45 }
46
47 set <ull> S;
48 int calc(int sz) {
49     S.clear();
50     for (int i = 1; i + sz - 1 <= n; i += sz)
51         S.insert(min(calc1(i, i + sz - 1), calc2(i, i + sz - 1)));
52     return (int) S.size();
53 }
54
55 int main() {
56     int i, t;
57     n = read();
58     for (i = 1; i <= n; ++i) a[i] = read();
59     for (i = b[0] = 1; i <= n; ++i) b[i] = b[i - 1] * base;
60     for (i = 1; i <= n; ++i)
61         h1[i] = h1[i - 1] * base + a[i];
62     for (i = n; i; --i)
63         h2[i] = h2[i + 1] * base + a[i];
64     ans = 0;
65     for (i = 1; i <= n; ++i) {
66         t = calc(i);
67         if (t > ans) {
68             ans = t;
69             Ans.clear();
70         }
71         if (ans == t) Ans.push_back(i);
72     }
73     printf("%d %d\n", ans, (int) Ans.size());
74     for (it = Ans.begin(); it != Ans.end(); ) {
75         printf("%d", *it), ++it;
76         if (it == Ans.end()) puts("");
77         else putchar(' ');
78     }
79     return 0;
80 }

View Code

转载于:https://www.cnblogs.com/rausen/p/4328592.html

BZOJ2081 [Poi2010]Beads相关推荐

  1. 【BZOJ2081/Poi2010】Beads

    2081: [Poi2010]Beads Time Limit: 10 Sec  Memory Limit: 259 MB                                       ...

  2. bzoj 2081 [Poi2010]Beads

    2081: [Poi2010]Beads Time Limit: 10 Sec Memory Limit: 259 MB Submit: 687 Solved: 246 [Submit][Status ...

  3. 【bzoj2081】[Poi2010]Beads Hash

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

  4. POI2010 Beads

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

  5. bzoj 2081: [Poi2010]Beads 哈希

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

  6. 提高篇 第二部分 字符串算法 第1章 哈希和哈希表

    浅谈字符串哈希_1264Ikaros的博客-CSDN博客_字符串哈希 图书管理-哈希表_handsome·wjc的博客-CSDN博客 字符串哈希 哈希表 - DTTTTTTT - 博客园 图书管理(L ...

  7. 重走长征路---OI每周刷题记录---4月12日 2015

    总目录详见https://blog.csdn.net/mrcrack/article/details/84471041 做题原则,找不到测评地址的题不做.2018-11-28 重走长征路---OI每周 ...

  8. LOJ#2427. 「POI2010」珍珠项链 Beads

    题目地址 题目链接 题解 不会算复杂度真是致命,暴力枚举k每次计算是n/2+n/3+n/4+...+1的,用调和级数算是\(O(nlogn)\)的... 如果写哈希表的话能够\(O(nlogn)\), ...

  9. USACO1.1 Broken Necklace (beads)

    2019独角兽企业重金招聘Python工程师标准>>> 从1到n-1,在str[i]位置分开,分别向左计数a,向右计数b,求a+b.求的最大的a+b值.如果向左走到头就循环到末尾,向 ...

最新文章

  1. nginx(No such file or directory与invalid PID number)
  2. 国内Linux shell,管理你的 shell 环境 | Linux 中国
  3. qt中设置父窗口中某一控件样式后,子窗口中某一控件也随父控件样式
  4. Howto Dynamically Insert Javascript And CSS
  5. php保存文件的方法,php实现编辑和保存文件的方法
  6. android刷机工具 原理,Android 设备刷机教程
  7. 初级java程序员要求_java初级程序猿需要具备的能力?
  8. 字节跳动怎么都十万人了?
  9. Excel-每隔几行进行转置一次
  10. 修改 mac 截图默认保存位置
  11. ros2 foxy 报错缺少“diagnostic_updater“,By not providing “Finddiagnostic_updater.cmake“ in CMAKE_MODULE_P
  12. c语言编程文章排版,一种简单英文词典排版系统的实现 C语言编程
  13. mysql 删除重复_MySQL查询和删除重复记录
  14. 飞鸽传书——短信接口
  15. MATLAB 中出现 Undefined variable py or function py.command 错误
  16. 威马汽车闫枫:造车新赛道的互联网思维
  17. 安全HCIP之AAA
  18. 互联网晚报 | 8月17日 星期二 | 滴滴在7城上线司机透明账单;支付宝上线“防疫六件套”;苹果公司市值达2.5万亿美元...
  19. iOS15 WebSocket断连问题
  20. 计算机数学好考研还是应用数学好考研,应用数学考研-应用数学研究生考研科目-就业前景-跨考教育...

热门文章

  1. 虚拟机CentOS8 网络配置
  2. [1] SDK Tools安装
  3. Wireshark文档阅读笔记-WebSocket协议基本概念
  4. Spring Boot笔记-JPA中自定义@Query分页查询
  5. Python笔记-centos7使用adb连接真实手机及初始化uiautomatro2项目
  6. Qt调用face++的http接口,实现人脸对比
  7. Qt文档阅读笔记-Button QML Type官方解析及实例
  8. Qt文档阅读笔记-Object Trees Ownership解析与实例(为何某些程序在被关闭的时候会崩溃)
  9. c语言从html控件sscanf,sscanf与sprintf在C语言中的用法
  10. mysql触发器调用存储过程出错_mysql 触发器中调用存储过程