SPOJ UMR 10A 计算几何
DES:顺时针给出构成凸多边形的点。然后有Q个询问任意给出两个点的编号,询问由这两个点的连线将多边形分成的两部分面积较小的部分面积大小。
比赛时直接每次连线后求多边形求面积超时了。正确解法是求出利用叉积球三角形面积不断求和求出多边形总面积的同时,保留多边形的前缀和。当任意两点连线时,只要用前缀和想减再减去一个三角形的面积即可。
然而...我不理解的是关于q的那个循环...for就是超时...while就是AC...坐标明明是interger...int就WA...double就AC...
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<math.h>
using namespace std; struct Point
{
double x, y;
} p[]; double areaa(Point p0, Point p1, Point p2) //计算以这三个点为顶点的三角形面积
{
double temp = (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);
temp /= 2.0;
return fabs(temp);
} double area[]; // 存储多边形的前缀多边形的面积。 int main()
{
int n, q;
int xx, yy;
while(~scanf("%d%d", &n, &q))
{
for (int i=; i<n; ++i)
{
scanf("%lf%lf", &p[i].x, &p[i].y);
}
double tot_area = ;
area[] = ;
area[] = ;
for (int i=; i<n-; ++i)
{
tot_area += areaa(p[], p[i], p[i+]);
area[i+] = tot_area;
}
int t1, t2;
double ans;
double temp_area; while(q--)
{
scanf("%d%d", &t1, &t2);
if (t2 > t1) swap(t1, t2); // 保证t1>t2
temp_area = area[t1]-area[t2]-areaa(p[], p[t1], p[t2]);
if (temp_area < tot_area-temp_area)
printf("%.1lf\n", temp_area);
else printf("%.1lf\n", tot_area-temp_area);
}
}
return ;
}
L哦哦K
SPOJ UMR 10A 计算几何的更多相关文章
- SPOJ 8073 The area of the union of circles(计算几何の圆并)(CIRU)
Description You are given N circles and expected to calculate the area of the union of the circles ! ...
- SPOJ 149 FSHEEP Fencing in the Sheep ( 计算几何 + 二分 )
以下摘自SPOJ泛做表格: 题意:给定一个星形多边形,而且给出了一个可以看到形内所有点的位置(我们称这个点为观察点),让你判断有多少个点位于多边形内. 时间复杂度:O(mlogn) 将多边形上的点按极 ...
- SPOJ CIRU The area of the union of circles (计算几何)
题意:求 m 个圆的并的面积. 析:就是一个板子题,还有要注意圆的半径为0的情况. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024 ...
- ACM计算几何题目推荐
//第一期 计算几何题的特点与做题要领: 1.大部分不会很难,少部分题目思路很巧妙 2.做计算几何题目,模板很重要,模板必须高度可靠. 3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面 ...
- BZOJ 2588: Spoj 10628. Count on a tree [树上主席树]
2588: Spoj 10628. Count on a tree Time Limit: 12 Sec Memory Limit: 128 MBSubmit: 5217 Solved: 1233 ...
- ACM/ICPC 之 计算几何入门-叉积-to left test(POJ2318-POJ2398)
POJ2318 本题需要运用to left test不断判断点处于哪个分区,并统计分区的点个数(保证点不在边界和界外),用来做叉积入门题很合适 //计算几何-叉积入门题 //Time:157Ms Me ...
- SPOJ DQUERY D-query(主席树)
题目 Source http://www.spoj.com/problems/DQUERY/en/ Description Given a sequence of n numbers a1, a2, ...
- HDU 2202 计算几何
最大三角形 Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- SPOJ GSS3 Can you answer these queries III[线段树]
SPOJ - GSS3 Can you answer these queries III Description You are given a sequence A of N (N <= 50 ...
随机推荐
- 三羊献瑞|2015年蓝桥杯B组题解析第三题-fishers
三羊献瑞 观察下面的加法算式: 祥 瑞 生 辉 三 羊 献 瑞 三 羊 生 瑞 气 (如果有对齐问题,可以参看[图1.jpg]) 其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字. 请你填写& ...
- LightOJ 1296 Again Stone Game(sg函数)题解
题意:每次必须拿且只能拿不超过一半的石头,不能拿为败 思路:显然算出每个的sg函数,但是范围1e9显然不能直接打表.所以先打表找规律,发现偶数一直是自己的一半,奇数好像没规律.偶数x的sg函数值是x/ ...
- Big Number-Asia 2002, Dhaka (Bengal) (计算位数)题解
Big Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- Educational Codeforces Round 57 (Rated for Div. 2)
我好菜啊. A - Find Divisible 好像没什么可说的. #include<cstdio> #include<cstring> #include<algori ...
- The way to Go(1): Introduction
Reference: Github: Go Github: The way to Go Introduction to Go 设计要求: 能够以更快的速度开发软件 开发出的软件能够很好地在现代的多核计 ...
- UVa 11991 一道简单题
https://vjudge.net/problem/UVA-11991 题意:给出一个包含n个整数的数组,你需要回答若干询问.每次询问两个整数k和v,输出从左到右第k个v的下标. 思路: 把每个数字 ...
- UVa 1151 买还是建
https://vjudge.net/problem/UVA-1151 题意: 平面上有n个点,你的任务是让所有n个点连通.为此,你可以新建一些边,费用等于两个端点的距离平方和.另外还有q个套餐可以购 ...
- NYOJ 16 矩形嵌套(经典DP)
http://acm.nyist.net/JudgeOnline/problem.php?pid=16 矩形嵌套 时间限制:3000 ms | 内存限制:65535 KB 难度: ...
- hdu 2874 Connections between cities 带权lca判是否联通
Connections between cities Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (J ...
- 会员通过消费攒积分,升级RENEW以及降级的需求
需求看上去及其简单,如下: 用文字描述就开始不容易了. 先按等级排个序,根据下一个等级,推前一个等级: --C---B----V-----A 在计算一下升级需要的积分:--C表示普通会员-----需要 ...