uva 11529 Strange Tax Calculation (几何+计数)
题目链接: http://vjudge.net/problem/viewProblem.action?id=18277
这题暴力n^4妥妥的TLE!即使n^3也可能会T
正确的姿势应该是:枚举每个点作为三角形内(或外)的点,按对此点的极角排序,然后从某个点Aj开始,找到从它开始刚好转了超过180度的点,则j点Aj与此间转过的任何两个点组成的三角形都应该不包括中心点。
这样做可能是n^3的复杂度,但如果Aj做完后,Aj+1可以从上一次转过180度的点开始转,这样不就相当于n^2了
#include <stdio.h>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <cmath> using namespace std;
#define lson o<<1
#define rson o<<1|1
#define max(a,b) (a)>(b)?(a):(b)
#define min(a,b) (a)<(b)?(a):(b)
#define INF 200000000
#define pi acos(-1.0)
#define eps 1e-9
typedef long long ll;
double x[],y[];
double ang[*]; int main(){
//freopen("s.in","r",stdin);freopen("s.out","w",stdout);
int n,cs=;
while(scanf("%d",&n) && n){
int i;
double ans=,s,c;
s=(double)(n-)*(n-)*(n-)/6.0;
c=(double)n*(n-)*(n-)/6.0;
for(i=;i<n;i++)scanf("%lf%lf",&x[i],&y[i]);
if(n<){
printf("City %d: 0.00\n",cs);
continue;
}
for(i=;i<n;i++){
int j,k;
for(j=,k=;j<n;j++)if(i!=j){
ang[k]=atan2(y[j]-y[i],x[j]-x[i]);
if(ang[k]<eps)ang[k]+=*pi;
k++;
}
sort(ang,ang+n-);
for(j=k;j<*k;j++)ang[j]=ang[j-k]+*pi; double temp=;int pos=;
for(j=;j<k;j++){
while(pos<=*k&&ang[pos]-ang[j]<pi)pos++;
if(pos-j>)temp+=(pos-j-)*(pos-j-)/2.0;
}
ans+=(s-temp)/c;
}
printf("City %d: %.2lf\n",cs,ans);
cs++;
}
return ;
}
772ms Accepted~
uva 11529 Strange Tax Calculation (几何+计数)的更多相关文章
- uva 11529 - Strange Tax Calculation(计数问题)
题目链接:uva 11529 - Strange Tax Calculation 题目大意:给出若干个点,保证随意三点不共线.随意选三个点作为三角行,其它点若又在该三角形内,则算是该三角形内部的点.问 ...
- UVa 11529 (计数) Strange Tax Calculation
枚举一个中心点,然后将其他点绕着这个点按照极角排序. 统计这个中心点在外面的三角形的个数,然后用C(n-1, 3)减去这个数就是包含这个点的三角形的数量. 然后再枚举一个起点L,终点为弧度小于π的点R ...
- uva 12508 - Triangles in the Grid(几何+计数)
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u011328934/article/details/35244875 题目链接:uva 12508 ...
- UVA 12075 - Counting Triangles(容斥原理计数)
题目链接:12075 - Counting Triangles 题意:求n * m矩形内,最多能组成几个三角形 这题和UVA 1393类似,把总情况扣去三点共线情况,那么问题转化为求三点共线的情况,对 ...
- UVA 11646 - Athletics Track || UVA 11817 - Tunnelling the Earth 几何
题目大意: 两题几何水题. 1.UVA 11646 - Athletics Track 如图,体育场的跑道一圈400米,其中弯道是两段半径相同的圆弧,已知矩形的长宽比例为a:b,求长和宽的具体数值. ...
- uva 10474 Where is the Marble? 计数排序
题目给出一系列数字,然后问哪个数字是从小到大排在第几的,重复出现算第一个. 数据范围为10000,不大,完全可以暴力,sort不会超时. 但是由于以前做比赛时也遇到这种题目,没注意看数据范围,然后暴力 ...
- UVA 11178 Morley's Theorem(几何)
Morley's Theorem [题目链接]Morley's Theorem [题目类型]几何 &题解: 蓝书P259 简单的几何模拟,但要熟练的应用模板,还有注意模板的适用范围和传参不要传 ...
- UVA 1264 - Binary Search Tree(BST+计数)
UVA 1264 - Binary Search Tree 题目链接 题意:给定一个序列,插入二叉排序树,问有多少中序列插入后和这个树是同样的(包含原序列) 思路:先建树,然后dfs一遍,对于一个子树 ...
- UVa 10766 Organising the Organisation (生成树计数)
题意:给定一个公司的人数,然后还有一个boss,然后再给定一些人,他们不能成为直属上下级关系,问你有多少种安排方式(树). 析:就是一个生成树计数,由于有些人不能成为上下级关系,也就是说他们之间没有边 ...
随机推荐
- Leetcode:Repeated DNA Sequences详细题解
题目 All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: " ...
- 实战weblogic集群之创建节点和集群
一.启动weblogic,访问控制台 weblogic的domain创建完成后,接下来就可以启动它,步骤如下: $ cd /app/sinova/domains/base_domain/bin $ . ...
- 【转】 为SeekBar滑块设置固定值以及自定义Seekbar,progressbar样式--不错
原文网址:http://blog.csdn.net/jdsjlzx/article/details/7804080 最近在项目中使用到了seekbar和progressbar,且必须按照设计要求来进行 ...
- (转载)在Linux下删除文件行末尾的^M符号方法
(转载)http://www.xinfengit.com/200907/1433646.html 由于DOS下的编辑器和linux(linux教程 linux培训 )编辑器对文件行末的回车符处理不一致 ...
- 【动态规划】Codeforces 711C Coloring Trees
题目链接: http://codeforces.com/problemset/problem/711/C 题目大意: 给N棵树,M种颜色,已经有颜色的不能涂色,没颜色为0,可以涂色,每棵树I涂成颜色J ...
- 【数学规律】Vijos P1582 笨笨的L阵游戏
题目链接: https://vijos.org/p/1582 题目大意: 就是o(o<=50)个人在n*m(n,m<=2000)的格子上放L型的东西(有点像俄罗斯方块的L,可对称旋转),问 ...
- 暴力求解——POJ 3134Power Calculus
Description Starting with x and repeatedly multiplying by x, we can compute x31 with thirty multipli ...
- prim模板题
题目链接:http://acm.hrbeu.edu.cn/index.php?act=problem&id=1223 #include <cstdio> #include < ...
- CentOS 搭建 FastDFS-5.0.5集群
转http://www.open-open.com/lib/view/open1435468300700.html 第一步,确定目标: Tracker 192.168.224.20:22122 C ...
- Python 列表排序方法reverse、sort、sorted详解
python语言中的列表排序方法有三个:reverse反转/倒序排序.sort正序排序.sorted可以获取排序后的列表.在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse() ...