首页 > 其他分享 >NEFU 635(二分+枚举)

NEFU 635(二分+枚举)

时间:2023-05-31 17:38:23浏览次数:53  
标签:return 635 Point int mid NEFU 枚举 const include


题目:Twinkle Twinkle Little Star

 

题意:就是给n个点的坐标,然后在这个图形中找出一个边长最小的正方形,要求正方形的边平行于坐标轴且覆盖的点大于等于k个。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

const int N = 200010;
const int INF = 999999999;

struct Point
{
    int x,y;
    bool operator < (const Point &a) const
    {
         if(x!=a.x) return x < a.x;
         return y < a.y;
    }
};

Point p[N];

int n,k,y[N];

int judge(int len)
{
    int pre = -INF;
    for(int i=0,j;i<n;i++)
    {
        if(pre!=p[i].x)
        {
             pre = p[i].x;
             int cnt = 0;
             for(j=i;j<n;j++)
             {
                 if(p[j].x>=pre&&p[j].x<=pre+len)
                     y[cnt++] = p[j].y;
                 else break;
             }
             sort(y,y+cnt);
             if(cnt<k) continue;
             int pre1 = -INF;
             for(int r=0;r+k-1<cnt;r++)
             {
                  if(pre1!=y[r])
                  {
                      pre1 = y[r];
                      int up = upper_bound(y,y+cnt,pre1+len)-y-r;
                      if(up>=k) return 1;
                  }
             }
        }
    }
    return 0;
}

int main()
{
    int t=1;
    while(~scanf("%d%d",&n,&k))
    {
        for(int i=0;i<n;i++)
            scanf("%d%d",&p[i].x,&p[i].y);
        sort(p,p+n);

        int R = max(p[n-1].x-p[0].x,p[n-1].y-p[0].y);
        int L = 0;
        int ret = 0;
        while(L<=R)
        {
            int mid = (L+R)>>1;
            if (judge(mid))
            {
                ret = mid;
                R = mid-1;
            }
            else L = mid+1;
        }
        printf("Case %d: %d\n",t++,ret);
    }
    return 0;
}

 

 

标签:return,635,Point,int,mid,NEFU,枚举,const,include
From: https://blog.51cto.com/u_16146153/6388583

相关文章

  • Java中枚举类的特殊用法-使用枚举实现单例模式和策略模式
    场景设计模式-单例模式-饿汉式单例模式、懒汉式单例模式、静态内部类在Java中的使用示例:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/127555096设计模式-单例模式-注册式单例模式-枚举式单例模式和容器式单例模式在Java中的使用示例:https://blog.csdn.net/BAD......
  • ACM-ICPC Nanjing Onsite 2018 - K(随机枚举+四维bfs)
    题目链接:https://nanti.jisuanke.com/t/33680 解题思路:随机两个袋鼠的位置,使得让他们相遇,那么这个操作就是一个四维的bfs,前两维代表第一只袋鼠的位置,后两维表示第二只袋鼠的位置。这样随机枚举最多是N*M次。所以时间复杂度最最最最坏情况也就O(N^3*M^3)。 #include<bits/stdc+......
  • hdu 3635(并查集+路径压缩变形)
    解题思路:这道题想了我好久,因为我把城市的编号一起考虑进去了,结果想了好久都没A,最后看了别人的题解居然都没有考虑到城市的编号,不考虑城市编号的问题的话就是一个很水的并查集了。#include<iostream>#include<cstdio>#include<cstring>usingnamespacestd;constintMAXN=1000......
  • 认识枚举
         ......
  • C语言编程—枚举
    枚举是C语言中的一种基本数据类型,用于定义一组具有离散值的常量。它可以让数据更简洁,更易读。枚举类型通常用于为程序中的一组相关的常量取名字,以便于程序的可读性和维护性。定义一个枚举类型,需要使用enum关键字,后面跟着枚举类型的名称,以及用大括号{}括起来的一组枚举常量。......
  • rust 初识基础: 变量、数据类型、函数、所有权、枚举
    了解到rust和WebAssembly的结合使用,可以构建前端应用,而且性能也比较好。初步学习使用rust是预编译静态类型语言。安装rust官网下载rust-CN,大致了解下为什么选择:高性能、可靠性、生产力。打开控制台啊,执行安装(mac系统,windwos或其他系统查看官网)&>curl--proto......
  • IIS短文件名暴力枚举漏洞利用工具(IIS shortname Scanner)
    脚本可以测试对应的URL是否存在漏洞,若存在漏洞,则猜解文件夹下所有的短文件名:包括文件和文件名。网上早前已经有公开的工具了:https://code.google.com/p/iis-shortname-scanner-poc/我没有参考他的代码。自己用python实现了一个漏洞利用脚本。简单测试,发现比上面的POC能猜解到更......
  • 枚举类
    枚举类1.什么是枚举类枚举类就是对象个数有限且确定的类。比如:季节类,一共就四个对象:春,夏,秋,冬。对象个数有限,可以一一列举出来;对象一旦被定义,不可进行修改。当需要定义一组常量时,强力推使用枚举类若枚举只有一个对象,则可以作为一种单例模式的实现方式。枚举类的属......
  • 递归实现指数型枚举(例)
    从1~n这n个整数中随机选取任意多个,输出所有可能的选择方案。#include<iostream>//C++标准库中的头文件.用于控制台输入和输出。#include<cstring>//用于处理字符串的函数和操作#include<algorithm>//提供了许多常用的算法函数,用于对数据进行排序、查找、变换和操......
  • CodeForces 1105B Zuhair and Strings(思维 + 枚举)
    传送门题目大意就是给你一个字符串,还有一个等级K,K的具体含义就是连续的相同的字符串的个数,题目就是要求长度为k的,字符一样的子串有几个,如果k==2就是比如aa,bb,cc,dd,..... 这样的,注意不能重叠。因为题目给的数据范围在2e5,所以枚举从a到z,然后取最大值就好了。代码如下#incl......