想来想去还是把这个题写下来了。自己在补题遇到了许多问题。

  给出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//初识随机化~的更多相关文章

  1. Wannafly Union Goodbye 2016

    A 题意:平面上有n个点(n<=100000),给你一个p(20<=p<=100) 判断是否存在一条直线至少过[np/100](向上取整)个点,时限20s,多组数据 分析:概率算法 ...

  2. Goodbye 2016 总结与展望

    今天居然是2016年的最后一天了,写点什么回忆吧. 2016开始的时候我刚拿到普及组一等奖,还只是压线,水平很差.学校并不知道这有多差,于是狠狠宣传这所谓的"光荣事迹".那段时间我 ...

  3. 【Mutual Training for Wannafly Union #1 】

    A.Phillip and Trains CodeForces 586D 题意:过隧道,每次人可以先向前一格,然后向上或向下或不动,然后车都向左2格.问能否到达隧道终点. 题解:dp,一开始s所在列如 ...

  4. Mutual Training for Wannafly Union #1解题报告

    ---恢复内容开始--- q神等人组织的vjudge上的多校训练,题目基本上都来自于CF,#1是上周进行的,参加后感觉收获很多,因为上周准备期中比较忙,解题报告现在补上. 比赛地址(兼题目地址) A题 ...

  5. Wannafly Union#1

    题目链接:http://vjudge.net/contest/142053#overview A.题意:有一个3*n的隧道,人和车轮流走,人先向右走一步,然后选在是在原地不动还是上下移动一格,之后车开 ...

  6. Mutual Training for Wannafly Union #6 E - Summer Trip(并查集)

    题目链接:http://www.spoj.com/problems/IAPCR2F/en/ 题目大意: 给m个数字代表的大小,之后n组数据,两两关联,关联后的所有数字为一组,从小到大输出组数以及对应的 ...

  7. Mutual Training for Wannafly Union #2

    codeforces 298A. Snow Footprints 分类讨论三种情况: ①..RRRRRR…  ②..LLLLLLL… ③..RRRLLLL.. //AC by lwq: #includ ...

  8. 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 ...

  9. Mutual Training for Wannafly Union #9

    A(SPOJ NPC2016A) 题意:给一个正方形和内部一个点,要求从这个点向四边反射形成的路线的长度 分析:不断做对称,最后等价于求两个点之间的距离 B(CF480E) 题意:求01矩阵内由0组成 ...

随机推荐

  1. java.endorsed.dirs的作用

    java.endorsed.dirs   java.ext.dirs 用于扩展jdk的系统库,那么 -Djava.endorsed.dirs 又有什么神奇的作用呢? java提供了endorsed技术 ...

  2. Centos7更新阿里yum源

    一.下载repo文件 wget http://mirrors.aliyun.com/repo/Centos-7.repo 二.备份并替换系统的repo文件 cp Centos-7.repo /etc/ ...

  3. 无法加载MainifestResourceTransformer

    Cannot load implementation hint 'org.apache.maven.plugins.shade.resource.MainifestResourceTransforme ...

  4. tf.pad()

      说一下我理解的tf.pad(),先来看一下定义: def pad(tensor, paddings, mode="CONSTANT", name=None, constant_ ...

  5. 利用正则取出Stirng中“”引号内的内容

    // 取出所有""中间的内容,正则如下 Pattern pattern1 = Pattern.compile("(?<=\")([\\S]+?)(?=\& ...

  6. 关于 Overtrue 的拼音库 overtrue/pinyin 为何 travis 为 error

    什么是ThinkSNS ? ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新版本为ThinkSNS+(简称TS+).Thin ...

  7. 人民网慕课联手FISCO BCOS开源社区上线“区块链学院”

    FISCO BCOS是完全开源的联盟区块链底层技术平台,由金融区块链合作联盟(深圳)(简称金链盟)成立开源工作组通力打造.开源工作组成员包括博彦科技.华为.深证通.神州数码.四方精创.腾讯.微众银行. ...

  8. echart表格,动态的通过ajax从后台获取数据动态的展示数据

    官网上都是介绍的echar表格的展示方法,但是都是静态数据,一开始的时候我总是纳闷,这些数据都是怎么上上去的 , 后来通过一些方法,当然这些方法也不是我自己写出来的,也是通过在网上收集了一下 ,现在才 ...

  9. Django之extra

    extra过滤 extra extra(select=None, where=None, params=None, tables=None, order_by=None, select_params= ...

  10. Codeforces 1168C(二进制、dp)

    要点 '&'操作暗示二进制上按位思考 对于y为1的位,要求x和y之间要至少有两个此位为1的(包含x.y),这样&起来才不是0.而这些位中只要存在一个是ok的即可 dp去求每个x的每个位 ...