hdu 4752
计算几何+数值计算的题目;
要用到辛普森积分,没有学过~~~
参考学习了acm_Naruto大神 的代码!
代码:
#include<cstdio>
#include<cmath>
#include<algorithm>
#define maxn 20005
using namespace std;
int n,a,b,c,l,r,x[maxn],y[maxn];
double sqr(double x)
{
return x*x;
}
double len(double x)
{
double t,tt;
t=(sqrt((b+*a*x)*(b+*a*x)+)+*a*x+b);
tt=log(t)/(*a);
t=sqrt((b+*a*x)*(b+*a*x)+)*(b+*a*x)/(*a);
tt+=t;
return tt;
} int main()
{
while(scanf("%d%d%d%d%d%d",&n,&a,&b,&c,&l,&r)!=EOF)
{
for(int i=; i<n; i++)
scanf("%d%d",&x[i],&y[i]);
x[n]=x[],y[n]=y[];
double ans=;
for(int i=; i<n; i++)if(x[i]!=x[i+])
{
double x0=x[i],y0=y[i];
double x1=x[i+],y1=y[i+];
if(x0>x1)swap(x0,x1),swap(y0,y1);
double k=(y1-y0)/(x1-x0);
double d=y1-k*x1;
double u=sqr(b-k)-*a*(c-d);//b*b-4*a*c;
double length=;
if(u>=)
{
double t1=(-(b-k)*1.0+sqrt(u))/(2.0*a);//方程的根;
double t2=(-(b-k)*1.0-sqrt(u))/(2.0*a);//方程的根;
if(t1>t2)swap(t1,t2);
t1=max(x0,max(t1,l*1.0));
t2=min(x1,min(t2,r*1.0));
if(t1<=t2)
length=fabs(len(t2)-len(t1));//辛普森积分;
if(x[i]<x[i+])ans+=length;
else ans-=length;
}
}
printf("%.2lf\n",fabs(ans));
}
return ;
}
hdu 4752的更多相关文章
- HDU 4752 Polygon(抛物线长度积分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4752 题意:给出一个抛物线和一个简单多边形.求抛物线在多边形内部的长度. 思路:首先求出多边形所有边和 ...
- HDOJ 2111. Saving HDU 贪心 结构体排序
Saving HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 【HDU 3037】Saving Beans Lucas定理模板
http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...
- hdu 4859 海岸线 Bestcoder Round 1
http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...
- HDU 4569 Special equations(取模)
Special equations Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- HDU 4006The kth great number(K大数 +小顶堆)
The kth great number Time Limit:1000MS Memory Limit:65768KB 64bit IO Format:%I64d & %I64 ...
- HDU 1796How many integers can you find(容斥原理)
How many integers can you find Time Limit:5000MS Memory Limit:32768KB 64bit IO Format:%I64d ...
- hdu 4481 Time travel(高斯求期望)(转)
(转)http://blog.csdn.net/u013081425/article/details/39240021 http://acm.hdu.edu.cn/showproblem.php?pi ...
- HDU 3791二叉搜索树解题(解题报告)
1.题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=3791 2.参考解题 http://blog.csdn.net/u013447865/articl ...
随机推荐
- Java基础知识强化之IO流笔记58:内存操作流
1. 内存操作流: 用来操作处理临时存储的信息的. (1)操作字节数组: ByteArrayInputStream ByteArrayOutputStream 代码示例: package cn.itc ...
- 解决DataTable中的DataColumn类型默认为int类型时, 导致不能修改其列值为其他类型的解决办法
问题起因: 扔给数据库一条select * from [表名] , 得到一个DataTable, 发现有一列status状态的DataColumn的类型是int,然后我想换成字典表里的文字描述,然后就 ...
- 推荐几个对Asp.Net开发者比较实用的工具
推荐几个对Asp.Net开发者比较实用的工具.大家有相关工具也可以在评论区留言,一起努力学习. 工具 1.Visual stdio Productivity Power tool:visual std ...
- C++学习(四)
一.拷贝构造函数和拷贝赋值运算符1.拷贝构造:用一个已有的对象,构造和它同类型的副本对象——克隆.2.形如class X { X (const X& that) { ... }};的构造函数 ...
- photoshop 常用快捷键大全
一.文件新建 CTRL+N打开 CTRL+O 打开为 ALT+CTRL+O关闭 CTRL+W保存 CTRL+S 另存为 CTRL+SHIFT+S另存为网页格式 CTRL+ALT+S打印设置 CTRL+ ...
- sqlserver2008中如何用右键可视化的设置外键
右键->设计 然后打表设计界面打开了然后右键点你要设置与其它表关联的列然后点关系,选择外键表与列然后点保存,就这样
- jQuery Validation Plugin学习
http://blog.csdn.net/violet_day/article/details/14109261 jQuery Validation Plugin Demo 一.默认校验规则 (1)r ...
- WPF动画之线性插值动画(1)
XAML代码: <Window x:Class="线性插值动画.MainWindow" xmlns="http://schemas.microsoft.com/wi ...
- 不同浏览器下css 透明度的写法
filter:alpha(opacity=90); /* IE transparent */ -moz-opacity:0.9; /* Moz + FF transparent */ opacity: ...
- window redis 安装配置
1 下载 https://github.com/MSOpenTech/redis/releases 当前最新版本为 redis-2.8.21 下载的为zip包,下载连接为:https://gith ...