Strange Function

[ HDU - 2899 ]

题目大意:

函数 F(x) = 6x7 + 8x6 + 7x3 + 5x2 - yx, 其中x的范围是0 ≤ x ≤ 100.
输入y值,输出F(x)的最小值

模拟退火算法

模拟退火就是类似于物体降温的概率,来进行多次搜索迭代

在迭代过程中,模拟退火算法随机选择下一个状态,有两种可能

  1. 新状态比原来状态更优,那么接受这个新状态
  2. 新状态更差,那么以一定的概率接受该状态,不过这个概率应该随着时间的推移逐渐降低

模拟退火算法的主要步骤如下:

  1. 设置一个初始的温度T
  2. 温度下降,状态转移。从当前温度按降温系数下降到下一个温度,在新的温度计算当前状态
  3. 如果温度降到设定的温度下界,程序停止

题解代码

#include<bits/stdc++.h>
using namespace std;const double eps = 1e-8;    // 终止温度double y;
double func(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 solve(void)
{double T = 100;         // 初始温度double delta = 0.98;    // 降温系数double x = 50.0;        // x的初始值double now = func(x);   // 计算初始函数值double ans = now;       // 返回值while (T > eps) {int f[2] = {1, -1};double newx = x + f[rand() % 2] * T;    // 按概率改变x,随t的降温而减少if (newx >= 0 && newx <= 100) {double next = func(newx);ans = min(ans, next);if (now - next > eps) {x = newx;now = next;}}T *= delta;}return ans;
}int main(void)
{int cas;scanf("%d", &cas);while (cas--) {scanf("%lf", &y);printf("%.4lf\n", solve());}return 0;
}

模拟退火 HDU - 2899 Strange Function相关推荐

  1. Tutorial of Codeforces Round 729 (Div.2) C. Strange Function

    C. Strange Function 题意 定义一个f(x)为最小的正整数使这个正整数不被x整除,给出一个正整数n,1<=n<=1e16,让求 ∑ i = 1 n f ( i ) \su ...

  2. CF1542C Strange Function

    CF1542C Strange Function 原题链接 题意: 这里f[i]表示不是i因子的最小数.比如f[1]=2,f[2]=3,f[3]=2- 题目给一个n,求出 ∑ i = 1 n \sum ...

  3. hdu 2988 Strange fuction【模拟退火】

    计算:给出y ,    的最小值 wa到哭啊,简直上火了,是板子没有套对, nex=now+T*i;//新解 T*i是变化的范围加上原先的才是新解, 还有精确度,因为评估函数要平方,所以要高一些 最终 ...

  4. 【HDU - 2899】 Strange fuction(二分或三分,求导)

    题干: 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 fi ...

  5. HDU 6156 Palindrome Function 数位DP

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6156 题目描述: 求L~R所有的数的l~r进制的f(x), f(x) = 当前进制 如果回文串, f ...

  6. 【HDU - 5875】Function(线段树,区间第一个小于某个数的数 或 RMQ二分)

    题干: The shorter, the simpler. With this problem, you should be convinced of this truth.        You a ...

  7. HDU A strange lift

    A strange lift Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Tota ...

  8. hdu 5597GTW likes function(欧拉函数)

    题目链接:[hdu 5597] f(n)=sum((-1)^k * 2^(2n-2k) * C(k, 2n-k+1))   0<=k<=n 这个公式化简之后就是f(x) = x+1 简单证 ...

  9. hdu 2824The Euler function

    题目链接 快速求出a到b之间所有数的欧拉函数. 一个一个求肯定是不行的, 我们知道欧拉函数的公式为phi(n) = n*(1-1/i1)*(1-1/i2).......i1, i2为素因子. 那么我们 ...

最新文章

  1. 【opencv】(6) 图像轮廓处理
  2. 用C语言解“爬动的蠕虫”题
  3. eclipse集成tomcat运行web时提示引入jar包的类找不到的解决办法
  4. ORCFILE,ParquetFile,CubeFile使用场景区别
  5. Transformer 模型详解
  6. java读取 png_如何让java的ImageBuffer正确读取PNG文件?
  7. C++默认构造函数的一点说明
  8. myeclipse导入maven工程
  9. 频率计设计——电路部分
  10. 【Linux】一步一步学Linux——egrep命令(50)
  11. myeclipse2013 jad反编译插件安装
  12. 【转】 Pro Android学习笔记(八一):服务(6):复杂数据Parcel
  13. 阿里巴巴confont项目的使用
  14. oracle触发器和存储过程的格式
  15. 用Scrapy框架爬取校花网所有校花图片
  16. SpringBoot优雅停机的正确姿势!
  17. 【paper-note4】Reconfiguring the Imaging Pipeline for Computer Vision
  18. 每个人心中都是有那一颗朱砂痣,不是美人却是美食
  19. SharePoint 2010 类似人人网站内信功能实施
  20. Vuex框架原理与源码分析

热门文章

  1. Python 14.1 TCP/IP协议简介
  2. 【转】statfs获得硬盘使用情况 模拟linux命令 df
  3. 网络管理员比赛回顾01-基本操作和简单vlan
  4. 终端软件升级功能开发_5个很棒的终端技巧可帮助您升级为开发人员
  5. clojurescript_为什么ClojureScript在NPM上如此出色
  6. dhcp动态主机配置协议
  7. 线性回归预测PM2.5值
  8. 微信小程序-锚点定位+内容滑动控制导航选中
  9. Hyperledger Grid:一个用于分布式供应链解决方案的框架
  10. 人工智能--野人过河