World Finals 2015简要题解

来源:互联网 发布:国产浏览器知乎 编辑:程序博客网 时间:2024/06/06 08:53

A.Amalgamated Artichokes

题目链接

https://icpc.kattis.com/problems/artichoke

题目大意

定义数列price,其中

price(k)=p(sin(ak+b)+cos(ck+d)+2)

price(i)price(j)(i<j)的最大值,若最大值小于0,输出0

思路

直接暴力求出每一项的值,对于price(i)而言,用[1,i1]中的最大值减去price(i)来更新答案即可。前缀的最大值需要时刻更新维护。

代码

#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <algorithm>#include <cmath>#define MAXN 1100000using namespace std;int n;double p,a,b,c,d;double maxf=-1e20,minf=1e20;double ans=-1e20;int main(){    scanf("%lf%lf%lf%lf%lf%d",&p,&a,&b,&c,&d,&n);    for(int i=1;i<=n;i++)    {        double f=p*(sin(a*i+b)+cos(c*i+d)+2);        if(i>1) ans=max(ans,maxf-f);        maxf=max(maxf,f);        minf=min(minf,f);    }    if(ans<1e-6) printf("0\n");    else printf("%lf\n",ans);    return 0;}
0 0
原创粉丝点击