三分搜索
2015-07-10 10:14
155 查看
二分所查找的序列是单调的,把区间分为相等的两段,三分所查找的序列是凸型或凹形函数,为了查找函数的最值。
hdu 4355
hdu 4355
#include <iostream> #include <string.h> #include <stdio.h> #include <math.h> #include <algorithm> using namespace std; const double eps=1e-5; const int MAX=50010; double p[MAX],w[MAX]; int n; double equ(double x) { double ans=0; for(int i=0;i<n;i++) { double S=fabs(p[i]-x); ans+=w[i]*S*S*S; } return ans; } double ternarySearch(double l,double r) { while(r-l>eps) { double ll=(2*l+r)/3; double rr=(l+2*r)/3; double ans1=equ(ll); double ans2=equ(rr); if(ans1>ans2) l=ll; else r=rr; } return l; } int main() { int T,i; scanf("%d",&T); for(int t=1;t<=T;t++) { scanf("%d",&n); for(i=0;i<n;i++) scanf("%lf%lf",&p[i],&w[i]); double l=p[0],r=p[n-1]; double tmp=ternarySearch(l,r); printf("Case #%d: %.0lf\n",t,equ(tmp)); } return 0; }
相关文章推荐
- 数据窗口逐层过滤的实现
- ABAP Range
- Ubuntu 的 基本使用方法
- TestNg依靠先进的采用强制的依赖,并依赖序列的------TestNg依赖于特定的解释(两)
- spring学习之@ModelAttribute运用详解
- 自定义toast
- NDK的安装(NDK Programmer's Guide-Getting Started with the NDK)
- SAP 调用外部程序的方法
- 1、核心文件目录修改 (finecms --ci 框架的cms 修改)
- 为arm平台构建linux内核树
- 多线程之join方法 (转)
- LeetCode "Palindrome Linked List"
- oauth2.0在监控宝项目中的应用一例
- 跳过设置向导方法
- Apache实现负载均衡
- 13家中国域名商(国际域名)解析量报告(7月7日)
- PHP框架
- [leetcode][list] Palindrome Linked List
- Java基础之理解Annotation
- 2014上海全国邀请赛(hdu 5090 - 5099)dp+线段树+拓扑排序+bfs(状态压缩)