2011百校联动“菜鸟杯”程序设计公开赛Cover The Enemy

2024-01-10 07:58

本文主要是介绍2011百校联动“菜鸟杯”程序设计公开赛Cover The Enemy,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 今天下午又重新温习了菜鸟杯题,,发现好多题就是用枚举方法A掉的,,里面并没有夹杂太多方面的高级算法,,没想到就这题在比赛竟然好些做不出来,,看来自己做的题还是少啊!!!!!

思路:这一题求最小半径平方和,先把第一个塔离敌军的营地排一下序(升序,降序都可以),然后枚举所有到第一个塔的距离,通过找第一个塔不能覆盖的敌军阵营离第二个塔最大的距离得出第二个塔的半径,,还有一点要注意就是最找离第二个塔最大距离时需要再开个数组存一下,,这样可以把时间复杂度从n*n降到n,一开始我没有存储,果断tle。。。

AC代码:

#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#define N 100005
using namespace std;
typedef struct{ int x,y;
int d1,d2;
}Node;
Node p[N];
Node t1,t2;
int maxd2[N];
bool cmp(const Node& a,const Node& b)
{return a.d1>b.d1;}
int distan(Node a,Node b)
{ return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);}
int main()
{ int Case;
scanf("%d",&Case);
while(Case--)
{ scanf("%d%d%d%d",&t1.x,&t1.y,&t2.x,&t2.y);
int n;
scanf("%d",&n);
for(int i=0;i<n;++i)
{ scanf("%d%d",&p[i].x,&p[i].y);
p[i].d1=distan(t1,p[i]);
p[i].d2=distan(t2,p[i]);
}
sort(p,p+n,cmp);
int bb=0xffffff;
memset(maxd2,0,sizeof(maxd2));
maxd2[0]=0;
for(int i=0;i<n;++i)
{  
maxd2[i+1]=max(maxd2[i],p[i].d2);
bb=min(maxd2[i]+p[i].d1,bb);
}
bb=min(bb,maxd2[n]);
printf("%d\n",bb);
}return 0;
}


超时的代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#define N 100005
using namespace std;
typedef struct{ int x,y;
int d1,d2;
}Node;
Node p[N];
Node t1,t2;
bool cmp(const Node& a,const Node& b)
{return a.d1>b.d1;}
int distan(Node a,Node b)
{ return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);}
int main()
{ int Case;
//cin>>Case;
scanf("%d",&Case);
while(Case--)
{ //cin>>t1.x>>t1.y>>t2.x>>t2.y;
scanf("%d%d%d%d",&t1.x,&t1.y,&t2.x,&t2.y);
int n;
//cin>>n;
scanf("%d",&n);
for(int i=0;i<n;++i)
{ //cin>>p[i].x>>p[i].y;
scanf("%d%d",&p[i].x,&p[i].y);
p[i].d1=distan(t1,p[i]);
p[i].d2=distan(t2,p[i]);
}
sort(p,p+n,cmp);
int bb=0xffffff;
for(int i=0;i<n;++i)
{   int aa=0;
for(int j=0;j<i;++j)
aa=max(aa,p[j].d2);
bb=min(p[i].d1+aa,bb);
}
//cout<<bb<<endl;
printf("%d\n",bb);
}return 0;
}


 

这篇关于2011百校联动“菜鸟杯”程序设计公开赛Cover The Enemy的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/590091

相关文章

C语言程序设计(数据类型、运算符与表达式)

一、C的数据类型 C语言提供的数据类型: 二、常量和变量 2.1常量和符号常量 在程序运行过程中,其值不能被改变的量称为常量。 常量区分为不同的类型: 程序中用#define(预处理器指令)命令行定义变量将代表常量,用一个标识符代表一个常量,称为符合常量。 2.2变量 变量代表内存中具有特定属性的一个存储单元,用来存放数据,在程序运行期间,这些值是可以 改变的。 变

C语言程序设计(选择结构程序设计)

一、关系运算符和关系表达式 1.1关系运算符及其优先次序 ①<(小于) ②<=(小于或等于) ③>(大于) ④>=(大于或等于 ) ⑤==(等于) ⑥!=(不等于) 说明: 前4个优先级相同,后2个优先级相同,关系运算符的优先级低于算术运算符,关系运算符的优先级高于赋值运算符 1.2关系表达式 用关系运算符将两个表达式(可以是算术表达式或关系表达式,逻辑表达式,赋值表达式,字符

智能工厂程序设计 之1 智能工厂都本俱的方面(Facet,Aspect和Respect)即智能依赖的基底Substrate 之1

Q1、昨天分别给出了三个智能工厂的 “面face”(里面inter-face,外面outer-face和表面surface) 以及每个“面face” 各自使用的“方”(StringProcessor,CaseFilter和ModeAdapter)  。今天我们将继续说说三个智能工厂的“方面” 。在展开之前先看一下三个单词:面向facing,取向oriented,朝向toword。理解这三个词 和

C语言程序设计 笔记代码梳理 重制版

前言 本篇以笔记为主的C语言详解,全篇一共十章内容,会持续更新基础内容,争取做到更详细。多一句没有,少一句不行!  形而上学者谓之道,形而下学者谓之器 形而上学者谓之道,形而下学者谓之器 第1章 C语言的流程 1.C程序经历的六个阶段 编辑(Edit)预处理(Preprocess)编译(Compile)汇编(Assemble)链接(Link)执行(Execute)  2.

ACM东北地区程序设计大赛

不得不说随着参赛级别的提高,题目真的是越来越难啊,不过队长真是给力啊,在我们三个共同努力之下拿下了地区赛三等奖,哈哈我们可是大一唯一一只获奖队,终于在这次比赛打败了田大神。。。大神是失手了,俺和他差距还是挺大的。。。队友陈彤马上要去服兵役了,他说这是我们送给他最好的离别礼物,希望那家伙在部队好好干,以后谁干揍我!!!东北地区赛结束后,今年已经估计没机会参加亚洲区比赛了,赶紧补高数和线数啊!!别挂了

[含视频和源码]CRUD的最佳实践,联动前后端,包含微信小程序,API,HTML等(三)

关说不练假把式,在上一,二篇中介绍了我心目中的CRUD的样子 基于之前的理念,我开发了一个命名为PasteTemplate的项目,这个项目呢后续会转化成项目模板,转化成项目模板后,后续需要开发新的项目就可以基于这个模板创建,这样就不要copy一个旧的项目,然后删删删,改改改,重命名等操作了 强迫症,一个项目的名字就得统一,心里才舒服 那么本次作者就带来了实物,本次主要介绍管理端的内容,我们一起

pta-2024年秋面向对象程序设计实验一-java

文章申明:作者也为初学者,解答仅供参考,不一定是最优解; 一:7-1 sdut-sel-2 汽车超速罚款(选择结构) 答案: import java.util.Scanner;         public class Main { public static void main(String[] arg){         Scanner sc=new Scanner(System

【python 图像识别】图像识别从菜鸟走向大神系列1

无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。人工智能教程 一、安装配置(python2.7) 1.pip install pytesseract2、pip install pyocr3、pip install pillow4、安装tesseract-ocr:http

菜鸟入门Docker

初始Docker Docker的概念 Docker的用途 DOcke的安装 Docker架构 配置Docker镜像加速器 Docker常用命令 Docker服务相关的命令。 Docker镜像相关的命令 Docker容器相关的命令 容器的数据卷 数据卷的概念和作用 配置数据卷 Docker应用部署 Docker部署mysql Docker部署tomcat Docker

C语言程序设计(算法的概念及其表示)

一、算法的概念 一个程序应包括两个方面的内容: 对数据的描述:数据结构 对操作的描述:算法 著名计算机科学家沃思提出一个公式: 数据结构 +算法 =程序 完整的程序设计应该是: 数据结构+算法+程序设计方法+语言工具 广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”。 对同一个问题,可有不同的解题方法和步骤。为了有效地进行解题,不仅需要保证算法正确,还要考虑算