uva1382 Distant Galaxy
这道题,我们一开始就能想到O(n^5)的算法---n^4找矩阵的两个对顶角,n用来查找。但因为n<=100,n^5=10^10,所以我们必须用优化算法。我们先枚举上下界(这两条线上面要有点。用了离散化的思想),即局部枚举,然后在用n的时间一列一列的算(上面有点的。用了离散化的思想),最终算法O(n^3)
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
struct wo{
int x,y;
};
int cmp(wo a,wo b){
return a.x<b.x;
}//按行排序
wo a[105];
int n,m;
int y[105],on[105],on2[105],left1[105];//left是系统内部的一个名字
int solve(){
sort(a+1,a+n+1,cmp);
sort(y+1,y+n+1);
m=unique(y+1,y+n+1)-(y+1);//去重,计算出去重后直线x=l的个数
if(m<=2)return n;
int ans=0;
for(int i=1;i<m;i++){
for(int j=i+1;j<=m;j++){
int minn=y[i],maxn=y[j];//枚举上边界和下边界
int k=0;
for(int l=1;l<=n;l++){
if(l==1||a[l].x!=a[l-1].x){
k++;//新一条直线了
on[k]=on2[k]=0;
left1[k]=left1[k-1]+on2[k-1]-on[k-1];//计算当前这条直线
//左边(包括自己)有多少个点在上下边界上;
}
if(a[l].y>minn&&a[l].y<maxn)on[k]++;//计算当前直线上在上下边界(不包括)内有多少个点
if(a[l].y>=minn&&a[l].y<=maxn)on2[k]++;// 计算当前直线上在上下边界(包括)内有多少个点
}
if(k<=2)return n;//上下两条之间即可覆盖所有点则全都能被覆盖
int count1=0;
for(int l=1;l<=k;l++){
ans=max(ans,left1[l]+on2[l]+count1);//第l个直线在边界(矩阵的四条边)上左边有多少个点
//计算前k条直线选哪个最好(算出的是那个直线上的点数)
count1=max(count1,on[l]-left1[l]);
}
}
}
return ans;
}
int main(){
int cases=0;
while(scanf("%d",&n)!=EOF&&n){
for(int i=1;i<=n;i++){
scanf("%d%d",&a[i].x,&a[i].y);
y[i]=a[i].y;
}
printf("Case %d: %d\n",++cases,solve());
}
return 0;
}
转载于:https://www.cnblogs.com/c201904xyorz/p/9990791.html
uva1382 Distant Galaxy相关推荐
- LA 3695 Distant Galaxy
给出n个点的坐标(坐标均为正数),求最多有多少点能同在一个矩形的边界上. 题解里是构造了这样的几个数组,图中表示的很明白了. 首先枚举两条水平线,然后left[i]表示竖线i左边位于水平线上的点,on ...
- 【UVALive】3695 Distant Galaxy(......)
题目 传送门:QWQ 分析 好喵啊~~~~ 不会做 正解看蓝书P53吧 代码 #include <cstdio> #include <algorithm> using name ...
- 《算法竞赛入门经典——训练指南》第一章相关内容
#<算法竞赛入门经典--训练指南>第一章相关内容 希望各位大牛能指导! 红色为已经做了的...黄色背景是还有不懂地方,希望在年前能刷完第一章啊.... 更新版.google上貌似又加了ex ...
- 爱做梦的人工智能「Stabled Diffusion」
文章目录 开始之前 一.背景 1.1 项目速览 1.2 模型结构 1.3 参考内容 二.部署 2.1 初始化运行环境 2.2 初始化调用函数 2.3 Text To Image 2.3.1 参数配置 ...
- 【Blender】Stability AI插件 - AI生成图像和动画
Stability AI 的官方插件允许 Blender 艺术家使用现有的项目和文本描述来创建新的图像.纹理和动画. 推荐:用 NSDT场景设计器 快速搭建3D场景. 1.安装Stability fo ...
- AI绘画(以后也叫AI视频)
大概半年前,AI 绘画工具 Disco Diffusion 从 Text-to-Image 开发社区和设计行业,火到了普通用户的视野中.即便它界面简陋,满屏英文和代码,也"劝退"不 ...
- 三星电池正在获取使用模式_三星Galaxy S10系列超大电池持久动力,解决电量烦恼...
在这个信息爆炸的时代,智能手机与移动支付几乎充斥着我们生活的每一个角落.手机上的电量一旦泛红见底,就会让人感到束手束脚.焦虑不安.确实,智能手机的普及以及锂电池技术发展的瓶颈,让人经常性的出现电量烦恼 ...
- c7pro android7,三星c7pro和iphone7哪个值得买?三星Galaxy c7 pro和苹果iphone7区别对比详细评测...
三星c7 pro介绍: 三星C7 Pro 三星C7 Pro可以看作是去年底上市的三星C9 Pro低配版,屏幕变小了,硬件配置也有所降低,不过配备了骁龙625升级版的骁龙626处理器,硬件方面也是颇具看 ...
- galaxy android 8,三星终于正式升级安卓8.0!Galaxy S8尝鲜
原标题:三星终于正式升级安卓8.0!Galaxy S8尝鲜 经过长时间的测试,在友商陆续吃上奥利奥之后,三星终于开始向Galaxy S8/S8+正式推送安卓8.0,也带来了新的Experience U ...
最新文章
- 面试官:说说Spring AOP、AspectJ、CGLIB ?它们有什么关系?
- 腾讯2016春季实习生(技术运营岗)招聘电话面试题汇集。
- app启动流程:冷启动,热启动,暖启动
- linux 0x00,linux 学习笔记0x00
- 从C语言的角度重构数据结构系列(九)-数据结构哈希表分糖果
- 如何测试机房的速度和带宽?
- (笔记)网络技术学习交流会
- oc c语言,OC之C语言的基础知识
- 【Java笔记】Java开发实战经典 - 第三章
- 【手记】解决Intel Management Engine Interface黄色感叹号
- java 极光推送_极光推送java实现
- 分享两个开源的成品项目,一个视频播放器,一个音乐播放器!
- 【Matlab图像加密】Logistic+Tent+Kent+Henon图像加密与解密【含GUI源码 1745期】
- Linux安装Perl(最新版)
- java用ssm框架开发的空气质量检测系统源码网站实战项目
- 如何取得UnityHub内旧版本Unity下载链接
- 3.1递归实现逆序输出整数
- 文华期货数据格式公布
- 关于Mac上使用百度云下载速度慢的解决方案
- CCF认证考试 202012-5星际旅行 (100分)(线段树)
热门文章
- python int函数的实现_python实现int函数的案例分析
- kotlin 复制对象属性_Kotlin面向对象编程笔记
- 禅道备份功能_禅道数据库备份
- 武昌工学院计算机专业学费,2016年武昌工学院学费专业收费情况及综合排名
- 计算机导航医学应用,计算机导航技术在口腔颌面外科应用中的新发展
- bootice添加linux_如何使用老毛桃winpe的Bootice工具新建实模式启动项(Grub/Linux)?
- 怎样有效的学会php,十天学会PHP - 序2,有效的学习方法 (20180822-1)
- php+select为空,SELECT时候,如何处理某字段空值?
- 405 not allowed什么意思_clock是什么意思
- 计算机组成原理试卷分析,《计算机组成原理与汇编语言》试卷分析报告.doc.docx...