zoukankan      html  css  js  c++  java
  • [COCI2015]TRAKTOR

    题目大意:
      一个$X imes Y(X,Yleq10^5)$的格子中,每秒钟依次$n(nleq10^6)$个蘑菇,
      告诉你每个蘑菇出现的时间和位置,问何时第一次出现$k(2leq kleq n)$点共线,且组成的直线平行于坐标轴,或与坐标轴呈45°夹角的情况?

    思路:
      开4个数组存一下每条符合要求的直线上的点数,
      每次$O(1)$算出这个点所属的4条直线,并加入这个点判断是否符合要求即可。

     1 #include<cstdio>
     2 #include<cctype>
     3 inline int getint() {
     4     register char ch;
     5     while(!isdigit(ch=getchar()));
     6     register int x=ch^'0';
     7     while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');
     8     return x;
     9 }
    10 const int X=100001;
    11 int cnt1[X],cnt2[X],cnt3[X*2],cnt4[X*2];
    12 int main() {
    13     const int n=getint(),m=getint();
    14     for(register int i=1;i<=n;i++) {
    15         const int x=getint(),y=getint();
    16         if(++cnt1[y]>=m||++cnt2[x]>=m||++cnt3[x-y+X]>=m||++cnt4[x+y]>=m) {
    17             printf("%d
    ",i);
    18             return 0;
    19         }
    20     }
    21     puts("-1");
    22     return 0;
    23 }
  • 相关阅读:
    公约数
    [TJOI2017]异或和
    [HNOI2014]世界树
    小清新数据结构题
    CF809E 【Surprise me!】
    [JXOI2017]颜色
    docker swarm集群
    jenkins构建maven项目
    jenkins软件工具部署
    jenkins持续集成
  • 原文地址:https://www.cnblogs.com/skylee03/p/8420958.html
Copyright © 2011-2022 走看看