zoukankan      html  css  js  c++  java
  • Multivariate function (第三次积分赛)

    Multivariate function
    描述
    这里写图片描述
    输入
    第一行一个整数T,表示T组测试数据 (1≤T≤10).
    每组数据第一行一个整数n(4≤n≤1000).
    第二行 n个浮点数: X1,X2X3......Xn(1<=Xi<=1000000)X1,X2X3......Xn(1<=Xi<=1000000)

    输出
    输出最大值 y,保留三位小数.
    输入样例 1
    2
    4
    1.0 2.0 3.0 4.0
    5
    1.6 2.6 7.1 2.3 2.6

    输出样例 1
    0.167
    1.530
    首先我们将题意进行转化

    y=max(XjXpXkXiXi+Xj)y=max(Xj∗XpXk−XiXi+Xj)


    然后 O(n2)XpXkO(n2)预处理XpXk ,最后遍历Xi,XjXi,Xj,就可以了时间复杂度
    O(n2)O(n2) 题意的数据为1000没有超
    AC code:

    #include <cstdio>
    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #include <queue>
    
    using namespace std;
    
    const int maxn = 1e3+5;
    const double INF = 1.0*0x7f7f7f7f;
    
    double v[maxn],vis[maxn],per[maxn];
    
    int main(){
        int t; cin>>t;
        while(t--)
        {
            int n; scanf("%d",&n);
            for (int i = 1;i<=n;i++) {
                scanf("%lf",&v[i]);
                //printf("v[%d] = %lf
    ",i,v[i]);
            }
            for (int i = n-1;i>=1;i--) {
                double minn = INF;
                for (int j = i+1;j<=n;j++) {
                    minn = min(minn,v[j]);
                }
                //printf("minn = %lf
    ",minn);
                vis[i] = v[i]/minn;
                //printf("vis[%d] = %lf
    ",i,vis[i]);
            }
            double maxx = -INF;
            for (int i = n-1;i>=1;i--) {
                maxx = max(maxx,vis[i]);
                per[i] = maxx;
                //printf("per[%d] = %lf
    ",i,per[i]);
            }
            double ans = -INF;
            for (int i = 1;i<=n-3;i++) {
                for (int j = i+1;j<=n-2;j++) {
                    ans = max(ans,(v[j]*per[j+1]-v[i])/(v[i]+v[j]));
                }
            }
            printf("%.3lf
    ",ans);
        }
        return 0;
    }
    
  • 相关阅读:
    Java基础
    Java 基础
    Java基础
    Java基础
    web 学习随记(1)
    jdk8-》List去重
    JVM-调优方案
    JUC_02 AQS工作原理
    Synchronized-可重入锁原理
    JUC_01 线程阻塞、唤醒三种方式
  • 原文地址:https://www.cnblogs.com/Nlifea/p/11745966.html
Copyright © 2011-2022 走看看