Problem A: 踢罐子

Description

平面上有\(n\)个点,其中任意2点不重合,任意3点不共线。

我们等概率地选取一个点A,再在剩下的\(n-1\)个点中等概率地选取一个点B,再在剩下的\(n-2\)个点中等概率地选取一个点C。

然后我们计算伤害倍率\(d\)。作ABC外接圆,每一个位于弧BC和线段BC之间的点计1倍,每一个位于弧BC上的点(包括B,C两点)计1/2倍,特别的,点A计1倍。将这些倍率全部加起来得到伤害倍率\(d\)。

注意:弧BC是指,ABC外接圆上B到C而不包含点A的部分,这个弧不一定是劣弧。

给定这\(n\)个点的坐标,你需要求出\(d\)的期望。为了简单起见,你只需要输出\(d\times n\times (n-1)\times (n-2)\times 2\)的值,可以看出这是一个整数。

Input

第一行一个正整数\(n\)

接下来\(n\)行,每行2个整数\(x, y\),空格分隔,表示一个坐标。

Output

仅一行,一个数,表示\(d\times n\times (n-1)\times (n-2)\times 2\)的值。

HINT

对于40%的数据,n<=20。

对于60%的数据,n<=50。

对于80%的数据,n<=200。

对于100%的数据,3<=n<=1000。

对于100%的数据,xi和yi的绝对值不超过2000000000。


暴力需要求圆心,最后选择了列圆的方程高斯消元解的诡异办法,wjyyy神仙给出了一个向量的做法还没仔细看...

事实上这个题感觉思路不太自然。

先把处于顶点的贡献算好是\(4n(n-1)(n-2)\)。

然后四个点四个点讨论

发现如果四个点是凸边形,那么这四个点贡献8,否则不产生贡献。

问题转化成统计凸四边形个数了。

凸四边形两两连边后有4条边剩下两个点在异侧,2条边同侧

而凹的3异3同

可以先统计X个异侧,Y个同侧,然后列方程解凸四边形个数

统计的时候枚举一个点,然后极角排序另一个就可以了。


Code:

#include <cstdio>
#include <algorithm>
#include <cmath>
#define ll long long
const int N=2010;
const double pi=acos(-1);
int n,tot;ll X,Y;
double dx[N],dy[N],s[N];
ll cal(ll x){return x*(x-1)/2;}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%lf%lf",dx+i,dy+i);
for(int i=1;i<=n;i++)
{
tot=0;
for(int j=1;j<=n;j++)
{
if(i!=j)
{
s[++tot]=atan2(dy[j]-dy[i],dx[j]-dx[i]);
if(s[tot]<0) s[tot]+=pi*2;
}
}
std::sort(s+1,s+1+tot);
for(int j=1;j<=tot;j++) s[j+tot]=s[j]+2*pi;
for(int j=1,k=1;j<=tot;j++)
{
while(k<=tot*2&&s[k]-s[j]<=pi) ++k;
int c1=k-j-1,c2=n-c1-2;
X+=1ll*c1*c2;//异
Y+=cal(c1)+cal(c2);//同
}
}
printf("%lld\n",(Y-X)*2+4ll*n*(n-1)*(n-2));
return 0;
}

2018.12.31

Problem A: 踢罐子 解题报告的更多相关文章

  1. ZOJ Problem Set - 1025解题报告

    ZOJ Problem Set - 1025 题目分类:基础题 原题地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=10 ...

  2. ACM: A Simple Problem with Integers 解题报告-线段树

    A Simple Problem with Integers Time Limit:5000MS Memory Limit:131072KB 64bit IO Format:%lld & %l ...

  3. BestCoder18 1002.Math Problem(hdu 5105) 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5105 题目意思:给出一个6个实数:a, b, c, d, l, r.通过在[l, r]中取数 x,使得 ...

  4. Problem - 433C - Codeforces解题报告

    对于这题本人刚开始的时候的想法是:先把最大两数差的位置找到然后merge计算一个值再与一连串相同的数做merge后计算一个值比较取最大值输出:可提交后发现不对,于是本人就搜了一下正解发现原来这题的正确 ...

  5. Problem A: 选举 解题报告

    Problem A: 选举 题意 给出一个投票过程.有\(n\)个选民和\(m\)个候选人,每个选民\(i\)有个不重且有序的可投集合\(\{a_i\}\). 对于第一轮投票,选民\(i\)会投给\( ...

  6. Problem A: 种树 解题报告

    Problem A: 种树 Description 很久很久以前,一个蒟蒻种了一棵会提问的树,树有\(n\)个节点,每个节点有一个权值,现在树给出\(m\)组询问,每次询问两个值:树上一组点对\((x ...

  7. Problem C: 多线程 解题报告

    Problem C: 多线程 Description 多线程是一种常见的加速手段,利用多个线程同时处理不同的任务可以一定程度上减少总耗时,达到提高效率的目的.然而,多个线程间的执行顺序是完全不可控的, ...

  8. Problem B: 专家系统 解题报告

    Problem B: 专家系统 Description 一个专家系统是指,你雇佣了\(n\)个专家,他们每个人会做出一个结果,然后你从中选取较多的专家的结果组合而成最终的结果.专家系统广泛应用于传统机 ...

  9. Problem C Dist 解题报告

    Problem C Dist Description 有一个\(n\)个点带边权的连通无向图,边集用\(k\)个集合\(s_1,s_2,\dots,s_k\)和\(k\)个整数\(w_1,w_2,\d ...

随机推荐

  1. 20155222卢梓杰 实验八 Web基础

    实验八 Web基础 1.安装apache sudo apt-get install apache2 2.启动apache service apache2 start 3.使用netstat -tupl ...

  2. NetWork——描述一次完整的网络请求过程

    台根DNS,根DNS服务器收到请求后会返回负责这个域名(.net)的服务器的一个IP,本地DNS服务器使用该IP信息联系负责.net域的这台服务器.这台负责.net域的服务器收到请求后,如果自己无法解 ...

  3. 对C++多态的一点理解

    作为一个C++新手,我浅谈一下我对多态的一点理解. 首先,引用几句话: 1.继承是一种抽象,它允许程序员在某些时候忽略相似对象的差异,又在其他时候利用这些差异.——<C++沉思录> 2.继 ...

  4. 11.10 (上午)开课二个月零六天(ajax基础,ajax做登录)

    test.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...

  5. .Net Core WebApi控制器接收原始请求正文内容

    主要目标 在Asp.net Core控制器中,通过自定义格式化程序来映射自定义处理控制器中的“未知”内容. 简单案例 为了演示这个问题,我们用VS2017创建一个默认的Asp.net Core Web ...

  6. 一个web应用的诞生(3)--美化一下

    经过上一章的内容,其实就页面层来说已结可以很轻松的实现功能了,但是很明显美观上还有很大的欠缺,现在有一些很好的前端css框架,如AmazeUI,腾讯的WeUI等等,这里推荐一个和flask集成很好的b ...

  7. win10安装tensorflow-gpu

    1.安装anaconda (最好使用清华源下载) 2.打开cmd conda create -n tensorflow pip python=3.6 activate tensorflow pip i ...

  8. 关于T/G/M/K

    //扫盲贴 K, G, T,都是表数量,只是个数字,在不同的场合下表示的不同.在计算机行业中,这几个量可用来表示数据传输速度和容量,下面分别讨论,希望不了解的朋友不要被某知道上的误解了.如果有什么错误 ...

  9. CSS——【元素内边距padding、元素外边距margin、元素边框border-width、元素大小width/height】与【元素显示大小】的关系

    一.基本知识 padding:元素内边距,指的是元素内边框到元素中内容的距离. 用法: padding:长度|百分比 padding-top:长度|百分比 padding-bottom:长度|百分比 ...

  10. 对《OA云》作品的分析

    对<OA云>作品的分析 软件描述:<OA云>是一款基于移动端的企业日常事物办公软件,企业人员进入该产品后可以对当天的出勤情况进行签到,系统会自动的识别以及记录下员工的实时签到信 ...