Wannafly Union Goodbye 2016-A//初识随机化~
想来想去还是把这个题写下来了。自己在补题遇到了许多问题。
给出n(n<=1e5)个点,求是否存在多于p(p>=20)×n/100的点在一条直线上...
时限20s,多组数据,暴力至少n^2。考虑p>=20.所以我们可以随机点 一次随机到在存在的直线上的点的概率至少是1/5。
那么随机两个点确定一条直线,成功率为1/25,失败率为24/25;我们随机个x次 失败的概率为(24/25)^x。
x选的越大,成功可能就越高。我们随机个200次好了...其实内心觉得20次都多...
遇到的问题:时间种子多次清空...导致随机情况相同....没理解随机的实现..
极限情况点数<=2.....很坑啊...
#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <time.h>
#include <math.h>
using namespace std;
typedef long long ll;
const int N = 1e5+;
ll x[N],y[N];
bool judge(int n,int pp)
{
int p=rand()%n;
int q=rand()%n;
if(p==q) return false;
ll px = x[p]-x[q];
ll py = y[p]-y[q];
//px/dx = py/dy;
//px*dy = py*dx
//cout<<"PQ"<<p<<q<<cnt<<endl;
//cout<<px<<" "<<py<<endl;
int ans = ;
for(int i=;i<n;i++)
{
ll dx = (x[i]-x[q]);
ll dy = (y[i]-y[q]);
//cout<<dx<<" "<<dy<<endl;
if(i==p||i==q) continue;
if(px*dy==py*dx) ans++;
}
// cout<<ans<<endl;
return ans*>=pp*n;
}
int main()
{
srand(time(NULL));
int n,p;
while(scanf("%d%d",&n,&p)!=EOF)
{ for(int i=;i<n;i++)
{
scanf("%lld%lld",x+i,y+i);
}
bool mk = false;
for(int i=;i<;i++) if(judge(n,p)) mk = true;
if(n<=) mk = true;
if(mk) puts("possible");
else puts("impossible");
}
return ;
}
神奇的随机化~
Wannafly Union Goodbye 2016-A//初识随机化~的更多相关文章
- Wannafly Union Goodbye 2016
A 题意:平面上有n个点(n<=100000),给你一个p(20<=p<=100) 判断是否存在一条直线至少过[np/100](向上取整)个点,时限20s,多组数据 分析:概率算法 ...
- Goodbye 2016 总结与展望
今天居然是2016年的最后一天了,写点什么回忆吧. 2016开始的时候我刚拿到普及组一等奖,还只是压线,水平很差.学校并不知道这有多差,于是狠狠宣传这所谓的"光荣事迹".那段时间我 ...
- 【Mutual Training for Wannafly Union #1 】
A.Phillip and Trains CodeForces 586D 题意:过隧道,每次人可以先向前一格,然后向上或向下或不动,然后车都向左2格.问能否到达隧道终点. 题解:dp,一开始s所在列如 ...
- Mutual Training for Wannafly Union #1解题报告
---恢复内容开始--- q神等人组织的vjudge上的多校训练,题目基本上都来自于CF,#1是上周进行的,参加后感觉收获很多,因为上周准备期中比较忙,解题报告现在补上. 比赛地址(兼题目地址) A题 ...
- Wannafly Union#1
题目链接:http://vjudge.net/contest/142053#overview A.题意:有一个3*n的隧道,人和车轮流走,人先向右走一步,然后选在是在原地不动还是上下移动一格,之后车开 ...
- Mutual Training for Wannafly Union #6 E - Summer Trip(并查集)
题目链接:http://www.spoj.com/problems/IAPCR2F/en/ 题目大意: 给m个数字代表的大小,之后n组数据,两两关联,关联后的所有数字为一组,从小到大输出组数以及对应的 ...
- Mutual Training for Wannafly Union #2
codeforces 298A. Snow Footprints 分类讨论三种情况: ①..RRRRRR… ②..LLLLLLL… ③..RRRLLLL.. //AC by lwq: #includ ...
- Mutual Training for Wannafly Union #8 D - Mr.BG Hates Palindrome 取余
Mr.BG is very busy person. So you have been given enough time (1000 milliseconds) to help him. Mr. B ...
- Mutual Training for Wannafly Union #9
A(SPOJ NPC2016A) 题意:给一个正方形和内部一个点,要求从这个点向四边反射形成的路线的长度 分析:不断做对称,最后等价于求两个点之间的距离 B(CF480E) 题意:求01矩阵内由0组成 ...
随机推荐
- java发送udp广播包
2013-06-07 22:44 1272人阅读 评论(2) 收藏 举报 import java.io.IOException; import java.net.DatagramPacket; imp ...
- iOS证书和描述文件的配置
1.登录Apple开发者账号,进入Apple Developer主页,点击Account 2.点击Certificates,ID&Profiles 3.生成CRS文件 1.打开mac上的钥匙串 ...
- ncnn添加自己的layer
ncnn 是tencent公司开源的神经网络前向计算框架,github地址: https://github.com/Tencent/ncnn 通过简单的步骤可以添加自己的layer, 比如用位运算实现 ...
- poj1191(記憶化搜索)
題目鏈接:http://poj.org/problem?id=1191 題意:中文題誒- 思路:這道題有幾個關鍵點需要想通,不然會比較難做... 首先,題目給出的標準差公式並不是很好計算,需要給它變下 ...
- 内置对象(Math对象、Date对象、Array对象、String对象)常用属性和方法
Math对象 Math 是一个内置对象, 它具有数学常数和函数的属性和方法.不是一个函数对象. 与其它全局对象不同的是, Math 不是一个构造函数. Math 的所有属性和方法都是静态的. 跟数学 ...
- 00 | Two Sum
Question Given an array of integers, return indices of the two numbers such that they add up to a sp ...
- python——类与对象
__init__ 方法: 1.Init 初始化方法的返回值必须是None. 3.类没有定义阶段,函数有定义阶段(不调用不执行). 实例化时触发__init__方法执行,为对象添加属性.[t1=stu ...
- mac系统之前做过Windows8系统,可能移除时没有通过boot camp助理移除,所以想要再安装windows系统时,点击boot camp助理的继续,弹出启动磁盘不能被分区或恢复单分区。
因为把bootcamp分区抹掉,卸载,装载,点减号,合并成单分区,一直是操作失败.为了通过boot camp安装上Windows系统,索性重新安装mac ox系统,重新分区.重新开机,按住comman ...
- 搞定vscode编写java
下载vscode: 地址: https://code.visualstudio.com/ 安装插件 我这里下载的是绿色版,所以解压后 向桌面发送一个快捷方式 找到VS Code 的快捷方式位置: 右键 ...
- 湖南大学新生赛C,G,J题解
C: 思路:做几组数据就基本能发现规律,奇数为-1,偶数为1 代码: #include<cstdio> #include<iostream> #include<cstri ...