BZOJ2081 [Poi2010]Beads
我们只要暴力枚举块的大小就可以了。。。
枚举的总复杂度是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相关推荐
- 【BZOJ2081/Poi2010】Beads
2081: [Poi2010]Beads Time Limit: 10 Sec Memory Limit: 259 MB ...
- bzoj 2081 [Poi2010]Beads
2081: [Poi2010]Beads Time Limit: 10 Sec Memory Limit: 259 MB Submit: 687 Solved: 246 [Submit][Status ...
- 【bzoj2081】[Poi2010]Beads Hash
题目描述 Zxl有一次决定制造一条项链,她以非常便宜的价格买了一长条鲜艳的珊瑚珠子,她现在也有一个机器,能把这条珠子切成很多块(子串),每块有k(k>0)个珠子,如果这条珠子的长度不是k的倍数, ...
- POI2010 Beads
Beads Zxl有一次决定制造一条项链,她以非常便宜的价格买了一长条鲜艳的珊瑚珠子,她现在也有一个机器,能把这条珠子切成很多块(子串),每块有k(k>0)个珠子,如果这条珠子的长度不是k的倍数 ...
- bzoj 2081: [Poi2010]Beads 哈希
题意 Zxl有一次决定制造一条项链,她以非常便宜的价格买了一长条鲜艳的珊瑚珠子,她现在也有一个机器,能把这条珠子切成很多块(子串),每块有k(k>0)个珠子,如果这条珠子的长度不是k的倍数,最后 ...
- 提高篇 第二部分 字符串算法 第1章 哈希和哈希表
浅谈字符串哈希_1264Ikaros的博客-CSDN博客_字符串哈希 图书管理-哈希表_handsome·wjc的博客-CSDN博客 字符串哈希 哈希表 - DTTTTTTT - 博客园 图书管理(L ...
- 重走长征路---OI每周刷题记录---4月12日 2015
总目录详见https://blog.csdn.net/mrcrack/article/details/84471041 做题原则,找不到测评地址的题不做.2018-11-28 重走长征路---OI每周 ...
- LOJ#2427. 「POI2010」珍珠项链 Beads
题目地址 题目链接 题解 不会算复杂度真是致命,暴力枚举k每次计算是n/2+n/3+n/4+...+1的,用调和级数算是\(O(nlogn)\)的... 如果写哈希表的话能够\(O(nlogn)\), ...
- USACO1.1 Broken Necklace (beads)
2019独角兽企业重金招聘Python工程师标准>>> 从1到n-1,在str[i]位置分开,分别向左计数a,向右计数b,求a+b.求的最大的a+b值.如果向左走到头就循环到末尾,向 ...
最新文章
- nginx(No such file or directory与invalid PID number)
- 国内Linux shell,管理你的 shell 环境 | Linux 中国
- qt中设置父窗口中某一控件样式后,子窗口中某一控件也随父控件样式
- Howto Dynamically Insert Javascript And CSS
- php保存文件的方法,php实现编辑和保存文件的方法
- android刷机工具 原理,Android 设备刷机教程
- 初级java程序员要求_java初级程序猿需要具备的能力?
- 字节跳动怎么都十万人了?
- Excel-每隔几行进行转置一次
- 修改 mac 截图默认保存位置
- ros2 foxy 报错缺少“diagnostic_updater“,By not providing “Finddiagnostic_updater.cmake“ in CMAKE_MODULE_P
- c语言编程文章排版,一种简单英文词典排版系统的实现 C语言编程
- mysql 删除重复_MySQL查询和删除重复记录
- 飞鸽传书——短信接口
- MATLAB 中出现 Undefined variable py or function py.command 错误
- 威马汽车闫枫:造车新赛道的互联网思维
- 安全HCIP之AAA
- 互联网晚报 | 8月17日 星期二 | 滴滴在7城上线司机透明账单;支付宝上线“防疫六件套”;苹果公司市值达2.5万亿美元...
- iOS15 WebSocket断连问题
- 计算机数学好考研还是应用数学好考研,应用数学考研-应用数学研究生考研科目-就业前景-跨考教育...
热门文章
- 虚拟机CentOS8 网络配置
- [1] SDK Tools安装
- Wireshark文档阅读笔记-WebSocket协议基本概念
- Spring Boot笔记-JPA中自定义@Query分页查询
- Python笔记-centos7使用adb连接真实手机及初始化uiautomatro2项目
- Qt调用face++的http接口,实现人脸对比
- Qt文档阅读笔记-Button QML Type官方解析及实例
- Qt文档阅读笔记-Object Trees Ownership解析与实例(为何某些程序在被关闭的时候会崩溃)
- c语言从html控件sscanf,sscanf与sprintf在C语言中的用法
- mysql触发器调用存储过程出错_mysql 触发器中调用存储过程