#1246 : 王胖浩与环

时间限制:6000ms
单点时限:1000ms
内存限制:256MB

描述

王胖浩有一个环,环上有n个正整数。他有特殊的能力,能将环切成k段,每段包含一个或者多个数字。

对于一个切分方案,王胖浩将以如下方式计算优美程度,

首先对于每一段,求出他们的数字和。然后对于每段的和,求出他们的最大公约数,即为优美程度。

他想通过合理地使用他的特殊能力,使得切分方案的优美程度最大。

输入

第一行一个整数n,表示环上的数字个数。

接下来一行包含n个正整数,第i个数ai表示环上第i个数。

数据范围:

1<=n<=2000,1<=ai<=5*107

输出

输出n行,第i行表示切成i段时的最大优美程度。

样例输入

7
2 3 3 3 3 3 3
样例输出
20
5
2
2
1
1
1

官方题解:首先d一定是所有数总和的约数,这样的数并不多。接着判断一个d是否可能为k段和的约数,只要将前缀和按模d分类即可,看相同的个数是否大于等于k。

又学到了新姿势。。。一堆数的公共约数,实际上一定在 这堆数和 的约数里面找。因为很简单的道理,a%x=0 b%x=0,(a+b)是肯定%x=0的。

然后就是将约数从大到小排序,看它们在前缀和里面出现的次数,这里的做法也感觉太亮了。果然自己做题还是太少了啊。。。

代码:

#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#include <map>
#pragma warning(disable:4996)
using namespace std;typedef long long ll;ll n;
ll val[2005];
ll num[5000];
ll ans[2005];int main()
{//freopen("i.txt","r",stdin);//freopen("o.txt","w",stdout);ll i, j, nu;scanf("%lld", &n);val[0] = 0;for (i = 1; i <= n; i++){scanf("%lld", val + i);val[i] = val[i - 1] + val[i];}sort(val + 1, val + n + 1);nu = 0;for (i = 1; i *i <= val[n]; i++){if (val[n] % i==0){if (i*i == val[n]){num[nu++] = i;continue;}num[nu++] = i;num[nu++] = val[n] / i;}}sort(num, num + nu);ll temp, k, m;k = 1;for (i = nu - 1; i >= 0; i--){temp = num[i];map<ll, ll>cnt;m = 0;for (j = 1; j <= n; j++){m = max(m, ++cnt[val[j] % temp]);}while (k <= m){ans[k] = temp;k++;}}for (i = 1; i <= n; i++){printf("%lld\n", ans[i]);}//system("pause");return 0;
}

HihoCoder 1246:王胖浩与环相关推荐

  1. hihocoder 1246 王胖浩与环

    题意: 给出一个环,环上有n(<=2000)个数字(<=5e7),然后将这个环分成1~n个连续序列,各个序列和之间的最大公因数. 题解: 我一开始想到的是二分,然后对于二分就会想怎么che ...

  2. hihoCoder #1246 王胖浩与环

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

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

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

  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. java timer cron_Java之旅--定时任务(Timer、Quartz、Spring、LinuxCron)
  2. CactiEZ安装配置教程
  3. linux @webserviceclient 访问超时_Linux系统调优
  4. Android Custom View系列《圆形菜单一》
  5. shell脚本基本命令1
  6. 安卓APP_ 控件(11)webView —— 简单应用:显示网页
  7. 有关软件工程的问题的分析和讨论及课后的作业3
  8. js和jquery书籍
  9. TensorFlow1-张量
  10. 我们异口同声说的shooow
  11. 一个简单的键值存储微服务
  12. matlab降水时空分布图,江浙沪地区55年夏季降水时空分布规律研究
  13. 第1讲、Cadence Allergo绘制小马哥DragonFly四轴飞行器PCB四层板教程简介
  14. wow(2) : UI插件_EUI[2]_正式服配置分享
  15. github上下载的源码 如何使用 ?
  16. 对二级指针分配内存及理解
  17. STC单片机蓝牙无线下载-烧写程序ISP(STC8 STC15 STC12 STC11 STC89)
  18. 概率统计(一)随机事件与随机变量
  19. 快递物流管理系统(SSM,JQUERY-EASYUI,MYSQL) -- IDEA,Eclipse双版本
  20. [Web]Canvas手绘时钟

热门文章

  1. C# 里面的 #region 是什么意思?
  2. 计算机软件里的字体,软件里面的字体大小
  3. 每日一句_《客中行》
  4. Mac电脑程序无响应怎么办?教你强制退出无响应程序
  5. python 1014 福尔摩斯的约会 (20 分)
  6. 微众银行区块链李辉忠:多方大数据隐私计算平台为数据隐私加“安全锁”
  7. 人工智能AI编程基础(五)
  8. 【四】Java设计模式GOF23之抽象工厂模式
  9. python100day day22 -Requests
  10. 淘宝宝贝标题优化2个字:日增10000个IP访问