hihocoder 1246 王胖浩与环
题意:
给出一个环,环上有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 王胖浩与环相关推荐
- hihoCoder #1246 王胖浩与环
题目大意 $n$($1\le n\le 2000$)个正整数 $a_1, a_2, \dots, a_n$($a_i\le 5\times 10^7$)分布在一个圆环上. 定义 $b_k$ 为:将环上 ...
- 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.他有特殊的能力,能增加三条边的边长,增加的总长度不能 ...
最新文章
- 智能车竞赛技术报告 | 节能信标组 - 华南理工大学 - 华工雨花队
- angularJS学习笔记一
- VMP分析之VMP2.13插件化分析(四)
- 1.App瘦身经验总结
- gulp+PC前端静态页面项目开发
- 在VMware开启此虚拟机时出现内部错误
- Bootstrap 3: 图标转换事件 Change icons when toggle
- GBTD(Gradient Boosting Decision Tree)学习
- 移动端中 H5输入框在弹起键盘后被遮挡
- STM32之俄罗斯方块
- 解决没有配置本地nacos但是一直发生localhost8848连接异常的问题
- 罗克韦尔AB PLC 通过RSLinx Classic与PLC建立通信的具体方法步骤
- 基于用户体验的设计思想和用户体验概述
- vscode远程连接服务器操作方法
- 台湾大学郭彦甫MATLAB课程PPT课件
- 一文详解 Linux Crontab 调度任务
- QDialog设置标题
- 文本超出显示省略号的方法
- SP业务全线回暖导致华友光线合作失败
- Axure 自定义元件库
热门文章
- Python爬取10529条《三十而已》热评,看看大家都说了些啥
- icloud 照片导出_如何将iCloud照片用作Apple TV的屏幕保护程序
- ggplot2: post-hoc + 森林图
- 解决AS升级3.4 ERROR: All flavors must now belong to a named flavor dimension.Learn more at https://d.and
- 考虑线程安全的List集合选择
- 多目标优化算法matlab代码大合集
- 药剂师揭露中药行业内幕:代煎多偷工减料
- !Character.isDigit(a.charAt(i))
- 【GPGPU编程模型与架构原理】第一章 1.2 GPGPU 发展概述
- 深度学习——Noisier2Noise