zoukankan      html  css  js  c++  java
  • 1278 相离的圆(51nod)

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1278

    这道题需要用到两个姿势第一将圆相离的模型转换成线段和线段之间不想交,然后还有一个就是修改循环变量的步长。达到降低时间复杂度的效果,不过只能降低系数,并不能降低次数= =

    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    #include<algorithm>
    #define inf 10000000
    using namespace std;
    struct node
    {
        int l,r;
    };
    bool cmp(node a,node b)
    {
        if(a.l==b.l)
            return a.r<b.r;
        return a.l<b.l;
    }
    node a[50000];
    int main()
    {
        int n,c,R;
        scanf("%d",&n);
        for(int i=0;i<n;i++)
        {
           scanf("%d %d",&c,&R);
           a[i].l=c-R;
           a[i].r=c+R;
        }
        sort(a,a+n,cmp);
       /* for(int i=0;i<n;i++)
        {
            printf("%d %d
    ",a[i].l,a[i].r);
        }*/
        int ans=0;
        int min;
        int i,j;
        for(i=0;i<n;i++)
        {
           for(j=i+100;j<n;j+=100)//在100的步长内进行寻找不相交的线段
           {
               if(a[j].l>a[i].r)
                break;
           }
           if(j>n) j=n;//大于n的时候要进行这步
           for(int k=j-1;k>=0&&k>j-101;k--)//然后在100内进行扫描
           {
               if(a[k].l<=a[i].r)
               {
                    ans+=n-(k+1);
                    break;
               }
           }
        }
        printf("%d
    ",ans);
        return 0;
    }
  • 相关阅读:
    自定义input file样式
    input text 不显示输入的历史记录
    白话 P-value
    R博客
    安装NXNET
    形象的解释神经网络激活函数的作用是什么?
    嵌入式选择与L1正则化
    “梯度下降法”理解
    控制台乱码
    R语言快捷键
  • 原文地址:https://www.cnblogs.com/NaCl/p/4725725.html
Copyright © 2011-2022 走看看