uvalive3695Distant Galaxy

简介: 题意:给出平面上的n个点,找一个矩形,使得边界上包含尽量多的点。 代码: View Code 1 #include 2 #include 3 #include 4 #define DEBUG 5 using namespace std; 6 struct Z...

题意:给出平面上的n个点,找一个矩形,使得边界上包含尽量多的点。

代码:

View Code
 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <algorithm>
 4 #define DEBUG
 5 using namespace std;
 6 struct ZZ{
 7     int x, y;
 8     bool operator < (const ZZ& p) const{
 9         return x<p.x;
10     }
11 };
12 int max(int a, int b){
13     return a>b?a:b;
14 }
15 const int MAXN = 100 + 10;
16 ZZ p[MAXN];
17 int n, m, y[MAXN], on[MAXN], on2[MAXN], zl[MAXN];
18 
19 int solve(){
20     sort(p, p+n);
21     sort(y, y+n);
22     m = unique(y, y+n) - y;
23     if(m<=2) return n;
24     
25     int ans = 0;
26     for(int a=0; a<m; a++){
27         for(int b=a+1; b<m; b++){
28             int ymin = y[a];
29             int ymax = y[b];
30 
31             int k = 0;
32             for(int i=0; i<n; i++){
33                 if(i==0 || p[i].x!=p[i-1].x){
34                     k++;
35                     on[k] = on2[k] = 0;
36                     if(k==0) zl[k] = 0;
37                     else zl[k] = zl[k-1] + on2[k-1] - on[k-1];
38                 }
39                 if(p[i].y>ymin && p[i].y<ymax) on[k]++;
40                 if(p[i].y>=ymin && p[i].y<=ymax) on2[k]++;
41             }
42             if(k<=2) return n;
43 
44             int M = 0;
45             for(int j=1; j<=k; j++){
46                 ans = max(ans, zl[j]+on2[j]+M);
47                 M = max(M, on[j]-zl[j]);
48             }
49         }
50     }
51     return ans;
52 }
53 int main(){
54 #ifndef DEBUG
55     freopen("in.txt", "r", stdin);
56 #endif
57     int cas=0;
58     while(scanf("%d", &n)==1 && n){
59         for(int i=0; i<n; i++){
60             scanf("%d%d", &p[i].x, &p[i].y);
61             y[i]=p[i].y;
62         }
63         printf("Case %d: %d\n", ++cas, solve());
64     }
65     return 0;
66 }

这题感觉自己还是没理解透彻。

目录
相关文章
|
人工智能 算法 数据管理
工业机理模型
工业机理模型
691 2
|
数据采集 API 数据库
Google Earth Engine(GEE) ——geoBoundaries全球政治行政边界数据库
Google Earth Engine(GEE) ——geoBoundaries全球政治行政边界数据库
368 0
|
7月前
|
人工智能 Kubernetes Java
回归开源,两位 Java 和 Go 程序员分享的开源贡献指引
Higress是一个基于Istio和Envoy的云原生API网关,支持AI功能扩展。它通过Go/Rust/JS编写的Wasm插件提供可扩展架构,并包含Node和Java的console模块。Higress起源于阿里巴巴,解决了Tengine配置重载及gRPC/Dubbo负载均衡问题,现已成为阿里云API网关的基础。本文介绍Higress的基本架构、功能(如AI网关、API管理、Ingress流量网关等)、部署方式以及如何参与开源贡献。此外,还提供了有效的开源贡献指南和社区交流信息。
658 33
|
12月前
体育赛事直播系统怎么开发(足球篮球电竞)
一、通过购买现成源码(如“熊猫比分”)并进行二次开发,是一种快速启动体育直播项目的方式,适合需求变动不大、预算有限的情况。但需注意,大规模改动可能增加工作量和潜在错误。 二、全新定制开发体育直播系统,虽成本高、周期长(约2周),但能完全根据客户需求设计,提供更高的灵活性和定制化程度。开发前需详细规划功能与界面布局,确保最终产品符合预期。
体育赛事直播系统怎么开发(足球篮球电竞)
|
12月前
|
算法 网络协议 Python
探秘Win11共享文件夹之Python网络通信算法实现
本文探讨了Win11共享文件夹背后的网络通信算法,重点介绍基于TCP的文件传输机制,并提供Python代码示例。Win11共享文件夹利用SMB协议实现局域网内的文件共享,通过TCP协议确保文件传输的完整性和可靠性。服务器端监听客户端连接请求,接收文件请求并分块发送文件内容;客户端则连接服务器、接收数据并保存为本地文件。文中通过Python代码详细展示了这一过程,帮助读者理解并优化文件共享系统。
|
JSON JavaScript 前端开发
Google Charts
Google Charts
255 2
|
缓存 安全
预检请求(Preflight Request)
预检请求(Preflight Request)
666 3
|
安全 搜索推荐 机器人
纳米技术与医疗:纳米机器人的临床应用前景
【9月更文挑战第28天】纳米机器人作为纳米技术在医疗领域的重要应用,正逐步改变着传统医疗的面貌。它们在药物输送、癌症治疗、手术辅助和疾病诊断等方面展现出广阔的应用前景。随着科学技术的不断进步和纳米技术的不断成熟,我们有理由相信,纳米机器人将成为医疗领域的一个重要且不可或缺的组成部分,为人类的健康事业做出更大的贡献。同时,我们也应关注纳米技术的安全性和可靠性问题,确保其在医疗应用中的安全和有效。
1172 1
|
缓存 监控 前端开发
前端如何做性能优化?
【4月更文挑战第21天】前端性能优化涉及代码、图片、资源加载、渲染、网络等多个层面,包括压缩合并代码、利用缓存、压缩图片、使用CDN、减少DOM操作、启用HTTP/2等策略。其他方法还包括代码拆分、使用Web Workers和性能监控。优化过程应根据项目实际需求灵活调整,并注意平衡性能与代码可读性。
507 2
|
小程序 前端开发 语音技术
开源!!!垃圾分类识别小程序--------附源码!!!
开源!!!垃圾分类识别小程序--------附源码!!!
384 0

热门文章

最新文章