hihoCoder #1246 王胖浩与环
题目大意
$n$($1\le n\le 2000$)个正整数 $a_1, a_2, \dots, a_n$($a_i\le 5\times 10^7$)分布在一个圆环上。
定义 $b_k$ 为:将环上的数划分成 $k$ 段,每段上的数之和的 GCD 的最大值。
求 $b_1, b_2, \dots, b_n$ 。
解法
首先,不难看出, $b_k$ 是 $n$ 个数之和 (记做 $S$)的约数。
考虑到 $S$ 的约数并不多($2\sqrt{n}$ 是很松的上界,并且往往 $n$ 越大这上界越松),从而可以考虑枚举 $S$ 的约数 $d$,问题转化为
这 $n$ 个数最多能分成几段,使得每段数之和都能被 $d$ 整除。
算法一
枚举分段的起始位置 $i$,以 $i$ 为序列起点求前缀和,看前缀和中有几个能被 $d$ 整除。
复杂度 $O(n^2)$
算法二
不必枚举分段的起点。
对输入序列求前缀和。
按模 $d$ 的余数将 $n$ 个前缀和分类,用 std::unordered_map<int,int>
,记录每个类中有多少个前缀和。
最大的类的 size 即为所求。
复杂度 $O(n\log n)$
这个做法应该是老套路了,我却不知道,我太菜了。TAT
转载于:https://www.cnblogs.com/Patt/p/8408956.html
hihoCoder #1246 王胖浩与环相关推荐
- hihocoder 1246 王胖浩与环
题意: 给出一个环,环上有n(<=2000)个数字(<=5e7),然后将这个环分成1~n个连续序列,各个序列和之间的最大公因数. 题解: 我一开始想到的是二分,然后对于二分就会想怎么che ...
- hihoCoder #1246 : 王胖浩与环 (数学)
题意: 有一个环形序列,可以将其切成连续的k段子序列,那么gcd( 每段子序列的和 )就是优美程度.输出n个整数,表示当k=[1, n] 时的最大优美程度. 思路: 观察一下,当切成1段的时候,gcd ...
- HihoCoder 1246:王胖浩与环
#1246 : 王胖浩与环 时间限制:6000ms 单点时限:1000ms 内存限制:256MB 描述 王胖浩有一个环,环上有n个正整数.他有特殊的能力,能将环切成k段,每段包含一个或者多个数字. 对 ...
- hiho 挑战赛16 B 王胖浩与环
因数,前缀和 题意: 给你一个循环数组,你要将它截成k段,然后每段有一个区间和,所有的区间和求gcd,就是优美程度,你要使得优美程度最大.k不是输入的,而是你要输出截1段,2段...n段的最优值 数据 ...
- hihocoder王胖浩与三角形【海伦公式+分类讨论】
时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 王胖浩有一个三角形,三边长为a,b,c.他有特殊的能力,能增加三条边的边长,增加的总长度不能超过l. 他想通过合理地使用他的 ...
- HihoCoder 1245:王胖浩与三角形 三角形边长与面积
#1245 : 王胖浩与三角形 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 王胖浩有一个三角形,三边长为a,b,c.他有特殊的能力,能增加三条边的边长,增加的总长度不能 ...
- hihoCoder挑战赛16 王胖浩与三角形
题目1 : 王胖浩与三角形 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 王胖浩有一个三角形,三边长为a,b,c.他有特殊的能力,能增加三条边的边长,增加的总长度不能超过 ...
- HIHO#1245 : 王胖浩与三角形
<span style="color: inherit; line-height: 1.1; font-family: 'Helvetica Neue', Helvetica, Ari ...
- hihocoder1245 王胖浩与三角形
#1245 : 王胖浩与三角形 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 王胖浩有一个三角形,三边长为a,b,c.他有特殊的能力,能增加三条边的边长,增加的总长度不能 ...
最新文章
- db2 最近三个月_2020.8.11 腰椎微创三个月后
- ABAP程序权限对象设定
- 输入一个字母,转大小写
- webpack打包原理
- 从Oracle到PostgreSQL:Storage Index 特性 vs BRIN 索引
- 别被忽悠了!我来谈谈大数据平台的4个要点,你们写的都不是干货
- React 从入门到进阶之路(二)
- Linux基础之bash shell介绍及基本特性
- 德标螺纹规格对照表_德标 国标,国际标准中英文对照表
- 2022-02-03:有一队人(两人或以上)想要在一个地方碰面,他们希望能够最小化他们的总行走距离。 给你一个 2D 网格,其中各个格子内的值要么是 0,要么是
- 资源变现微信小程序安装教程
- 理解offset in Python
- 【VMware】虚拟机中映射USB设备
- Internal Error: Lookup sub table, 'ccmp' Glyph Composition/Decomposition in Arabic lookup 10 context
- 【笔记】MATLAB 批量注释/批量取消注释
- SQL Server视频
- 华为服务器pe下安装linux,华为服务器安装操作系统.docx
- C++部署深度学习模型
- arduino rc522模块使用
- STC15F2K60S2单片机入门:编写头文件
热门文章
- 1-13 格式化输出
- PDF格式分析(五十九) Color Spaces 颜色空间
- 许奔创新社-第25问:创新者的刻意练习怎么做?
- R语言画森林图方法4
- REXROTH力士乐柱塞泵A10VSO100DRS/32R-VPB12N00
- 计算机课会点名吗,网课突然被点名的尴尬,你也懂的吧
- 有冗余电源的台式计算机,台式机500w电源是否足够
- 3D Touch介绍:电子秤App与快捷操作
- 为什么王者荣耀总是服务器中断,王者荣耀服务器突然维护怎么回事?7月3日王者荣耀维护原因补偿...
- MM41/MM42/MM43零售物料主数据BAPI创建示例(WRF_MATERIAL_MAINTAINDATA_RT)