2017杭电ACM集训队单人排位赛 - 2 -1002 地狱飞龙 (辛普森公式求积分)(模板)
题干:
最近clover迷上了皇室战争,他抽到了一种地狱飞龙,很开心。假设地域飞龙会对距离为d的敌人每秒造成k/d2k/d^2伤害。假设地域飞龙位于坐标轴原点,以每秒v1的速度向y轴正方向移动,敌人在(x,0)的位置,以每秒v2的速度向x轴负方向移动。问,敌人至少有多少血量永远才不会被地狱飞龙喷死。(伤害是连续造成的,不是一秒一秒间断的)
题解:
我们根据题意,设时间为t,x1为飞龙距离x轴的距离,x2为敌人距离y轴的距离,那么x1=v1∗tx1 = v1*t,x2=x−v2∗tx2 = x-v2*t,人和龙之间的距离为d=x12+x22−−−−−−−−√d = \sqrt{x1^2 + x2^2} ,所以伤害y=k/(x12+x22)=k/(v12∗t2+(x−v2∗t)2)y = k/(x1^2 + x2^2) = k/(v1^2*t^2 + (x-v2*t)^2) ,对y求定积分,范围是0到正无穷大。
这时候就要用到一个求积分的万能公式,辛普森公式。
直接看代码就可以明白:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <stack>
#include <bitset>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <algorithm>
using namespace std;
#define clr(a,b) memset(a,b,sizeof(a))
#define pb(a) push_back(a)
#define fir first
#define se second
#define LL long long
typedef pair<int,int> pii;
typedef pair<LL,int> pli;
typedef pair<LL,LL> pll;
const int maxn = 1e5+5;
const int inf = 0x3f3f3f3f;
LL mod = 1e9+7;
double eeps = 0.00000001; //设置精度需要,按需要设置,太小会超时!
double PI = acos(-1);double k,v1,v2,x;double F(double t){ //这里输入你的公式double ans;ans = k/((v1*t)*(v1*t) + (x-v2*t)*(x-v2*t));return ans;
}
double simpson(double a, double b){ double c = a + (b-a)/2.0; return (F(a) +4*F(c) + F(b)) * (b-a) / 6.0;
}
double asr(double a, double b, double eps, double A){ double c = a + (b-a) / 2.0; double L = simpson(a, c), R = simpson(c, b); if(fabs(L+R-A) <= 15*eps) return L+R+(L+R-A)/15.0; return asr(a, c, eps/2.0, L) + asr(c, b, eps/2.0, R);
}
double asr(double a, double b, double eps){ return asr(a, b, eps, simpson(a,b));
} int main() {//freopen("in.txt","r",stdin);//freopen("out1.txt","w",stdout);int t,dd = 1;cin>>t;while(t--) {cin>>v1>>v2>>x>>k;double ans = asr(0,1000000.0,eeps); //这里定义范围即可printf("%.2f\n",ans);}
}
2017杭电ACM集训队单人排位赛 - 2 -1002 地狱飞龙 (辛普森公式求积分)(模板)相关推荐
- 2017杭电ACM集训队单人排位赛 - 1(ALL题解)
A. 看日出 看日出 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- 2017杭电ACM集训队单人排位赛 - 2 饶学妹的比赛
饶学妹的比赛 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Sub ...
- HDU - 2018杭电ACM集训队单人排位赛 - 1 - Problem C. 狙击敌人
Problem C. 狙击敌人 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) ...
- 2018杭电ACM集训队单人排位赛 - 1Problem A. 内蒙创业
Problem A. 内蒙创业 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) ...
- 杭电acm第2304题答案c语言,【转】杭电ACM试题分类
注:网上搜的 第一篇 1001 这个就不用说了吧 1002 简单的大数 1003 DP经典问题,最大连续子段和 1004 简单题 1005 找规律(循环点) 1006 感觉有点BT的题,我到现在还没过 ...
- 杭电ACM题目类型整理
版权声明:(╯3╰) 转载请注明: http://blog.csdn.net/bat67 杭电acm题目分类版本1 1002 简单的大数 1003 DP经典问题,最大连续子段和 1004 简单题 10 ...
- 杭电acm2151题java的解法,杭电ACM题型分类
杭电ACM题型分类 基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029.1032.1037.1040.1048.1 ...
- 杭电ACM(HDUOJ)试题分类
杭电ACM试题分类 第一篇 1001 这个就不用说了吧 1002 简单的大数 1003 DP经典问题,最 ...
- 【杭电ACM】1097 A hard puzzle
[杭电ACM]1097 A hard puzzle http://acm.hdu.edu.cn/showproblem.php?pid=1097 先用int手写了算法结果竟然wrong answer ...
最新文章
- java实现fread_fread函数读取到的数据和实际数据不一样
- js base64 解码
- 第2章 基本的TCP套接字
- 实现微服务架构-微服务架构需要解决的问题
- 使用FreeRTOS进行性能和运行时分析
- Qt5制作icon图标文件和发布程序简易介绍
- 猜数游戏用Python应该这样写
- org.springframework.dao.IncorrectResultSizeDataAccessException: query did not return a unique result
- 动态规划 钢条切割问题
- 【推荐系统】推荐系统中的图网络模型
- Android实现多条Toast快速显示(强制中止上一条Toast的显示)
- mysqli 语句和mysql语句一样吗_mysqli语句的用法
- 计算机搜索不到PDF,PDF能打印吗,pdf虚拟打印机找不到
- 【记录】在新电脑安装Ubuntu16.04系统并移植虚拟机中catkin_ws过程
- vant area地区选择组件使用方法
- 超详细的程序员未来职业发展路线
- Joel Spolsky给计算机专业学生的七个建议
- 【20170706】保卫萝卜
- 登入联机服务器失败怎么 修复,元气骑士连接服务器失败 连接不上网络怎么办...
- 【NeurIPS100】谷歌、Facebook、斯坦福等十篇机器学习最新论文解读