Codeforces 101482F(gym)随机数

给出n个点,求是否存在一条直线,使得落在直线上的点占所有点的p%以上。

n<=100000

2<=p<=100

#include<iostream>
#include<cstdio>
#include<cstring>
#include<ctime>
#include<cstdlib>
#define maxn 100010
using namespace std;
int n;
int p;
struct node{
    long long x,y;
}a[maxn];
bool check(int id1,int id2){
    node line;
    line.x=a[id1].x-a[id2].x;
    line.y=a[id1].y-a[id2].y;
    int num=2;
    for(int i=0;i<n;i++){
        if(i==id1||i==id2)continue;
        node line2;
        line2.x=a[i].x-a[id1].x;
        line2.y=a[i].y-a[id1].y;
        if(line.x*line2.y==line.y*line2.x)
            num++;
    }
    if(100*num>=p*n)return 1;
    return 0;
}
int main(){
    srand(time(0));rand();rand();
    scanf("%d%d",&n,&p);
    if(n==1){
        puts("possible");
        return 0;
    }
    for(int i=0;i<n;i++)
        scanf("%lld%lld",&a[i].x,&a[i].y);
    for(int i=1;i<=300;i++){
        int id1=rand()*rand()%n;
        int id2=rand()*rand()%n;
        if(id1==id2){
            if(id1==n-1)id2--;
            else id2++;
        }
        if(check(id1,id2)){
            puts("possible");
            return 0;
        }
    }
    puts("impossible");
    return 0;
}

原文地址:https://www.cnblogs.com/thmyl/p/12297373.html

时间: 2024-10-21 16:53:52

Codeforces 101482F(gym)随机数的相关文章

http://codeforces.com/gym/100623/attachments E题

http://codeforces.com/gym/100623/attachments E题第一个优化它虽然是镜像对称,但它毕竟是一一对称的,所以可以匹配串和模式串都从头到尾颠倒一下第二个优化,与次数无关,所以排个序就完事了 1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 #include<algorithm> 5 #include<cmath> 6 #include<

http://codeforces.com/gym/100623/attachments H题

http://codeforces.com/gym/100623/attachments H题已经给出来的,包括后来添加的,都累加得到ans,那么从1-ans都是可以凑出来的,如果ans<a[now]-1,那么就添加一个ans+1,然后继续操作. 1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 #include<algorithm> 5 #include<cmath>

如何查看Codeforces的GYM中比赛的数据

前置条件:黄名(rating >= 2100) 或者 紫名(rating >= 1900)并且打过30场计分的比赛. 开启:首先打开GYM的界面,如果符合要求会在右边展示出一个Coach rights框,点击确定. 之后右边会变成问是否开启coach mode, 点击yes之后就可以愉快的看gym数据了QAQ 原文地址:https://www.cnblogs.com/pkgunboat/p/11478844.html

http://codeforces.com/gym/100694/problem/M The Fifth Season (巴什博奕)

题目链接 一直觉得巴什博奕是最简单的博弈遇到肯定没问题,结果被虐惨了,看完标程错了10多遍都没反应过来,当然标程题解和代码的意思也写反了,但是还是想对自己说一句mdzz,傻啊!!!这道题很不错,我觉得很有必要拿来写一篇博客. 题意:n个石子,两个人轮流取,q次询问,每次询问给定k和l,取的石子数目在k到l之间,假设两个人的取法都为最佳即向着自己赢的目标取,问一共能取多少次. 题解:巴什博奕,接下来的叙述中用a和b代替k和l.根据巴什博奕,首先ans=n%(a+b)*2是肯定的,问题就在于余数p.

【Codeforces】Gym 101156G Non-Attacking Queens 打表

题意 求$n\times n$的棋盘上放$3$个皇后使得互相不攻击的方案数 拓展是$m\times n$棋盘上放$k$皇后,暴力打表找到了公式 OEIS 代码 import java.math.BigInteger; import java.util.Scanner; /** * Created by cyuun on 2018/1/24. */ public class Main { public static void main(String[] args) { BigInteger n,a

【Codeforces】Gym 101156E Longest Increasing Subsequences LIS+树状数组

题意 给定$n$个数,求最长上升子序列的方案数 根据数据范围要求是$O(n\log n)$ 朴素的dp方程式$f_i=max(f_j+1),a_i>a_j$,所以记方案数为$v_i$,则$v_i=v_i+v_j,(f_i=f_j+1)$,利用lis的$O(n\log n)$树状数组做法同时维护长度和方案数 从通酱博客里还看到更详尽的解释:stackoverflow 时间复杂度$O(n\log n)$ 代码 #include <bits/stdc++.h> using namespace

【Codeforces】Gym 101173B Bipartite Blanket 霍尔定理+状压DP

题意 给一张$n\times m$二分图,带点权,问有多少完美匹配子集满足权值和大于等于$t$ 这里有一个结论:对于二分图$\mathbb{A}$和$\mathbb{B}$集合,如果子集$A \in \mathbb{A},B \in \mathbb{B}$,且$A,B$分别是完美匹配的子集,那么$A \cup B$属于一个完美匹配 有了这个结论之后,考虑单侧,枚举子集$S$,利用霍尔定理判定$S$是否是完美匹配,并通过dp转移状态,记录下单侧所有满足条件的权值和,然后两侧一起考虑累加得到答案 时

HIT ACM 2018春 week1 codeforces.com/gym/101652 题解

A 题意:判断一个字符串是否存在偶数长度回文子串. 思路:判断是否有两个字符相等即可.O(n). 1 #include <iostream> 2 #include <fstream> 3 #include <sstream> 4 #include <cstdlib> 5 #include <cstdio> 6 #include <cmath> 7 #include <string> 8 #include <cstri

Codeforces Gym 100269 Dwarf Tower (最短路)

题目连接: http://codeforces.com/gym/100269/attachments Description Little Vasya is playing a new game named "Dwarf Tower". In this game there are n different items,which you can put on your dwarf character. Items are numbered from 1 to n. Vasya want