「一本通 1.2 例 3」曲线

该问题是一个关于计算多个二次函数在特定区间[0,1000]的最大值函数的最小值的编程题。使用三分法来寻找这个最小值,程序读取函数参数,然后通过比较最大值函数在不同点的值来逐步缩小区间,直到找到最小值并输出,结果精确到小数点后四位。
摘要由CSDN通过智能技术生成

题目描述

明明做作业的时候遇到了 n n n 个二次函数 S i ( x ) = a x 2 + b x + c S_i(x)= ax^2 + bx + c Si(x)=ax2+bx+c,他突发奇想设计了一个新的函数 F ( x ) = max ⁡ { S i ( x ) } , i = 1 … n F(x) = \max\{S_i(x)\}, i = 1\ldots n F(x)=max{Si(x)},i=1n

明明现在想求这个函数在 [ 0 , 1000 ] [0,1000] [0,1000] 的最小值,要求精确到小数点后四位,四舍五入。

输入格式

输入包含 T T T 组数据,每组第一行一个整数 n n n

接下来 n n n 行,每行 3 3 3 个整数 a , b , c a, b, c a,b,c ,用来表示每个二次函数的 3 3 3 个系数。注意:二次函数有可能退化成一次。

输出格式

每组数据输出一行,表示新函数 F ( x ) F(x) F(x) 的在区间 [ 0 , 1000 ] [0,1000] [0,1000] 上的最小值。精确到小数点后四位,四舍五入。

样例

输入

2
1
2 0 0
2
2 0 0
2 -4 2

输出

0.0000
0.5000

数据范围与提示

对于 50 % 50\% 50% 的数据, 1 ≤ n ≤ 100 1 \leq n \leq 100 1n100

对于 100 % 100\% 100% 的数据, 1 ≤ T ≤ 10 , 1 ≤ n ≤ 1 0 5 , 0 ≤ a ≤ 100 , 0 ≤ ∣ b ∣ ≤ 5000 , 0 ≤ ∣ c ∣ ≤ 5000 1 \leq T \leq 10, 1 \leq n \leq 10^5, 0 \leq a \leq 100, 0 \leq |b| \leq 5000, 0 \leq |c| \leq 5000 1T10,1n105,0a100,0b5000,0c5000

思路

标准三分,不过多赘述。

code

#include <bits/stdc++.h>

using namespace std;

const double eps = 1e-8;
int n;
double l, r, mid1, mid2;

struct node
{
    double a;
    double b;
    double c;
} ans[100005];

double f(double x) {
    double cnt = -1.00000000;

    for (int i = 0; i < n; i++) {
        cnt = max(cnt, ans[i].a * x * x + ans[i].b * x + ans[i].c);
    }

    return cnt;
}
int main() {
    int v;
    cin >> v;

    while (v--) {
        cin >> n;

        for (int i = 0; i < n; i++)
            cin >> ans[i].a >> ans[i].b >> ans[i].c;

        l = 0.0;
        r = 1000.0;
        while (l + eps <= r) 
		{
            mid1 = l + 1.0 * (r - l) / 3;
            mid2 = r - 1.0 * (r - l) / 3;
            if (f(mid1) < f(mid2)) r = mid2;
            else if (f(mid1) > f(mid2)) l = mid1;
            else 
			{
                l = mid1;
                r = mid2;
            }
        }
        printf("%.4lf\n", f(r));
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在「一本 1.3 5」中,问题是关于重量的。根据题目,一个名叫小明的男孩站在一个测量体重的体重秤上。小明告诉我们他的体重是62千克。但是,老师告诉他他的测量结果有误。我们需要找出小明实际的体重是多少。 为了解决这个问题,我们需要知道秤的正确体重。根据题目,秤的刻度被调整过,而且没有提供正确的测量结果。所以我们需要另一个已知的重物来进行测量。 解决问题的关键是:将一个已知重物放在体重秤上来校正秤的刻度。在题中,我们可以将一个10千克的重物放在秤上,并且秤显示它的重量是8千克。这意味着体重秤给出的重量少了2千克。 然后,我们再次称量小明的体重,结果为62千克。由于秤显示的重量少了2千克,小明实际的体重应该是62 + 2 = 64千克。 综上所述,「一本 1.3 5」中,小明的实际体重应该是64千克。 ### 回答2: 《一本 1.3 5》中的问题提到了物体的重量。在物理学中,重量被定义为物体受到地球引力的作用而产生的力大小。重量常用牛顿(N)作单位。 根据牛顿第二定律,物体的质量乘以加速度等于物体所受到的力。因此,可以使用下式计算物体的重量: 重量 = 质量 × 加速度 质量是物体所含有的物质的量度,常使用千克(kg)作单位。而加速度在地球上常被近似地看作是9.8 m/s²。因此,可以使用上述公式计算物体在地球上的重量。 如,如果一个物体的质量是10千克,那么它在地球上的重量可以过将质量乘以加速度来计算: 重量 = 10千克 × 9.8 m/s² = 98牛顿 所以,当一个物体的质量为10千克时,它在地球上的重量是98牛顿。 需要注意的是,重量是一个矢量量,它既有大小也有方向。在地球上,重力始终指向地心,所以地球上物体的重量方向往往指向地心。 总之,《一本 1.3 5》中的问题涉及了物体的重量,它的大小可以过物体的质量乘以加速度来计算,单位是牛顿。 ### 回答3: 「一本 1.3 5」的题目是关于重量的问题。 根据题目,小明和小红在街道上拾到一只大小相同的鸟笼,但是小明觉得鸟笼很重,而小红却认为鸟笼很轻。于是他们决定使用各自拥有的小物体来比较鸟笼的重量。 小明拿出一张纸巾,将纸巾摆在天秤左边,然后把鸟笼放在纸巾的右边。他发现纸巾的右边离天秤的中心更远,所以推断鸟笼比纸巾重。 小红则取来一张时间表,并将其放在天秤的左边,再将鸟笼放在时间表的右边。她发现时间表的右边离天秤的中心更近,因此认为鸟笼比时间表轻。 这两种方法都是利用天秤平衡的原理来推测鸟笼的重量。根据题目描述,小明和小红以不同的方式进行比较,因此得出了不同的结论。 这个题目过简单的物理实验,引导我们思考物体的重量是如何影响天秤平衡的。它提醒我们,在进行物质比较时,需要仔细观察和分析实验结果,以得出准确的结论。同时,它也让我们明白了物体的重量是相对的,而不是绝对的。 过这个子,我们可以理解到学习科学是需要进行实验和观察的。只有过实践,我们才能真正理解并应用所学的知识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值