uva 10883 - Supermean(组合数学+数值优化)

题目链接:uva 10883 - Supermean

题目大意:给出n个数,每相邻两个数求平均数,将得到n-1个数,这n-1个数每相邻的两个数求平均值,将得到n-2个数。一次类推,求最后得到的那个数的值。

解题思路:类似与杨辉三角,第i个数起始被加了C(n?1i?1)次。总共有2n?1个数相加。但是因为n有50000,250000根本存不下,所以借助log函数。

例:

中间的2可以通过蓝色和红色两条路径影响最后的答案。

#include <cstdio>
#include <cstring>
#include <cmath>

int main () {
    int cas;
    scanf("%d", &cas);
    for (int i = 1; i <= cas; i++) {
        int n;
        double ans = 0, a, c = 0;

        scanf("%d", &n);
        for (int j = 0; j < n; j++) {
            scanf("%lf", &a);
            double tmp = log2(fabs(a));

            if (j) {
                c += log2(double(n-j)/j);
                tmp += c;
            }

            if (a < 0)
                ans -= pow(2, tmp - n + 1);
            else
                ans += pow(2, tmp - n + 1);
        }

        printf("Case #%d: %.3lf\n", i,  ans);
    }
    return 0;
}

uva 10883 - Supermean(组合数学+数值优化)

时间: 2024-08-05 03:22:53

uva 10883 - Supermean(组合数学+数值优化)的相关文章

UVA 10883 - Supermean(组合数学+数值优化)

题目链接:10883 - Supermean 题意:求超级平均数,就是相邻两个算一个平均数,直到剩下一个数,求数值. 思路:画图很容易推断出公式.就拿最后一组样例来说 1     2      3      4      5 1.5  2.5   3.5   4.5 2       3      4 2.5   3.5 3 观察可以发现都是从顶到底,看又几条路线,就有几次,然后最后每个数字在除上相应次数的2,那几条路线就是C(n - 1, [0 - n - 1])的组合数. 所以ans = su

UVA - 10883 Supermean

Description Problem F Supermean Time Limit: 2 second "I have not failed. I've just found 10,000 ways that won't work." Thomas Edison Do you know how to compute the mean (or average) of n numbers? Well, that's not good enough for me. I want the s

UVA 10883 Supermean 上下取对数防溢出

题目链接:点击打开链接 溢出了半天,觉累不爱 #include<math.h> #include<iostream> #include<stdio.h> using namespace std; #define ll int int main(){ ll Cas= 1, T; cin>>T; while(T--){ ll n; cin>>n; double sum = 0, a; double hehe = 0; for(ll i = 0; i

数值优化(Numerical Optimization)学习系列-文件夹

概述 数值优化对于最优化问题提供了一种迭代算法思路,通过迭代逐渐接近最优解,分别对无约束最优化问题和带约束最优化问题进行求解. 该系列教程能够參考的资料有 1. <Numerical Optimization 2nd>–Jorge Nocedal Stephen J. Wright 2. <凸优化>–Stephen Boyd 3. <非线性最优化基础>–Masao Fukushima(林贵华译) 4. <非线性最优化理论与方法>–王宜举 5. 凸优化在线课程

Uva 11609 - Team ( 组合数学 + 二项式性质 + 快速幂取模 )

Uva 11609 - Team ( 组合数学 + 二项式性质 + 快速幂取模 ) 题意: 有N个人,选一个或多个人参加比赛,其中一名当队长,有多少种方案? (如果参赛者完全相同但是队长不同,也算是一种情况) [ 1<=n <= 10^9 ] 分析: 这题要用到组合式公式的性质 转化之后快速幂取模轻松搞定之 代码: //Uva 11609 - Team /* 组合数公式 + 二项式系数性质 + 快速幂 手动自己推 -> F[n] = C(n,1)*1 + C(n,2)*2 + C(n,n

uva 10537 Toll! Revisited(优先队列优化dijstra及变形)

Toll! Revisited 大致题意:有两种节点,一种是大写字母,一种是小写字母.首先输入m条边,当经过小写字母时需要付一单位的过路费,当经过大写字母时,要付当前财务的1/20做过路费.问在起点最少需要带多少物品使到达终点时还有k个物品.当有多条符合条件的路径时输出字典序最小的一个. 思路:已知终点的权值,那么可以从终点向前推.求终点到起点的最短路径,然后按字典序打印路径. 比较难处理的是:向前推时前驱节点的权值计算.列个方程算算就可以了,主要时不能整除的情况. 计算前驱结点dis值的时候,

【数值优化】基础

"数值"优化:设置算法时,要考虑舍入误差. 数值优化问题分类: 无约束优化  VS 约束优化 线性规划.目标函数和约束函数都是线性的 二次规划.目标函数为二次的,约束函数为线性. 凸优化.目标函数为凸的,约束函数为线性的. 局部解 VS 全局解 连续   VS  离散 确定  VS  随机 无约束优化问题基础 解的一阶必要条件: 解的二阶必要条件: 解的二阶充分条件: 迭代算法(如何构造下一个迭代点).终止条件 一阶.二阶.直接算法 直接算法无需使用导数,一阶算法需要使用一阶导数,二阶

数值优化:计算基本理论

1. 优化问题 最一般的优化问题的表述是这样的: 求解等式约束 $\boldsymbol{g}(\boldsymbol{x})=0$ 和不等式约束 $\boldsymbol{h}(\boldsymbol{x})\leq 0$ 下使得取得 $\min f(\boldsymbol{x})$ 的解 $\boldsymbol{x}$ 其中 $f:\mathbb{R}^n\Rightarrow \mathbb{R}$,$\boldsymbol{g}:\mathbb{R}^n\Rightarrow \mat

UVa 10003 (可用四边形不等式优化) Cutting Sticks

题意: 有一个长为L的木棍,木棍中间有n个切点.每次切割的费用为当前木棍的长度.求切割木棍的最小费用. 分析: d(i, j)表示切割第i个切点到第j个切点这段所需的最小费用.则有d(i, j) = min{d(i, k) + d(k, j)} + a[j] - a[i]; ( i < k < j ) 最后一项是第一刀的费用. 时间复杂度为O(n3) 最后还要注意一下输出格式中整数后面还要加一个句点. 1 //#define LOCAL 2 #include <iostream>