hdu 2899 Strange fuction(二分+数学)
来源:互联网 发布:淘宝五金店铺代理 编辑:程序博客网 时间:2024/05/29 13:04
题目来源:hdu 2899 Strange fuction
Strange fuction
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4829 Accepted Submission(s): 3441
Problem Description
Now, here is a fuction:
F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 <= x <=100)
Can you find the minimum value when x is between 0 and 100.
Input
The first line of the input contains an integer T(1<=T<=100) which means the number of test cases. Then T lines follow, each line has only one real numbers Y.(0 < Y <1e10)
Output
Just the minimum value (accurate up to 4 decimal places),when x is between 0 and 100.
Sample Input
2
100
200
Sample Output
-74.4291
-178.8534
题目大意:
给出一个函数:F(x)=6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 <= x <=100);现在输入一个y值.(0 < Y <1e10),求此函数的最小值。
题目分析:
观察函数,我们可知,F(x)一阶导数为F’(x)=42 * x^6+48*x^5+21*x^2+10*x-y;而F’(x)中若不看y,则前面的式子为单增函数,当输入y值后,我们便可把y当做常数来处理,当y值大于前面式子的最大值,即F’(100)<0时,原函数F(x)单调递减,此时F(100)为最小值;而当y不大于前面的式子,即存在y使得F’(x)可以==0时,则我们可以知道,x取F’(x)==0的这个x值时,原函数F(x)取得最小值,在此处便需要使用二分来查找这个x值。
AC代码:
#include<stdio.h>#include<math.h>double F(double x) //将原函数分解为F(x)-y*x,此处求的是分解后的F(x)值 { return 6*pow(x,7.0)+8*pow(x,6.0)+7*pow(x,3.0)+5*pow(x,2.0);}double f(double x) //分解后的F'(x)的值 { return 42*pow(x,6.0)+48*pow(x,5.0)+21*pow(x,2.0)+10*pow(x,1.0);}int main(){ int n; double y; while(scanf("%d",&n)!=EOF) { while(n--) { scanf("%lf",&y); if(y>=F(100)) //此时原函数的导数不存在等于0的情况,即小于零 printf("%.4lf\n",F(100)-y*100); else { double mid,left=0,right=100; while(right-left>1e-8) //使用二分进行查找使得分解后的F(x)的导数等于0的x { mid=(left+right)/2; if(f(mid)<=y) left=mid; else right=mid; } printf("%.4lf\n",F(mid)-y*mid); } } } return 0;}
- HDU 2899 Strange fuction 二分+数学
- hdu 2899 Strange fuction(二分+数学)
- 2899 Strange fuction【二分+数学】
- Strange fuction HDU 2899 【二分】
- HDU 2899 Strange fuction [二分]
- Strange fuction 2899 (二分+数学求导)
- hdu - 2899 - Strange fuction(二分)
- HDU 2899 Strange fuction(二分或三分)
- HDU 2899 Strange fuction(二分||三分)
- HDU--杭电--2899--Strange fuction--二分
- HDU 2899 Strange fuction 二分 + 精度控制
- HDU 2899 Strange Fuction(二分查找)
- hdu 2899 Strange fuction 【二分,三分】
- hdu 2899 Strange fuction(导数+二分)
- hdu 2899 Strange fuction (求导 + 二分)
- HDU 2899 Strange fuction(二分)
- hdu 2899 Strange fuction (二分)
- HDU 2899 Strange fuction(二分||三分)
- HDU-4777 Rabbit Kingdom
- C++ 预处理、编译、汇编、链接
- UIImageView动画 、自定义View 和手势的简单实用 Tom 猫 全部功能实现
- 软件测试学习笔记2015/8/24
- POJ 1163 The Triangle
- hdu 2899 Strange fuction(二分+数学)
- 【cocos2d-x 3.7 飞机大战】 决战南海I (六) 保存玩家数据
- TextView属性
- HDOJ 2588 GCD(欧拉函数)
- 人间自有真情在
- 套接字编程简介
- 欧拉函数
- 【cocos2d-x 3.7 飞机大战】 决战南海I (七) 控制器的实现
- Linux系统启动流程