Finding Lines UVALive - 6955(随机)
给出n个点,问你有没有可能存在一条直线,这n个点中存在百分号p以上点在这条直线上。
两个点确定一条直线,所以可以随机枚举两个点,然后用这条直线去判断其他的点是不是在这条直线上,如果在这个直线上的点超过%p,那么就说明找到了一种情况
- #include<map>
- #include<set>
- #include<ctime>
- #include<cmath>
- #include<stack>
- #include<queue>
- #include<string>
- #include<vector>
- #include<cstdio>
- #include<cstdlib>
- #include<cstring>
- #include<iostream>
- #include<algorithm>
- #define lowbit(x) (x & (-x))
- #define INOPEM freopen("in.txt", "r", stdin)
- #define OUTOPEN freopen("out.txt", "w", stdout)
- typedef unsigned long long int ull;
- typedef long long int ll;
- const double pi = 4.0*atan(1.0);
- const int inf = 0x3f3f3f3f;
- const int maxn = 1e5+;
- const int maxm = ;
- const int mod = 1e9+;
- using namespace std;
- int n, m;
- int T, tol;
- struct Node {
- ll x, y;
- };
- Node node[maxn];
- int check(int i, int j, int k) {
- ll ans1 = (node[i].x - node[j].x) * (node[i].y - node[k].y);
- ll ans2 = (node[i].x - node[k].x) * (node[i].y - node[j].y);
- if(ans1 == ans2) return ;
- else return ;
- }
- //x1-x2 x1-x3
- //y1-y2 y1-y3
- int main() {
- srand(time());
- while(~scanf("%d%d", &n, &m)) {
- memset(node, , sizeof node);
- for(int i=; i<n; i++) scanf("%lld%lld", &node[i].x, &node[i].y);
- if(n <= ) {
- printf("possible\n");
- continue;
- }
- int ans = n*m;
- bool flag = false;
- for(int T=; T<=; T++) {
- int sum = ;
- int x = rand() % n;
- int y = rand() % n;
- while(x == y) y = rand() % n;
- for(int i=; i<n; i++) {
- if(i == x || i == y) continue;
- sum += check(x, y, i);
- if(sum * >= ans) {
- flag = true;
- break;
- }
- }
- if(flag) break;
- }
- printf("%s\n", flag ? "possible" : "impossible");
- }
- return ;
- }
Finding Lines UVALive - 6955(随机)的更多相关文章
- 随机算法 - HNU 13348 Finding Lines
Finding Lines Problem's Link: http://acm.hnu.cn/online/?action=problem&type=show&id=13348&am ...
- Finding Lines
Finding Lines 题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8& ...
- UVALive - 6955 Finding Lines 随机算法
题目链接: http://acm.hust.edu.cn/vjudge/contest/126968#problem/F 题意 给你n个点,问是否有>=p/100*n个点共线(p>=20& ...
- UVALive 6955 Finding Lines(随机化优化)题解
题意:问你是否有一条直线满足这条直线上的点个数与总个数之比不小于p 思路:解法太暴力了,直接随机取两个数,如果能满足条件就输出可以,否则不行.证明一下为什么可以随机化,题目给出可能有P >=20 ...
- Educational Codeforces Round 41 (Rated for Div. 2) D. Pair Of Lines (几何,随机)
D. Pair Of Lines time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- java随机生成验证码
package com.yuyuchen.util; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; im ...
- Gym101482 NWERC 2014(队内训练第4场)
-----------------------前面的两场感觉质量不高,就没写题解----------------------------- A .Around the Track pro:给定内多边形 ...
- Gym 101482 题解
B:Biking Duck 题意:现在有一个人要从(x1,y1)点走到(x2,y2)点, 现在走路的速度为v. 还有骑自行车的速度v2,自行车要从某个自行车站到另一个自行车站,现在我们可以视地图的边界 ...
- ImageUtil(验证码数据生成工具类)
登录界面时,常常会使用到验证码图片生成,程序如下: package util; import java.awt.Color; import java.awt.Font; import java.awt ...
随机推荐
- vue 开发依赖安装
安装element-ui yarn add element-ui --save 使用element-ui main.js import Vue from 'vue'; import ElementUI ...
- ShowDoc上手
ShowDoc是什么 每当接手一个他人开发好的模块或者项目,看着那些没有写注释的代码,我们都无比抓狂.文档呢?!文档呢?!Show me the doc !! 程序员都很希望别人能写技术文档,而自己却 ...
- Windows 机器上面同时安装mysql5.6 和 mysql5.7 的方法
1. 自己遇到的两个坑: . mysql 登录的时候 需要使用-P 来指定端口号 不然默认走 呢 . mysql 5.6 和 mysql 5.7 更改用户密码的命令不一样.. 我这边浪费了很长时间: ...
- java随笔4 java中接参整形转字符串
通过+‘’来实现
- SpringMVC配置三大组件
1.组件扫描器 使用组件扫描器省去在spring容器配置每个Controller类的繁琐. 使用<context:component-scan>自动扫描标记@Controller的控制器类 ...
- linux audit审计(8)--开启audit对系统性能的影响
我们使用测试性能的工具,unixbench,它有一下几项测试项目: Execl Throughput 每秒钟执行 execl 系统调用的次数 Pipe Throughput 一秒钟内一个进程向一个管道 ...
- linux audit审计(3)--audit服务配置
audit守护进程可以通过/etc/audit/auditd.conf文件进行配置,默认的auditd配置文件可以满足大多数环境的要求. local_events = yes write_logs = ...
- ABP实践学习
一.
- 使用javaWeb的二大(Listener、Filter)组件实现分IP统计访问次数
分析: 统计工作需要在所有资源之前都执行,那么就可以放到Filter中. 我们这个过滤器不打算做拦截操作!因为我们只是用来做统计 用什么东西来装载统计的数据.Map<String,Integer ...
- Lodop打印控件 打印透明图问题
Lodop通过增设transcolor属性实现了“先字后章”效果,这个属性可以把某种颜色转成类似透明的效果.例如:把图章的底色白色变成透明:transcolor="#FFFFFF" ...