hdu--2899--Strange fuction
来源:互联网 发布:c语言五子棋游戏源代码 编辑:程序博客网 时间:2024/05/16 08:02
一道简单的三分求最值题.
对F[x]进行求导得:F'[x]=42*x^6+48*x^5+21*x^2+10*x-y;
因为f(x)=42*x^6+48*x^5+21*x^2+10*x,在[0,100]上是增函数,
所以F'[x]=42*x^6+48*x^5+21*x^2+10*x-y,至多只能有一个零点,
所以可以确定F[x]在[0,100]上可能是单调函数或凹函数,所以可以用
三分求解这个函数的最小值。
但经过上面分析后,我们发现其实也可以按y值分类讨论;当F[x]单调时,直接输出结果
,当F[x]为凹函数时,二分求出其导函数的零点,则零点对应的函数值就是我们要求的最小值。
这个思路对于代码二
代码如下:
#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;double y;double f(double x){ return 6*pow(x,7.0)+8*pow(x,6.0)+7*pow(x,3.0)+5*pow(x,2.0)-y*x; }int main(){ int t; cin>>t; while(t--) { cin>>y; double first=0.0,last=100.0; while(last-first>1e-6) { double mid=(first+last)/2; double midmid=(mid+last)/2; if(f(mid)>f(midmid)) first=mid; else last=midmid; } double ans=f((first+last)/2); printf("%.4f\n",ans); } return 0;}
代码二:
<span style="font-size:18px;">//二分求解浮点型方程 #include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;double y;double f(double x){ return 6*pow(x,7.0)+8*pow(x,6.0)+7*pow(x,3.0)+5*pow(x,2.0)-y*x;}double f1(double x){ return 42*pow(x,6.0)+48*pow(x,5.0)+21*pow(x,2.0)+10*x; }int main(){ int t; double ans; cin>>t; while(t--) { cin>>y; if(y<=0) { ans=0.0; printf("%.4f\n",ans); continue; } if(y>=f1(100.0)) { ans=f(100.0); printf("%.4f\n",ans); continue; } double first=0.0,last=100.0; while(last-first>=1e-7) { double mid=(first+last)/2; if(f1(mid)<=y) first=mid+1e-10; else last=mid-1e-10; } ans=f((first+last)/2); printf("%.4f\n",ans); } return 0;} </span>
0 0
- 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 2899 Strange fuction
- HDU 2899 Strange fuction
- HDU 2899 Strange fuction
- hdu 2899 Strange fuction
- Strange fuction ----HDU 2899
- hdu 2899 Strange fuction
- linux ip route 命令详细解释
- JAVA判断当前时间是上午am还是下午pm
- WebAPI
- hadoop第一个程序PutMerge
- myeclipse安装svn插件的多种方式
- hdu--2899--Strange fuction
- Head First Java 十 十一
- Linux学习记录
- hibernate flush 缓存
- Ubuntu下通过SSH转发X窗口需要具备的条件
- vs2010编辑C语言项目
- Android:Android开发指南-窗口小部件(App Widgets)
- VC 操作Execl总结
- DatagramPacket与DatagramSocket