★题目描述

Joyvan最近遇到了一个难题,对于一个包含

N个整数的序列a1,a2,……,aN,定义:f(i,j)=(j-i)2+(j∑k=i+1 ak)2

现在Joyvan想要你帮他计算所有

f(i,j)(1<=i<j<=N)的最小值。

★输入格式

输入的第一行为数字N,表示给定序列的长度。

第二行包含N个整数,表示序列中的整数a1,a2,……,aN。

★输出格式

输出一个整数,即所有f(i,j)(1<=i<j<=N)的最小值。

★样例输入

4
1 0 0 -1

★样例输出

1

★提示

★参考代码

思路参考自共享文件

网上找到的过10个点的代码

#include <iostream>

#define SQUARE(x) ((x)*(x))
using namespace std; int main()
{
int n;
cin >> n;
long total = 0;
long sum[n+10];
int tmp;
for(int i=0; i<n; i++){
scanf("%d", &tmp);
total += tmp;
sum[i] = total;
}
long minRes = 0x7ffffff;
int i, j;
for(i=0; i<n; i++){
for(j=i+1; j<n; j++){
if(SQUARE(j-i) > minRes){
break;
}
minRes = min(SQUARE(j-i) + SQUARE(sum[j] - sum[i]), minRes);
}
}
cout << minRes << endl;
return 0;
}

下面是自己写的,用二分法,但是仅过8个点,最后两个测试点超时了

/*
对公式进行变形
假设 xi=i,yi= i∑k=1 ak
那么 f(i,j)=(xj-xi)2+(yj-yi)2
那么也就是相当于问距离最近的两点 现在的问题就是如何使用二分法找到距离最近的两点 可以百度“平面最近点对”,即可找到模板题
*/
#include<bits/stdc++.h>
#define max(a,b) (a>b?a:b)
#define min(a,b) (a<b?a:b)
using namespace std; int n;
int Y[100005]={0}; long Dist(int i, int j){
return 1l*(i-j)*(i-j) + 1l*(Y[i]-Y[j])*(Y[i]-Y[j]);
} long df(int L, int R){
if(L>=R) return 0x3ffff;
if(L+1==R) return Dist(L,R); int mid = (L+R)>>1;
long min_dist = min(df(L,mid), df(mid+1,R)); int lim = sqrt(min_dist)+1;
int sta = max(L, mid-lim), end=min(R, mid+lim);
for(int i=sta; i<=end; ++i) for(int j=i+1; j<=end; ++j){
min_dist = min(min_dist, Dist(i, j));
}
return min_dist;
} int main(){
int a;
scanf("%d",&n);
for(int i=1; i<=n; ++i){
scanf("%d",&a);
Y[i]=Y[i-1]+a;
} cout<<df(1, n)<<endl;
return 0;
}

算法设计与分析 2.5 Joyvan的难题的更多相关文章

  1. 算法设计与分析 1.1 Joyvan的矩阵

    ★题目描述 Joyvan有一个大小为n * m的矩阵,现在他要对矩阵进行q次操作,操作分为如下三种: 0 x y:交换矩阵的x.y两行. 1 x y:交换矩阵的x.y两列. 2 x y:求当前矩阵第x ...

  2. 【技术文档】《算法设计与分析导论》R.C.T.Lee等·第7章 动态规划

    由于种种原因(看这一章间隔的时间太长,弄不清动态规划.分治.递归是什么关系),导致这章内容看了三遍才基本看懂动态规划是什么.动态规划适合解决可分阶段的组合优化问题,但它又不同于贪心算法,动态规划所解决 ...

  3. 算法设计与分析 - AC 题目 - 第 5 弹(重复第 2 弹)

    PTA-算法设计与分析-AC原题 - 最大子列和问题 (20分) 给定K个整数组成的序列{ N1, N2, ..., NK },“连续子列”被定义为{ Ni, Ni+, ..., Nj },其中 ≤i ...

  4. 算法设计与分析 - AC 题目 - 第 2 弹

    PTA-算法设计与分析-AC原题7-1 最大子列和问题 (20分)给定K个整数组成的序列{ N1, N2, ..., NK },“连续子列”被定义为{ Ni, Ni+1, ..., Nj },其中 1 ...

  5. 算法设计与分析-Week12

    题目描述 You are given coins of different denominations and a total amount of money amount. Write a func ...

  6. 南大算法设计与分析课程复习笔记(1) L1 - Model of computation

    一.计算模型 1.1 定义: 我们在思考和处理算法的时候是机器无关.实现语言无关的.所有的算法运行在一种“抽象的机器”之上,这就是计算模型. 1.2 种类 图灵机是最有名的计算模型,本课使用更简单更合 ...

  7. 算法设计与分析基础 (Anany Levitin 著)

    第1章 绪论 1.1 什么是算法 1.2 算法问题求解基础 1.2.1 理解问题 1.2.2 了解计算设备的性能 1.2.3 在精确解法和近似解法之间做出选择 1.2.4 算法的设计技术 1.2.5 ...

  8. 算法设计与分析(李春保)练习题答案v1

    1.1第1 章─概论 1.1.1练习题 1.下列关于算法的说法中正确的有(). Ⅰ.求解某一类问题的算法是唯一的 Ⅱ.算法必须在有限步操作之后停止 Ⅲ.算法的每一步操作必须是明确的,不能有歧义或含义模 ...

  9. 算法设计与分析 - 李春葆 - 第二版 - pdf->word v3

    1.1 第1章─概论 练习题 . 下列关于算法的说法中正确的有( ). Ⅰ.求解某一类问题的算法是唯一的 Ⅱ.算法必须在有限步操作之后停止 Ⅲ.算法的每一步操作必须是明确的,不能有歧义或含义模糊 Ⅳ. ...

随机推荐

  1. 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU开发那些事 - 索引

    大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家介绍的是恩智浦i.MX RTxxx系列微控制器相关知识. 恩智浦半导体于2018年10月发布的i.MX RTxxx系列开启了ML/AI MCU ...

  2. linux,发布.netcore填坑,自动升级core版本后,运行报错:'Microsoft.AspNetCore.App', version '3.0.0' was not found.

    近来有点空,所以研究下,netcore这个神器~    号称跨平台的利器,从此net不在局限于windows服务器了,早点该多好呀,这样我们net程序员,不香吗? 网上搜,‘netcore 发布liu ...

  3. pillow模块Image.crop()函数切割图片方法,参数说明

    使用Image.crop()方法对图片进行切割. 参数: Image.crop(left, up, right, below) left:与左边界的距离 up:与上边界的距离 right:还是与左边界 ...

  4. create connection SQLException, url: jdbc:mysql://localhost:3306/demo, errorCode 1045, state 28000

    错误原因: 配置文件中 username 与 Mysql 关键字冲突 改为:

  5. 松软科技web课堂:JavaScript If...Else 语句

    条件语句用于基于不同条件执行不同的动作. 条件语句 在您写代码时,经常会需要基于不同判断执行不同的动作. 您可以在代码中使用条件语句来实现这一点. 在 JavaScript 中,我们可使用如下条件语句 ...

  6. 3、netty第二个例子,使用netty建立客户端,与服务端通讯

    第一个例子中,建立了http的服务器端,可以直接使用curl命令,或者浏览器直接访问. 在第二个例子中,建立一个netty的客户端来主动发送请求,模拟浏览器发送请求. 这里先启动服务端,再启动客户端, ...

  7. QT--电子时钟

    QT--电子时钟 简介: 使用了绘图事件.定时事件,有两个窗口,一个窗口用于设置时间(主窗口),一个是时钟窗口 1.主窗口 menu.h文件: #ifndef MENU_H #define MENU_ ...

  8. LeetCode刷题191123

    博主渣渣一枚,刷刷leetcode给自己瞅瞅,大神们由更好方法还望不吝赐教.题目及解法来自于力扣(LeetCode),传送门. 算法: 给出一个区间的集合,请合并所有重叠的区间. 示例 1: 输入: ...

  9. Spring Boot与ActiveMQ整合

    Spring Boot与ActiveMQ整合 1使用内嵌服务 (1)在pom.xml中引入ActiveMQ起步依赖 <dependency> <groupId>org.spri ...

  10. Hive 时间函数总结【转】

    1.日期函数UNIX时间戳转日期函数: from_unixtime语法:from_unixtime(bigint unixtime[, stringformat]) 返回值: string说明: 转化 ...