hdu 2899

mxy终于学会求函数极值了。

先写一道板子。

 #include <bits/stdc++.h>
using namespace std;
typedef double db;
const db eps = 1e-;
const db INF = 1e100;
const db delta = 0.98;
int sign(db k){
if (k>eps) return ; else if (k<-eps) return -; return ;
}
int cmp(db k1,db k2){return sign(k1-k2);}
int t;db y;
db get(db x){
return *x*x*x*x*x*x*x+*x*x*x*x*x*x+*x*x*x+*x*x-y*x;
}
db x[];
db random(){
return (rand()&?:-)*rand()*1.0/;
}
void init(){
for(int i=;i<;i++) x[i]=abs(random())*;
}
db sa(){
db ans = INF;
db t=;
while (t>eps){
for(int i=;i<;i++){
db tmp = get(x[i]);
for(int j=;j<;j++){
db _x=x[i]+random()*t;
if(cmp(_x,)>=&&cmp(_x,)<=){
db f = get(_x);
if(tmp>f)
x[i]=_x;
}
}
}
t*=delta;
}
for(int i=;i<;i++)
ans=min(ans,get(x[i]));
return ans;
} int main(){
ios::sync_with_stdio(false);
scanf("%d",&t);
while (t--){
scanf("%lf",&y);
init();
printf("%.4f\n",sa());
}
}
上一篇:centos7添加并挂载新硬盘


下一篇:7、android的button如何平铺一张图片?