poj ACM1031
来源:互联网 发布:数据挖掘是什么 编辑:程序博客网 时间:2024/06/10 22:24
原题翻译如:
在一些平坦的场地上有一个被围栏围住的区域。篱笆具有高度h,在平面投影中,它具有由其N个顶点的笛卡尔坐标(Xi,Yi)指定的封闭多边形线(无自相交)的形式。在坐标(0,0)的点上,一个灯站在场上。灯可以位于栅栏的外部或内部,但不在其侧面,如下图所示(图中细线所示的部分不被灯照亮):
栅栏是完全黑色的,即它既不反射也不扩散,也不能让光通过。研究和实验表明,以下法律表达了落在该栅栏任意照明点的光强度:
I 0 = k / r
其中k是不取决于所讨论点的已知常数值,r是平面投影中该点与灯之间的距离。具有宽度d1和高度h的无穷小窄垂直板的照明
dI = I 0 * |cosα| * dl * h
其中I 0是栅栏板上的光的强度,α是在该点处的栅栏侧面的法线与灯的方向之间的平面投影中的角度。
您将编写一个程序,将找到围墙的总照度,该照明被定义为所有照明板的照明总和。
输入
输入文件的第一行包含数字k,h和N,以空格分隔。k和h是实常数。N(3 <= N <= 100)是围栏的顶点数。然后N行跟随,每行包含两个实数Xi和Yi,由空格分隔。
产量
将输入文件写入栅格的总照明四舍五入到小数点后的第二位。
样品输入
0.5 1.7 3
1.0 3.0
2.0 -1.0
-4.0 -1.0
样品输出
5.34
代码如下:
#include<stdio.h> #include<string.h> #include<algorithm> #include<math.h> //#include<queue> #define dist(a,b) sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)) #define cross(a,b,c) (b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x) #define dot(a,b,c) (b.x-a.x)*(c.x-a.x)+(b.y-a.y)*(c.y-a.y) #define delt(a) fabs(a)<eps?0:a>0?1:-1 #define pi acos(-1.0) //#define eps 1e-8 //#define inf 1e20 #define N 1005 using namespace std;int n, m, t, nl, ml;struct TPoint{ double x, y;}pt[N], st;void scan(){ scanf("%lf%lf%d", &st.x, &st.y, &n); for (int i = 0; i<n; i++) scanf("%lf%lf", &pt[i].x, &pt[i].y);}double getang(TPoint a, TPoint b){ double ang1 = atan2(a.y, a.x), ang2 = atan2(b.y, b.x); if (ang1 - ang2>pi) ang2 += 2 * pi; if (ang2 - ang1>pi) ang1 += 2 * pi; return ang1 - ang2;}void solve(){ double minf = 0, maxf = 0, sumf = 0; pt[n] = pt[0]; for (int i = 0; i<n; i++) { sumf += getang(pt[i], pt[i + 1]); maxf = max(sumf, maxf); minf = min(sumf, minf); if (maxf - minf>2 * pi) { maxf = minf + 2 * pi; break; } } printf("%.2f\n", (maxf - minf)*st.x*st.y);}int main(){ scan(); solve(); return 0;}
阅读全文
0 0
- poj ACM1031
- hdu acm1031
- 杭电ACM1031——Design T-Shirt
- POJ
- poj
- POJ
- POJ
- poj
- poj
- POJ
- POJ
- poj
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- 用react实现对表格增删操作
- 权值并查集——bzoj1202狡猾的商人
- [3]Spring以配置文件的方式进行属性注入
- angular2升级angular4
- 深度学习的硬件方案
- poj ACM1031
- react-native 实现上传功能
- jedis存储对象(序列化)开发
- 【玩儿法】真不是装X 为了不加班我一直用这些小众软件
- servlet
- 使用udev方式挂载的asm查看对应的物理盘scsi_id
- 三.javassist实现代理
- EOS中多数据源配置使用示例
- Linux系统下的dlopen、dlsym、dlclose