1 条题解

  • 0
    @ 2026-8-11 14:36:31

    专栏食用更佳

    题意

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

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

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

    做题思路

    • 使用循环计算每个 kk 对应的股价,并计算相邻股价之差。

    • 维护一个变量记录找到的最大下跌幅度。

    • 如果最大下跌幅度为正值,则输出该值;否则输出 00

    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;
    }
    
    • 1

    信息

    ID
    5771
    时间
    3000ms
    内存
    1024MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者