1 条题解

  • 0
    @ 2025-8-24 22:25:05

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar sxh2325
    壶关还能涨估值?!

    搬运于2025-08-24 22:25:05,当前版本为作者最后更新于2024-04-12 15:05:19,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    题目是要带入公式求最大跌幅。

    第一眼看到题目,我还以为是双指针,结果就 TLE 了......

    思路

    nn 最高能取到 106{\color{red}10^6},所以必须一次运行到位。我们可以以第一个数为第一个标准。当接下来的数是跌了时,就用一个变量加上跌的量;当接下来的数是涨了时,就用一个变量加上涨的量(减去差时涨为负)。如果变量为负,也就意味着对比原数是涨了,此时,刷新变量并把下一个标准定为使变量为负的那个数:

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    double p,a,b,c,d,ans=0,g,j,l,o,i=0,u;
    int main() {
    	long long k=1,n,h;
    	cin>>p>>a>>b>>c>>d>>n;	
    	l=p*(sin(a*k+b)+cos(c*k+d));//存储上一个股价 
    	for(k=2;k<=n;k++){
    		g=p*(sin(a*k+b)+cos(c*k+d));//带入公式 
    		if(i<0) i=0;//当股价超过标准时,刷新标准(i为用来累计跌(涨)的量) 
    		i+=l-g;//跌(涨)的量 
    		if(i>ans) ans=i;//存储最大跌幅	
    		l=g;
    	}
    	printf("%.6lf",ans);//差值小于10的-6次方(0.000001) 
    	return 0;
    }
    

    本蒟蒻第2次写题解,有什么不妥之处请各位大佬指正。

    • 1

    信息

    ID
    6052
    时间
    3000ms
    内存
    1024MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者