这道题其实是利用函数求导,判断求导后的函数是否大于零或者小于零,等于零情况,从而判断原函数的单调性,代入X求出函数的最小值。
模拟退火算法:

方法一:二分
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
const double esp=1e-8;
double y;
double f(double x){return 6*pow(x,7)+8*pow(x,6)+7*pow(x,3)+5*pow(x,2)-y*x;
}
double f_1(double x){return 42*pow(x,6)+48*pow(x,5)+21*pow(x,2)+10*x-y;
}
int main(){double x=0;int t;scanf("%d",&t);while(t--){scanf("%lf",&y);if(f_1(100.0)<=0){printf("%.4lf\n",f(100.0));continue;}else{double mid=0.0;double left=0.0,right=100.0;while((right-left)>=esp){mid=(left+right)/2;if(f_1(mid)<0){left=mid;}else{right=mid;}}printf("%.4lf\n",f(mid));}}return 0;
}
方法二:模拟退火算法
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<ctime>
#define esp 1e-11
#define T 0.997
using namespace std;
const int inf=0x3f3f3f3f;
const int maxx=105;
double y;
double FX1(double x){return x*x*x*x*x*x*x;
}
double FX2(double x){return x*x*x*x*x*x;
}
double FX(double x){return 6*FX1(x)+8*FX2(x)+7*(x*x*x)+5*x*x-y*x;;
}
double gd(double x){return (rand()*2-RAND_MAX)*x;
}
double ans;
double px;
void solve(double t){double x0=px,x;double pr=ans;while(t>esp){x=x0+gd(t);if(x>100)x=100;if(x<0)x=0;double ep=FX(x);if(ep<pr||exp((-ep+pr)/t)>rand()/((double)(RAND_MAX))){if(ans>ep){ans=ep;px=x;}x0=x;pr=ep;}t*=T;}
}
int main(){int t;srand(time(0));scanf("%d",&t);while(t--){scanf("%lf",&y);px=50;ans=FX(px);for(int i=1;i<=2;i++){solve(10000);}printf("%.4lf\n",ans);}return 0;
}

HDU2899(二分查找+or+模拟退火算法)相关推荐

  1. 【二分查找延伸--实际算法应用】数组类题目

    声明:博主是基于labuladong微信公众号文章模板驱动刷题,进行的自我刷题感悟和记录在此. 模板详情见labuladong微信公众号文章文末:原创于自己在此基础上的笔记.感悟.整合其它文献和自己的 ...

  2. java二分查找法_java算法之二分查找法的实例详解

    java算法之二分查找法的实例详解 原理 假定查找范围为一个有序数组(如升序排列),要从中查找某一元素,如果该元素在此数组中,则返回其索引,否则返回-1.通过数组长度可取出中间位置元素的索引,将其值与 ...

  3. 1.1.10 从二分查找BinarySearch开启算法学习之路---《java算法第四版》

    文章目录 0.前言 1.功能 2.示例 有两个名单tinyW.txt和tinyT.txt,将tinyT.txt名单中不在tinyW.txt的数据打印出来 ① 实现原理 ② 实现代码 ③ 性能分析 0. ...

  4. 七十六、Python | Leetcode二分查找和分治算法系列

    @Author:Runsen @Date:2020/7/4 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  5. codeforces 贪心+优先队列_算法基础04-深度优先搜索、广度优先搜索、二分查找、贪心算法...

    深度优先搜索DFS.广度优先搜索BFS 比较 拿谚语打比方的话,深度优先搜索可以比作打破砂锅问到底.不撞南墙不回头:广度优先搜索则对应广撒网,多敛鱼 两者没有绝对的优劣之分,只是适用场景不同 当解决方 ...

  6. python 二分查找_LeetCode基础算法题第120篇:二分查找算法

    技术提高是一个循序渐进的过程,所以我讲的leetcode算法题从最简单的level开始写的,然后> 到中级难度,最后到hard难度全部完.目前我选择C语言,Python和Java作为实现语言,因 ...

  7. 深度搜索和广度搜索领接表实现_算法基础04-深度优先搜索、广度优先搜索、二分查找、贪心算法...

    深度优先搜索DFS.广度优先搜索BFS 比较 拿谚语打比方的话,深度优先搜索可以比作打破砂锅问到底.不撞南墙不回头:广度优先搜索则对应广撒网,多敛鱼 两者没有绝对的优劣之分,只是适用场景不同 当解决方 ...

  8. 二分查找、分治算法——汉诺塔问题

    一.二分查找算法(非递归) 1)二分查找法只适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后在进行查找 2)二分查找算法的运行时间为对数时间,即查找到需要的目标位置最多只需要log以2为 ...

  9. 二分查找的迭代算法和递归算法

    package org.sxt.c; /** 二分查找* 迭代方法* 递归方法* */public class BinarySearch {public static int binarySearch ...

最新文章

  1. 华为自动驾驶实车实路测试视频曝光!徐直军:比特斯拉好多了
  2. 双线路切换-冗余备份实验
  3. 【OpenCV 例程200篇】77. OpenCV 实现快速傅里叶变换
  4. 多容器,Nginx容器灵活切换PHP版本!同时运行多个PHP容器
  5. (转)Spring使用AspectJ进行AOP的开发:注解方式
  6. C++友元函数简单示例
  7. 【安装包】WinSCP
  8. Windows版JMeter下载安装
  9. 六石编程学:如何整合两个项目的代码
  10. 数字冰雹智慧城市大数据可视化分析决策系统
  11. IDEA中下载mybatis插件mybatis plugins 离线版安装
  12. ArcCatalog导出数据库中shapefile
  13. jquery ajax 回调函数里面再执行ajax函数,jQuery AJAX 和其回调函数
  14. 英文文献调研方法综述
  15. sun存储的串口连接管理_修改SUN设备管理IP的步骤
  16. 报销差率费与会计借贷理解
  17. 【线代NumPy】第五章 - 行列式课后练习 | 伴随矩阵求逆 | Cramer公式求联立方程 | 简述并提供代码
  18. linux 存储映射lun 给_LINUX系统下添加映射存储LUN
  19. HI3559A系统卡死问题-修复
  20. seo模拟点击软件_SEO快排

热门文章

  1. 汇编语言 第3版 王爽 检测点6.1自己的答案
  2. 一文读懂图像局部特征点检测算法
  3. 一,初次接触html+css需要注意的小问题
  4. h5做的app和原生app的区别
  5. 【Centos】利用Vultr服务器和namesilo布网
  6. OpenStack入门修炼之实战--实现阿里云ESC多FLAT网络(21)
  7. 《Haskell并行与并发编程》——第2章,第2.1节惰性求值和弱首范式
  8. 《JUnit实战(第2版)》—第2章2.4节用Suite来组合测试
  9. 最牛X的GCC 内联汇编
  10. 树的分类,特性与遍历