Hdu 4498 自适应辛普森积分
来源:互联网 发布:外汇智能交易软件 编辑:程序博客网 时间:2024/05/16 08:36
题意:求100个二次函数最小值在区间[0,100]的弧长(y=100也可以看做退化的二次函数)
做法:n方枚举交点,把交点排序后分段,每段用弧长公式积分,积不出来就辛普森一下就行了。我一开始naive地直接辛普森,发现挂了,然后强行分成100段,还是挂了,这个故事告诉我们暴力那啥不可取,要相信科学(辛普森只能积优美的连续函数)。
代码:
#include <bits/stdc++.h>using namespace std;int n, t, p;double A[105], B[105], C[105];vector<double>vs;int getbest(double x){ int pos=0; for(int i=1;i<=n;i++){ if(A[i]*x*x+B[i]*x+C[i]<A[pos]*x*x+B[pos]*x+C[pos])pos=i; } return pos;}void add(double a, double b, double c){ double delta=b*b-4*a*c; if(delta<0)return ; double p1=(-b+sqrt(delta))/2/a; double p2=(-b-sqrt(delta))/2/a; if(p1>0&&p1<100)vs.push_back(p1); if(p2>0&&p2<100)vs.push_back(p2);}double f(double x){ return sqrt(1+(2*A[p]*x+B[p])*(2*A[p]*x+B[p]));}double simpson(double a, double b){ double c=(a+b)/2; return (f(a)+4*f(c)+f(b))*(b-a)/6;}double asr(double a, double b, double A, double eps){ double c=(a+b)/2; double L=simpson(a, c), R=simpson(c, b); if(fabs(L+R-A)<=15*eps)return L+R+(L+R-A)/15; return asr(a, c, L, eps/2)+asr(c, b, R, eps/2);}double asr(double a, double b, double eps){ return asr(a, b, simpson(a, b), eps);}int main(){ cin>>t; while(t--){ vs.clear(); cin>>n; A[0]=0, B[0]=0, C[0]=100; for(int i=1;i<=n;i++){ int k, a, b; cin>>k>>a>>b; A[i]=k; B[i]=-2*k*a; C[i]=k*a*a+b; } for(int i=0;i<=100;i++){ for(int j=i+1;j<=100;j++){ add(A[i]-A[j], B[i]-B[j], C[i]-C[j]); } } vs.push_back(0); vs.push_back(100); sort(vs.begin(), vs.end()); double siz=vs.size(); double ans=0; for(int i=0;i<siz-1;i++){ double l=vs[i], r=vs[i+1]; double mid=(l+r)/2; if(r-l<=1e-8)continue; p=getbest(mid); ans+=asr(l, r, 1e-8); } printf("%.2f\n", ans); }}
阅读全文
0 0
- Hdu 4498 自适应辛普森积分
- Hdu 1724 Ellipse (自适应辛普森积分法)
- HDU 1724 Ellipse 自适应辛普森积分
- HDU 1724 Ellipse (自适应辛普森积分)
- HDU 1724 Ellipse (自适应辛普森积分模板题)
- 自适应辛普森积分
- 自适应辛普森积分算法
- 自适应辛普森积分
- hdu 1724 自适应 simpson 算法 求积分
- HDU 1724 Ellipse 【自适应Simpson积分】
- HDU 1724 自适应Simpson积分 解题报告
- hdu 1724 Ellipse(自适应Simpson积分) (模板)
- 【自适应Simpson积分】hdu 1724 Ellipse
- 自适应辛普森公式求积分
- 辛普森积分(自适应辛普森公式求积分)
- hdu 1724 辛普森积分
- HDOJ-4498 Function Curve(自适应Simpson积分)
- BZOJ 1502 月下柠檬树 自适应辛普森积分
- ④写给后端工程师的JavaScript教程——js有趣的非数字值NaN、Infinity
- 计算机文化学习笔记5
- Mac OSX 无共享的密钥情况下连接基于L2TP协议的VPN
- 进程池流程
- solr 对数据添加索引
- Hdu 4498 自适应辛普森积分
- Windows学习(008)--线程(一)
- 关于apk打包,报java.lang.ClassCastException:com.google.gson.internal.LinkedTreeMap cannot be cast to 的错误
- sql获取分组后的第二条数据 group by limit
- testng测试报告设置
- centos7搭建clonezilla PXE启动(不需要配置dhcp服务器)
- ASP.NET MVC BootstrapDialog
- 反编译App
- unity 高版本ImageTarget识别图开始是空白的解决办法