Finding Lines
Finding Lines
概率
在听题解前毫无头绪,题解帮我打开了新世界的大门:
随机取一个点在答案直线(如果存在这个直线)上的概率是p%,
那么随机取到两个点构成的直线就是答案直线的概率是p%*p%;
也就是说,随机取到两个点构成的直线不是答案直线的概率为1-p%*p%<=24/25.
如果我们每次随机取两个点,判定一下这条直线上是否存在p%*n个点,
进行k次后得到错误答案的概率是(1-p%*p%)k.
k取足够大,可以使错误答案的概率趋向于0;当k=100时,错误概率为0.01687.
注意:n<=2时需要特判
代码如下:
#include<iostream>
#include<cstdlib>
#include<ctime>
#define N 100005
using namespace std;
typedef long long ll;
struct point{
ll x,y;
}a[N];
ll n,p,ans;
ll check(ll first,ll second){
ll sum=;
ll x1=a[first].x-a[second].x;
ll y1=a[first].y-a[second].y;
for(int i=;i<n;++i){
if(i==first||i==second)continue;
ll x2=a[i].x-a[second].x;
ll y2=a[i].y-a[second].y;
if(x1*y2-x2*y1==)sum++;
}
if(sum*-p*n>=)return ;
return ;
}
int main(void){
while(cin>>n>>p){
for(ll i=;i<n;++i)
cin>>a[i].x>>a[i].y;
if(n<=){
cout<<"possible\n";
continue;
}
ans=;
srand((int)time());
for(ll t=;t<;++t){
ll first=rand()%n,second=rand()%n;
if(first==second)continue;
ans+=check(first,second);
}
if(ans)cout<<"possible\n";
else cout<<"impossible\n";
}
}
Finding Lines的更多相关文章
- 随机算法 - HNU 13348 Finding Lines
Finding Lines Problem's Link: http://acm.hnu.cn/online/?action=problem&type=show&id=13348&am ...
- UVALive - 6955 Finding Lines 随机算法
题目链接: http://acm.hust.edu.cn/vjudge/contest/126968#problem/F 题意 给你n个点,问是否有>=p/100*n个点共线(p>=20& ...
- Finding Lines UVALive - 6955(随机)
给出n个点,问你有没有可能存在一条直线,这n个点中存在百分号p以上点在这条直线上. 两个点确定一条直线,所以可以随机枚举两个点,然后用这条直线去判断其他的点是不是在这条直线上,如果在这个直线上的点超过 ...
- UVALive 6955 Finding Lines(随机化优化)题解
题意:问你是否有一条直线满足这条直线上的点个数与总个数之比不小于p 思路:解法太暴力了,直接随机取两个数,如果能满足条件就输出可以,否则不行.证明一下为什么可以随机化,题目给出可能有P >=20 ...
- Gym101482 NWERC 2014(队内训练第4场)
-----------------------前面的两场感觉质量不高,就没写题解----------------------------- A .Around the Track pro:给定内多边形 ...
- Gym 101482 题解
B:Biking Duck 题意:现在有一个人要从(x1,y1)点走到(x2,y2)点, 现在走路的速度为v. 还有骑自行车的速度v2,自行车要从某个自行车站到另一个自行车站,现在我们可以视地图的边界 ...
- Northwestern European Regional Contest 2014 Gym - 101482
Gym 101482C Cent Savings 简单的dp #include<bits/stdc++.h> #define inf 0x3f3f3f3f #define inf64 0x ...
- Image Processing and Analysis_8_Edge Detection:Finding Edges and Lines in Images by Canny——1983
此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...
- Finding Lane Lines on the Road
Finding Lane Lines on the Road The goals / steps of this project are the following: Make a pipeline ...
随机推荐
- mysql的架构
和其他数据库相比,mysql有点与众不同,它的架构可以在多种不同场景中应用并发挥好的作用,而理解其设计是发挥好作用的先决条件 每当我们在想起mysql的逻辑架构师,我们可以构造一副mysql各组件之间 ...
- .NET简单企业应用
<.NET简单企业应用>项目开发环境 项目开始,开发团队需要构建一套开发环境,主要包含:开发工具.代码管理/版本控制系统.任务和Bug管理系统和持续集成(CI)系统.本文主要列举项目开发中 ...
- C#使用Thrift简介,C#客户端和Java服务端相互交互
C#使用Thrift简介,C#客户端和Java服务端相互交互 本文主要介绍两部分内容: C#中使用Thrift简介 用Java创建一个服务端,用C#创建一个客户端通过thrift与其交互. 用纯C#实 ...
- Linux内核策略介绍
Linux内核策略介绍学习笔记 主要内容 硬件 策略 CPU 进程调度.系统调用.中断 内存 内存管理 外存 文件IO 网络 协议栈 其他 时间管理 进程调度 内核的运行时间 系统启动.中断发 ...
- C# 通讯网关开发
C# 通讯网关开发 楼主从12年毕业大部分时间一直从事于通讯网关的开发,刚刚学那会连C#是啥都不知道,就直接入手网关开发,前前后后到现在也算是弄了5.6个通讯协议,后来看到北风之神的socket框架和 ...
- JS中的prototype(转载)
在研究别人写的js图像处理算法时,发现其中脚本中大量使用prototype,很难读明白,就网上查了下资料发现这篇文章很易懂,就转载如下: 1 原型法设计模式 在.Net中可以使用clone()来实现原 ...
- ArcGIS 10.1 发布使用ArcEngine自定义的GP服务
1. 新建立GP模型 在VS2010中新建一个普通的程序及,引入ArcEngine相关的dll.在该DLL中定义一个或多个GP类和一个GP工厂类.GP类要继承IGPFunction2接口,GP工厂类要 ...
- Jenkins中关于一些插件的使用方法
最近在为公司搭建CI平台过程中,以及在具体项目实施过程中使用过的一些插件的具体用法: 1. ant插件 这个插件可能是我们最为经常使用的,若构建脚本是使用build.xml的,那构建引擎肯定会选择an ...
- Blend4开发:会飞的小鸟
1,绘图,动画制作: 2,运行截图: 源码:http://files.cnblogs.com/yuanli/Animals.zip 动画效果参见源码.
- “String.h” 源代码总结
<String.h> 总结: 常用的函数: 一.memchr: 说明:当第一次遇到字符ch时停止查找.如果成功,返回指向字符ch的指针:否则返回NULL. 代码: #include ...