题解:P6904 [ICPC2015 WF] Amalgamated Artichokes

· · 题解

专栏食用更佳

题意

这道题目需要计算在给定序列的股价模型中,最大的价格下跌幅 度。股价模型由以下方程给出:

\operatorname {price}(k) = p \cdot (\sin (a \cdot k+b) + \cos (c \cdot k+d) + 2)

题目要求找出最大的逆序对。

做题思路

code:

#include<bits/stdc++.h>
using namespace std;
double pr[1000010],ans;
int p,a,b,c,d,n,maxi;
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin>>p>>a>>b>>c>>d>>n;
    for(int i=1;i<=n;i++)
        pr[i]=p*(sin(a*i+b)+cos(c*i+d)+2);
    maxi=1;
    for(int i=2;i<=n;i++){
        if(pr[maxi]<pr[i])maxi=i;
        else ans=max(ans,pr[maxi]-pr[i]);
    }
    printf("%.8lf",ans);
    return 0;
}