CF926B Add Points
一道尚未评定的水题
更好的阅读体验
思路
来分析分析样例:
3
-5 10 5

我们把它升序排列,会得到这个东西↑
不仔细地观察后可以发现:加一个(0,0)的点显然是最优的
再用脚趾头想想为什么,我们发现,这题题意就是想让我们把一段线段x等分,使得给出的点都是它的x等分点。
而通过我们的敏锐的第六感做题经验,不难看出最优解即相邻点距离的最大公约数
做法
显然此题难点在于求n个数的gcd
而要求多个数的gcd,两两求之后合并即可。
证明:
以三个数为例,设有a,b,c三数,x=gcd(a,b),y=gcd(x,c),因为a%x=0,x%y=0,所以a%y也等于零,且y是符合条件的最大值。
所以我们可以递推求n个长度的gcd,然后出解即可
代码
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int a[100001];
int b[100001];
int main()
{
int n;
cin >> n;
for ( int i = 1; i <= n; i++ )
{
cin >> b[i];
}
sort ( b + 1, b + n + 1 );
for ( int i = 2; i <= n; i++ )
a[i] = b[i] - b[i-1];
int dis = b[n] - b[1];
for ( int i = 2; i <= n; i++ )
{
a[i] = __gcd( a[i], a[i-1] );
//在<cmath>里的神奇函数(妈妈再也不用担心我不会辗转相除啦!)
}
cout << dis / a[n] - n + 1;
/*此时的a[n]即为最优的线段长度,dis/a[n]为线段个数,
再加1是点的个数,最后减去原有的n个点,输出*/
return 0;
}
完美收官(你们没发现开头的链接是两个吗)
CF926B Add Points的更多相关文章
- rviz学习笔记(二)——Markers: Points and Lines (C++) 点和线
一.在using_marker/src中编写点和线代码 vim ~/catkin_ws/src/using_marker/src/points_and_lines.cpp 编写代码,其中有注释 #in ...
- 149 Max Points on a Line 直线上最多的点数
给定二维平面上有 n 个点,求最多有多少点在同一条直线上. 详见:https://leetcode.com/problems/max-points-on-a-line/description/ Jav ...
- Visulalize Boost Voronoi in OpenSceneGraph
Visulalize Boost Voronoi in OpenSceneGraph eryar@163.com Abstract. One of the important features of ...
- UE4 在C++ 动态生成几何、BSP体、Brush ---- Mesh_Generation
截至UE4 4.10 runtime 无法生成BSP类 ,只能通过自定义的Mesh的Vertex 进行绘制 ( Google 考证,能改UE4源码的请忽略 ) 可用到的 UE4 集成的Render ...
- (转)Markov Chain Monte Carlo
Nice R Code Punning code better since 2013 RSS Blog Archives Guides Modules About Markov Chain Monte ...
- EF保存平面数据到SqlServer
前言 公司开展一个项目,需要根据客户手机定位获取周围内的精准广告,具体是管理员在地图上绘制多边形的广告范围,落在范围内的客户就看到此广告.下面将我的实现方法简单叙述一下,以供有相同需求的朋友参考. E ...
- $modal
$scope.open = function (size,data) {var modalInstance = $modal.open({ templateUrl: 'myModalContent.h ...
- create feature from text file
'''---------------------------------------------------------------------------------- Tool Name: Cre ...
- HW7.8
import java.util.ArrayList; import java.util.Scanner; public class Solution { public static void mai ...
随机推荐
- linux下的特殊模式
单用户模式 ubuntu 16.04 单用户操作 1.重启操作系统,BIOS引导过后一直按住shift,出现GUN Grub菜单: 2.选择Advanced options for Ubuntu选项回 ...
- Spring Boot 2.x基础教程:使用JdbcTemplate访问MySQL数据库
在第2章节中,我们介绍了如何通过Spring Boot来实现HTTP接口,以及围绕HTTP接口相关的单元测试.文档生成等实用技能.但是,这些内容还不足以帮助我们构建一个动态应用的服务端程序.不论我们是 ...
- oracle问题之死锁 (一)
[前言] 遇到 oracle 异常 和 解决实践 系列文章 整理分享 杂症一.oracle死锁 一.症状: 执行SQL或程序时,程序没有响应或SQL执行一直处于执行状态,没有成功,也没有报错. 二.病 ...
- 技术派-如果编译提示winnt.h(222):error C2146错误
如果编译的时候,出现如下错误: \Microsoft Studio 8\VC\PlatformSDK\include\winnt.h(222):error C2146: 语法错误:缺少“:”(在标识符 ...
- C++ STL IO流 与 Unicode (UTF-16 UTF-8) 的协同工作
09年研究技术的大神真的好多,本文测试有很多错误,更正后发布下(可能与编辑器相关). file.imbue(locale(file.getloc(), new codecvt_utf8<wcha ...
- 教你5分钟做个手机APP[视频]
天天宅在家里,没什么事做,录个教学视频吧! 发到了视频网站上去根本没人看,伤心ing啊! 不知cnblogs上面是否让我发! 先上一张效果图看看哈: 如果播放不正常请点这里:https://www.b ...
- [python之路]简单介绍
python介绍 #python是一个什么样的语言?编译型和解释型静态语言和动态语言强类型定义语言和弱类型定义语言python是一门动态解释性的强类型定义语言. #Python的优缺点##优点Pyth ...
- POJ_1376_bfs
题目描述: 给定一个黑白格子的图,黑格子是障碍物,一个线段交点的起点,一个线段交点的终点和初始方向,机器人从起点开始,只能沿着线段,走到终点,期间不能沿着障碍物边缘和墙边缘. 一次操作可以向当前方向走 ...
- Codeforces_711_A
http://codeforces.com/problemset/problem/711/A 忙了一天没做题,做到水题,我这水平也只能做水题了= = ! #include<iostream> ...
- Dubbo 服务 IP 注册错误踩坑经历
个人博客地址 studyidea.cn,点击查看更多原创文章 踩坑 公司最近新建一个机房,需要将现有系统同步部署到新机房,部署完成之后,两地机房同时对提供服务.系统架构如下图: 这个系统当前对外采用 ...