题意:问你是否有一条直线满足这条直线上的点个数与总个数之比不小于p

思路:解法太暴力了,直接随机取两个数,如果能满足条件就输出可以,否则不行。证明一下为什么可以随机化,题目给出可能有P >=20的点在线上,假设最惨的情况P = 20,有100个点,所以我们选一次选不到这条直线的概率为 1 - (20 * 19) / (100 * 99),简单点我们记做0.96,那么两次我们找不到这条线的概率为0.96*0.96……,所以我们随机300次(之前随机100次几率0.1都被撞到了),这样选不到这条线的概率就很小很小了,除非RP不行啊。

代码:

#include<ctime>
#include<cmath>
#include<cstdio>
#include<iostream>
#include<algorithm>
#define ll long long
#define ull unsigned long long
using namespace std;
const int maxn = + ;
const int seed = ;
const int MOD = ;
const int INF = 0x3f3f3f3f;
struct node{
int x, y;
}p[maxn];
bool judge(int u, int v,int i){
int x1 = p[u].x - p[i].x, x2 = p[v].x - p[i].x;
int y1 = p[u].y - p[i].y, y2 = p[v].y - p[i].y;
return y1 * x2 == y2 * x1;
}
int main(){
int n, per;
while(~scanf("%d%d", &n, &per)){
per = (int)ceil((double)per / * n);
for(int i = ; i < n; i++){
scanf("%d%d", &p[i].x, &p[i].y);
}
if(n <= ){
printf("possible\n");
continue;
}
srand(time());
int Time = ;
bool flag = false;
while(Time <= ){
int cnt = ;
int u = rand() % n;
int v = rand() % n;
while(v == u) v = rand() % n;
for(int i = ; i < n; i++){
if(i == v || i == u) continue;
if(judge(u, v, i)) cnt++;
if(cnt >= per){
flag = true;
break;
}
}
if(flag) break;
Time++;
}
if(flag)
printf("possible\n");
else
printf("impossible\n");
}
return ;
}

最新文章

  1. Sql Server系列:嵌套查询
  2. WordPress访问打开速度很慢的几种解决方法
  3. 【bzoj1014】 JSOI2008—火星人prefix
  4. php递归无限极分类实例
  5. Leetcode 107 Binary Tree Level Order Traversal II 二叉树+BFS
  6. 如何查看mac系统是32位还是64位的操作系统
  7. JavaScript生成GUID的多种算法小结
  8. c++ 12
  9. 64位平台支持大于2 GB大小的数组
  10. Windows下QT4.8.4编译环境的搭建(转载http://blog.csdn.net/bestgonghuibin/article/details/38933141)
  11. kali切换字符界面模式和切换图形界面模式
  12. iOS 轻击、触摸和手势的检测
  13. [UE4]线性插值Lerp
  14. 前端-----css(1)
  15. FastCGI sent in stderr: &quot;PHP Warning: simplexml_load_string(): Entity: line 1: parser error : Start tag expected, &#39;&amp;lt;&#39; not found in
  16. 去除外显子低质量reads时弹出错误“Invalid quality score value (char &#39;#&#39; ord 35 quality value -29) on line 4”和“Invalid quality score value (char &#39;.&#39; ord 46 quality value -18) on line 12”的解决方法
  17. 2018面向对象程序设计(Java)第3周学习指导及要求
  18. JQuery 获得元素的方法
  19. Ubuntu16.04安装Nessus和MSF
  20. 转载《spring定时任务轮询(spring Task)》

热门文章

  1. LeetCode - Duplicate Emails
  2. Android长截屏-- ScrollView,ListView及RecyclerView截屏
  3. 【黑金ZYNQ7000系列原创视频教程】07.自定义IP&mdash;&mdash;定制RTC IP实验
  4. gradle多项目构建及依赖
  5. java 中的&amp; &amp;&amp;区别以及 C++ 中&amp; &amp;&amp;的区别
  6. Oracle管理监控之Oracle数据库存储空间监控
  7. Windows中的DNS服务——正向解析&amp;反向解析配置 分类: AD域 Windows服务 2015-07-16 20:21 19人阅读 评论(0) 收藏
  8. OpenPGP协议的一个JavaScript实现:OpenPGP.js
  9. rbac - 界面、权限
  10. django 多数据分库