zoukankan      html  css  js  c++  java
  • poj2601

    可以推公式也可以二分,我不会推公式,所以二分。这题之所以可以二分,是因为它符合一个性质,这个性质是,当你确定的a1偏大,利用a1求出的a[n+1]就偏大,大于题目中给出的a[n+1]。同理,偏小则小于。

    View Code
    #include <iostream>
    #include
    <cstdio>
    #include
    <cstdlib>
    #include
    <cstring>
    #include
    <cmath>
    using namespace std;

    #define maxn 3100
    #define eps 1.0e-8

    int n;
    double a[maxn];
    double c[maxn];

    double cal(double a1)
    {
    a[
    1] = a1;
    for (int i = 2; i < n + 1; i++)
    a[i]
    = (a[i - 1] + c[i - 1]) * 2 - a[i - 2];
    return (a[n] + c[n]) * 2 - a[n - 1];
    }

    double binarysearch()
    {
    double l = -1000, r = 1000;

    while (abs(r - l) > eps)
    {
    double mid = (l + r) / 2;
    if (cal(mid) > a[n + 1] + eps)
    r
    = mid;
    else
    l
    = mid;
    }
    return l;
    }

    int main()
    {
    //freopen("t.txt", "r", stdin);
    scanf("%d", &n);
    scanf(
    "%lf%lf", &a[0], &a[n + 1]);
    for (int i = 1; i <= n; i++)
    scanf(
    "%lf", &c[i]);
    printf(
    "%.2f", binarysearch());
    return 0;
    }

  • 相关阅读:
    Pyton项目打包成exe文件
    App数据指标
    电商基础指标体系
    Matplotlib复杂作图
    Sklearn之聚类分析
    Seaborn可视化
    Matplotlib可视化2
    Matplotlib可视化1
    Pandas可视化
    Linux常用指令(3)
  • 原文地址:https://www.cnblogs.com/rainydays/p/2046809.html
Copyright © 2011-2022 走看看