题意:

给出一个环,环上有n(<=2000)个数字(<=5e7),然后将这个环分成1~n个连续序列,各个序列和之间的最大公因数。

题解:

我一开始想到的是二分,然后对于二分就会想怎么check,那么可以枚举这n个数和的因数,因为答案一定在这里面,然后就会找出对于每个因数可以分成的段数,但是这个并不满足单调性QAQ,但提供了一定的思路

考虑从大到小枚举因数,然后对于这个因数分成尽量多的部分,因为不难知道如果a % x == 0,(a + b) % x == 0 那么b % x == 0,因为这样就可以一直贪心找最大的因数。

然后现在的问题就是考虑环的情况,一般的做法是断环为链,枚举起点到终点找出有多少段%x == 0,但是可以稍微变一下形,如果pre[i] % x == y, pre[j] % x == y,那么i ~ j这一段%x为0,那么(1 ~ i) + (j+1 ~ n) % x == 0,那么现在的问题就是统计余数出现最多的次数,就完美处理了环的情况。

代码:

#include <bits/stdc++.h>
using namespace std;const int N = 4e3 + 7;
#define LL long long
vector <LL> num;
int n;
LL pre[N];int main () {scanf ("%d", &n);for (int i = 1; i <= n; ++i) {int x;scanf ("%d", &x);pre[i] = pre[i-1] + x;}for (LL i = 1; i * i <= pre[n]; ++i) {if (pre[n] % i == 0) {if (i * i == pre[n]) {num.push_back(i);continue;}num.push_back(i);num.push_back(pre[n] / i);}}sort (num.begin(), num.end());int K = 1;for (int i = num.size() - 1; i >= 0; --i) {int maxi = 0;vector <LL> v;for (int j = 1; j <= n; ++j) v.push_back(pre[j] % num[i]);sort (v.begin(), v.end());int pre = 0;for (int j = 0; j < v.size(); ++j) {if (v[j] == v[j+1] && j != v.size()-1) continue;maxi = max (maxi, j - pre + 1);pre = j + 1;}while (K <= maxi) {printf ("%lld\n", num[i]);++K;}}return 0;
}

  

总结:

这种求因数的题,并且数的范围不大,可以直接暴力枚举因数。。。。。。还有注意的是公式的变换~

转载于:https://www.cnblogs.com/xgtao/p/6014657.html

hihocoder 1246 王胖浩与环相关推荐

  1. hihoCoder #1246 王胖浩与环

    题目大意 $n$($1\le n\le 2000$)个正整数 $a_1, a_2, \dots, a_n$($a_i\le 5\times 10^7$)分布在一个圆环上. 定义 $b_k$ 为:将环上 ...

  2. hihoCoder #1246 : 王胖浩与环 (数学)

    题意: 有一个环形序列,可以将其切成连续的k段子序列,那么gcd( 每段子序列的和 )就是优美程度.输出n个整数,表示当k=[1, n] 时的最大优美程度. 思路: 观察一下,当切成1段的时候,gcd ...

  3. HihoCoder 1246:王胖浩与环

    #1246 : 王胖浩与环 时间限制:6000ms 单点时限:1000ms 内存限制:256MB 描述 王胖浩有一个环,环上有n个正整数.他有特殊的能力,能将环切成k段,每段包含一个或者多个数字. 对 ...

  4. hiho 挑战赛16 B 王胖浩与环

    因数,前缀和 题意: 给你一个循环数组,你要将它截成k段,然后每段有一个区间和,所有的区间和求gcd,就是优美程度,你要使得优美程度最大.k不是输入的,而是你要输出截1段,2段...n段的最优值 数据 ...

  5. hihocoder王胖浩与三角形【海伦公式+分类讨论】

    时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 王胖浩有一个三角形,三边长为a,b,c.他有特殊的能力,能增加三条边的边长,增加的总长度不能超过l. 他想通过合理地使用他的 ...

  6. HihoCoder 1245:王胖浩与三角形 三角形边长与面积

    #1245 : 王胖浩与三角形 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 王胖浩有一个三角形,三边长为a,b,c.他有特殊的能力,能增加三条边的边长,增加的总长度不能 ...

  7. hihoCoder挑战赛16 王胖浩与三角形

    题目1 : 王胖浩与三角形 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 王胖浩有一个三角形,三边长为a,b,c.他有特殊的能力,能增加三条边的边长,增加的总长度不能超过 ...

  8. HIHO#1245 : 王胖浩与三角形

    <span style="color: inherit; line-height: 1.1; font-family: 'Helvetica Neue', Helvetica, Ari ...

  9. hihocoder1245 王胖浩与三角形

    #1245 : 王胖浩与三角形 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 王胖浩有一个三角形,三边长为a,b,c.他有特殊的能力,能增加三条边的边长,增加的总长度不能 ...

最新文章

  1. 智能车竞赛技术报告 | 节能信标组 - 华南理工大学 - 华工雨花队
  2. angularJS学习笔记一
  3. VMP分析之VMP2.13插件化分析(四)
  4. 1.App瘦身经验总结
  5. gulp+PC前端静态页面项目开发
  6. 在VMware开启此虚拟机时出现内部错误
  7. Bootstrap 3: 图标转换事件 Change icons when toggle
  8. GBTD(Gradient Boosting Decision Tree)学习
  9. 移动端中 H5输入框在弹起键盘后被遮挡
  10. STM32之俄罗斯方块
  11. 解决没有配置本地nacos但是一直发生localhost8848连接异常的问题
  12. 罗克韦尔AB PLC 通过RSLinx Classic与PLC建立通信的具体方法步骤
  13. 基于用户体验的设计思想和用户体验概述
  14. vscode远程连接服务器操作方法
  15. 台湾大学郭彦甫MATLAB课程PPT课件
  16. 一文详解 Linux Crontab 调度任务
  17. QDialog设置标题
  18. 文本超出显示省略号的方法
  19. SP业务全线回暖导致华友光线合作失败
  20. Axure 自定义元件库

热门文章

  1. Python爬取10529条《三十而已》热评,看看大家都说了些啥
  2. icloud 照片导出_如何将iCloud照片用作Apple TV的屏幕保护程序
  3. ggplot2: post-hoc + 森林图
  4. 解决AS升级3.4 ERROR: All flavors must now belong to a named flavor dimension.Learn more at https://d.and
  5. 考虑线程安全的List集合选择
  6. 多目标优化算法matlab代码大合集
  7. 药剂师揭露中药行业内幕:代煎多偷工减料
  8. !Character.isDigit(a.charAt(i))
  9. 【GPGPU编程模型与架构原理】第一章 1.2 GPGPU 发展概述
  10. 深度学习——Noisier2Noise