ACM/ICPC World Finals 2012 B Curvy Little Bottles
题目大意
有一个瓶子,是由一条曲线绕着xx轴旋转得到的。瓶底的直线为x=Xlowx=Xlow瓶口的直线为x=Xhighx=Xhigh,给定曲线的函数,Xlow,Xhigh,inc曲线的函数,Xlow,Xhigh,inc,求瓶子的体积并每隔incinc体积画一条等体积线。
解答
V=\int_{Xlow}^{Xhigh}f(x)^2\times dx \approx {Xhigh-Xlow \over 6} [f(Xlow)^2+4f({Xlow+Xhigh \over 2})^2+f(Xhigh)^2]
由此可以用辛普森自适应公式算出所有需要的体积。
接着进行二分答案,查找每个等体积线的 x<script id="MathJax-Element-29" type="math/tex">x</script>坐标。依次解出即可。
参考代码
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>using namespace std;const double eps = 0.0001;int n;
double a[15];
double xl, xh;
double inc;double f(double x)
{double ans = 0;double xx = 1;for (int i = 0; i <= n; i++) {ans += a[i]*xx;xx *= x;}return ans*ans;
}double simpon(double a, double b)
{return (b-a)/6.0*(f(a)+4*f((a+b)/2)+f(b));
}double work(double a, double b)
{double cmp = simpon(a, (a+b)/2)+simpon((a+b)/2, b);double cmp1 = simpon(a, b);if (fabs(cmp-cmp1) < eps)return cmp;return work(a, (a+b)/2) + work((a+b)/2, b);
}void readin()
{scanf("%d", &n);for (int i = 0; i <= n; i++)scanf("%lf", &a[i]);scanf("%lf %lf %lf", &xl, &xh, &inc);
}void find(double now)
{double l = xl, h = xh;double m;double tmp;while (true) {m = (l+h)/2;tmp = work(xl, m)*3.1415926 - now;if (fabs(tmp) < eps) {printf("%.2lf ", m-xl);return;}if (tmp < 0)l = m;elseh = m;}
}int main()
{readin();double v = work(xl, xh)*3.1415926;printf("%.2lf\n", v);if (v < inc) {printf("insufficient volume");}for (double now = inc, i = 0; now <= v && i < 8; now += inc, i++) {find(now);}return 0;
}
ACM/ICPC World Finals 2012 B Curvy Little Bottles相关推荐
- ACM - ICPC World Finals 2013 A Self-Assembly
原题下载 : http://icpc.baylor.edu/download/worldfinals/problems/icpc2013.pdf 这道题其实是2013年我AC的第一道题,非常的开心,这 ...
- 《算法竞赛入门经典》 例题 4-4 信息编码 (Message Decoding,ACM,ICPC World Finals 1991,UVa 213)
原题及翻译 Some message encoding schemes require that an encoded message be sent in two parts. 某些消息编码方案要求 ...
- 《算法竞赛入门经典》习题4-2 正方形 (Squares,ACM,ICPC World Finals 1990,UVa201)——仅提供大体方法
原题及翻译 A children's board game consists of a square array of dots that contains lines connecting some ...
- 数数正方形(ACM/ICPC World Finals)
题目:有n行n列(2<=n<=9)的小黑点,还有m条线段连接其中的一些黑点,统计这些线段连成了多少个正方形(每种边长分别统计) 行从上到下编号为1~n,列从上到下编号为1~n.边用 H(i ...
- 谜题 (Puzzle,ACM/ICPC World Finals 1993,UVa227)
题目描述:算法竞赛入门经典习题3-5 题目思路:模拟题 #include <stdio.h> #include <string.h> #define maxn 55 char ...
- 习题3-6 纵横字谜的答案(Crossword Answers, ACM/ICPC World Finals 1994, UVa232)
原题vjudge 输入一个r行c列(1≤r,c≤10)的网格,黑格用"*"表示,每个白格都填有一个字母. 如 果一个白格的左边相邻位置或者上边相邻位置没有白格(可能是黑格,也可能出 ...
- 例题5-10 PGA巡回赛的奖金(PGA Tour Prize Money,ACM/ICPC World Finals 1990 UVa207)
原题链接:https://vjudge.net/problem/UVA-207 分类:耐力 备注:排序和其他细节处理 前言:这是我第二次默写刘老师的代码了,真的崩溃,错一点点细节都不行,对着uDebu ...
- UVa816 例题 6-14 Abbott的复仇 (Abbott's Revenge,ACM/ICPC World Finals 2000)
原题链接: UVa-816 题目大意: 模有一个最多包含9*9个交叉点的迷宫.输入起点.离开起点时的朝向和终点,求一条最短路径.(具体题目参考原题和紫书) 解题思路: 本题是一道用BFS求最短路径的迷 ...
- 习题7-1 消防车(Firetruck,ACM/ICPC World Finals 1991, UVa208)
原题链接:https://vjudge.net/problem/UVA-208 备注:回溯法 分类:DFS 代码如下: #include<cstdio> #include<cstri ...
- 习题7-3 多米诺效应(The Domino Effect, ACM/ICPC World Finals 1991, UVa211)
谜一般的格式换行,为啥格式错报WA额. 这题也是用回溯法解决,只是判断情况稍微复杂些. 本质都是相同的,每次有两种决策,一行一行来处理. 当进行到某一行时,上一行还存在未vis的位置则回溯. #inc ...
最新文章
- 小米6鲁大师html5评测,一加6T依然是顶级旗舰!鲁大师2018手机性能榜跑分排前三!...
- Maven简单的配置Junit测试及使用简单的mock
- auto-sklearn手册
- jQuery-helloWorld
- 99 网络编程_网络工程师技能图谱,看看你会多少技能
- 华为Mate 30系列发布会定档:年度机皇 天生优秀!
- 【已解决】手机“此设备已安装证书授权中心,您的安全网络流量可能被监控”怎么办?
- 安卓仿苹果键盘输入法_仿ios输入法
- PCS7 DCS 水泥粉磨程序
- c#编程实战宝典 付强_C#编程实战宝典(光盘内容另行下载,地址见书封底)
- 每周分享第 58 期
- mysql左连接和右连接_MYSQL 左连接与右连接
- 因为毕业半年挣了100万,帅地在CSDN被喷上热榜
- 迅捷OCR文字识别软件的功能介绍
- 【Proteus仿真】AT24C02数据读写+LCD1602显示
- c语言求两个数的最小公倍数辗转相除法,C语言辗转相除法求2个数的最小公约数...
- 图像的灰度化灰度值的读取Matlab
- 在线教育网站的一些瞎折腾……
- World Streamer学习2
- paddle百度飞浆入门使用教程