语音评测系统 2019 计蒜之道 初赛 第六场 多个特殊二次函数(同样形状)的最小值 它与多条直线最小值的互换...

本文主要是介绍语音评测系统 2019 计蒜之道 初赛 第六场 多个特殊二次函数(同样形状)的最小值 它与多条直线最小值的互换...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

https://nanti.jisuanke.com/t/39458

 

n个函数的形状是一致的,只是大小不同

 

a按照从小到大排序,

设当前最小值的区间段为

(u1,u2) ai1

(u2,u3) ai2

……

[其中i1<i2<...]

 

加上一个新的函数,若它与函数ik交于点ur,则它必大于段(u1,u2),...,(uk-1,uk),必小于段(uk+1,uk+2),(uk+2,uk+3),...。

 

经过修改过,段变为(u1,u2),...,(uk-1,uk),(uk,ur),(ur,inf)

使用单调栈处理,每个段最多被加入或删除一次

 同理,对于函数(x+a)^2+b,它可以转变x^2+2ax+b,在进行函数比较时,都有x^2,则可以转变为直线的比较,

对于直线,同样满足凸包性质

如题目[JSOI2008]Blue Mary开公司,可以像本题一样,使用排序+单调栈

当然如果修改为线段,李超树大法好,https://i.cnblogs.com/PostDone.aspx?postid=11156309&actiontip=%e4%bf%9d%e5%ad%98%e4%bf%ae%e6%94%b9%e6%88%90%e5%8a%9f

 

https://nanti.jisuanke.com/t/39458代码

 1 #include <cstdio>
 2 #include <cstdlib>
 3 #include <cstring>
 4 #include <string>
 5 #include <cmath>
 6 #include <algorithm>
 7 #include <iostream>
 8 using namespace std;
 9 #define ll long long
10 
11 const int maxn=1e6+10;
12 const double eps=1e-8;
13 
14 ll a[maxn],b[maxn],c[maxn],d[maxn];
15 int u[maxn];
16 double v[maxn];
17 
18 double cal(int i,int j)
19 {
20     return (c[i]+c[j]+1.0*(d[i]-d[j])/(c[i]-c[j]))/2;
21 }
22 
23 int main()
24 {
25     bool vis=0;
26     int n,m=0,q,i,g;
27     ll r,y;
28     double x;
29     scanf("%d",&n);
30     for (i=1;i<=n;i++)
31         scanf("%lld",&a[i]);
32     for (i=1;i<=n;i++)
33         scanf("%lld",&b[i]);
34 
35     a[n+1]=a[n]+1;
36     r=1e18;
37     for (i=1;i<=n;i++)
38     {
39         r=min(r,b[i]);
40         if (a[i]!=a[i+1])
41         {
42             c[++m]=a[i];
43             d[m]=r;
44             r=1e18;
45         }
46     }
47 
48     g=0;
49     for (i=1;i<=m;i++)
50     {
51         while (g>=2 && cal(i,u[g])<v[g])
52             g--;
53 
54         g++;
55         u[g]=i;
56         if (g>=2)
57             v[g]=cal(u[g],u[g-1]);
58     }
59 
60 //    for (i=1;i<=g;i++)
61 //        printf("%d %.5f\n",u[i],v[i]);
62 
63     i=2;
64     scanf("%d",&q);
65     while (q--)
66     {
67         scanf("%lf",&x);
68         while (i!=g+1 && v[i]<x)
69             i++;
70         if (!vis)
71             vis=1;
72         else
73             printf(" ");
74         y=(ll)x;
75         printf("%lld",(y-c[u[i-1]])*(y-c[u[i-1]])+d[u[i-1]]);
76     }
77     return 0;
78 }
79 /*
80 3
81 1 3 5
82 0 1 2
83 9
84 -1000000 -1 0 1 2 3 4 5 1000000
85 1000002000001 4 1 0 1 1 2 2 999990000027
86 
87 3
88 1 3 5
89 0 1 -10
90 9
91 -1000000 -1 0 1 2 3 4 5 1000000
92 
93 4
94 1 1 2 2
95 0 -3 1000 -5
96 5
97 1 2 3 4 5
98 -4 -5 -4 -1 4
99 */

 

转载于:https://www.cnblogs.com/cmyg/p/11160344.html

这篇关于语音评测系统 2019 计蒜之道 初赛 第六场 多个特殊二次函数(同样形状)的最小值 它与多条直线最小值的互换...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/214831

相关文章

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

java中ssh2执行多条命令的四种方法

《java中ssh2执行多条命令的四种方法》本文主要介绍了java中ssh2执行多条命令的四种方法,包括分号分隔、管道分隔、EOF块、脚本调用,可确保环境配置生效,提升操作效率,具有一定的参考价值,感... 目录1 使用分号隔开2 使用管道符号隔开3 使用写EOF的方式4 使用脚本的方式大家平时有没有遇到自

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数

python中的高阶函数示例详解

《python中的高阶函数示例详解》在Python中,高阶函数是指接受函数作为参数或返回函数作为结果的函数,下面:本文主要介绍python中高阶函数的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录1.定义2.map函数3.filter函数4.reduce函数5.sorted函数6.自定义高阶函数

Python中的sort方法、sorted函数与lambda表达式及用法详解

《Python中的sort方法、sorted函数与lambda表达式及用法详解》文章对比了Python中list.sort()与sorted()函数的区别,指出sort()原地排序返回None,sor... 目录1. sort()方法1.1 sort()方法1.2 基本语法和参数A. reverse参数B.

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧

《Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧》本文将通过实际代码示例,深入讲解Python函数的基本用法、返回值特性、全局变量修改以及异常处理技巧,感兴趣的朋友跟随小编一起看看... 目录一、python函数定义与调用1.1 基本函数定义1.2 函数调用二、函数返回值详解2.1 有返

Python Excel 通用筛选函数的实现

《PythonExcel通用筛选函数的实现》本文主要介绍了PythonExcel通用筛选函数的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录案例目的示例数据假定数据来源是字典优化:通用CSV数据处理函数使用说明使用示例注意事项案例目的第一