HDU1594find the max(简单的数学题)

来源:互联网 发布:2017网络效应题库 编辑:程序博客网 时间:2024/05/15 00:16
题意:
有一个离散函数f(x),x = {1, 2, ,,,,N},f(x)<2^31。现在要找出2个点i,j, 使得函数在这2点之间的点都在这2点连线下方,且此连线的斜率的绝对值越大越好。
原题http://acm.hdu.edu.cn/showproblem.php?pid=1594
题解:因为函数在这2点之间的点都在这2点连线下方,且此连线的斜率的绝对值越,所以所求间隔必为(minx ,minx+1);
错误分析:题目要求斜率绝对值最大;

#include<cstdio>#include<cmath>using namespace std;int f[100002];int main(){    int i,n,k,minx;    while(scanf("%d",&n)!=EOF)    {        scanf("%d%d",&f[1],&f[2]);        k=abs(f[2]-f[1]);        minx=2;        for(i=3;i<=n;i++)        {             scanf("%d",&f[i]);             if(abs(f[i]-f[i-1])>k)//斜率绝对值最大             {                  k=abs(f[i]-f[i-1]);                  minx=i;             }        }        printf("%d %d\n",minx-1,minx);    }    return 0;}


原创粉丝点击