解题思路

  1. -100和+100是没有用的,只要知道左边的飞船轴和右边的飞船轴离y轴一样近即可。为简单起见,我们将左边的轴设为-1,右边的设为1。
  2. 某个点能摧毁的飞船一定是因为有两个飞船关于这个点对称。即若(-1,y1)和(1,y2)能互相摧毁,说明他们关于(0,(y1+y2)/2)对称。
  3. 所以我们只用求出左边的点y1与右边的点y2的和y1+y2。((y1+y2)/2为对称点,为了消除小数,我们不除以2)
  4. 记录每个y1+y2的值能消除左边的点的位置,和右边的点的位置。
  5. 找到两个不同的y1+y2,将他们能消除的左右边的位置分别合并,用(左边的数量+右边的数量)更新ans即可。

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll; //输入
int a[100];int b[100];
//mp存a[i]+b[j]放在set数组的第几个位置
map <int,int> mp;
//k表示set数组中有效数据的长度
int k = 0;
set<int> sl[20010],sr[20010],sll,srr;
set<int>::iterator it;
int main(){
ios::sync_with_stdio(false);
int n,m;
cin >> n >> m;
for(int i = 1;i <= n; ++i) cin >> a[i];
for(int i = 1;i <= m; ++i) cin >> b[i];
for(int i = 1;i <= n; ++i){
for(int j = 1;j <= m; ++j){
//如果a[i]+b[j]没出现过就给一个新的set
//否则,就将这两个元素插入旧的set
if(mp[a[i]+b[j]] == 0){
mp[a[i]+b[j]] = ++k;
sl[k].insert(i);
sr[k].insert(j);
} else{
sl[mp[a[i]+b[j]]].insert(i);
sr[mp[a[i]+b[j]]].insert(j);
}
}
}
int ans = 0;
//W78的特判
if(k == 1){
ans = sl[1].size()+sr[1].size();
cout << ans << endl;
return 0;
}
//将任意两个不同的set合并,两个set的大小之和即为这两个点能摧毁的飞行船的数量。
for(int i = 1;i <= k; ++i){
for(int j = i+1;j <= k; ++j){
sll = sl[i];srr = sr[i];
for(it = sl[j].begin();it != sl[j].end(); it++){
sll.insert(*it);
}
for(it = sr[j].begin();it != sr[j].end(); it++){
srr.insert(*it);
}
ans = max(ans, (int)(sll.size()+srr.size()));
}
}
cout << ans << endl;
return 0;
}

Codeforces 993C. Careful Maneuvering(详细注解)的更多相关文章

  1. codeforces 993c//Careful Maneuvering// Codeforces Round #488 by NEAR (Div. 1)

    题意:x轴-100和+100的有敌人飞船,纵坐标由输入数据给出,我方有2飞船在x轴0,y坐标待定.0时刻时敌人同时向我方2飞船发出光线,光线会穿透飞船打到敌人自己,问2飞船放在哪敌人损失最大? 假如- ...

  2. uboot-的start.S详细注解及分析

    原文地址:uboot-的start.S详细注解及分析 作者:zhouyg11 大多数bootloader都分为stage1和stage2两部分,u-boot也不例外.依赖于CPU体系结构的代码(如设备 ...

  3. gulp入门教程(详细注解)

    本文转载自http://www.ydcss.com/archives/18 简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很 ...

  4. 通过调用门进行有特权级变换的转移,详细注解 对pmtest5.asm解释很详细.

    http://www.myexception.cn/operating-system/484288.html http://www.myexception.cn/operating-system/44 ...

  5. CF993C Careful Maneuvering bitset_枚举

    Code: #include<cstdio> #include<map> #include<iostream> #include<cmath> #inc ...

  6. 利用easyui的行编辑自动增加一行来进行增删有详细注解

    jQuery EasyUI 框架提供了创建网页所需的一切,帮助您轻松建立站点. easyui 是一个基于 jQuery 的框架,集成了各种用户界面插件. easyui 提供建立现代化的具有交互性的 j ...

  7. Android Spinner 下拉框简单应用 详细注解

    目录 Android Spinner 代码部分 Spinner代码介绍 核心代码 说在最后 @ Android Spinner Spinner 提供下拉列表式的输入方式,该方法可以有效节省手机屏幕上的 ...

  8. 【Codeforces】Round #488 (Div. 2) 总结

    [Codeforces]Round #488 (Div. 2) 总结 比较僵硬的一场,还是手速不够,但是作为正式成为竞赛生的第一场比赛还是比较圆满的,起码没有FST,A掉ABCD,总排82,怒涨rat ...

  9. [Codeforces Round#488]Div.2

    总结 这是我无聊透顶肝到三点半的一场 cf ,结果还真够无聊的 这套题涵盖了英语题,语文题,模拟题.注重考查了选手的英语素养能力,语文阅读能力和精湛的模拟和枚举能力.是不可多得的一套好题. 没什么单独 ...

随机推荐

  1. boost多线程使用简例

    原文链接:http://www.cppblog.com/toMyself/archive/2010/09/22/127347.html C++ Boost Thread 编程指南 转自cnblog: ...

  2. mvc cshtml 字符串操作

    @using System.Text; @{ ; string str=""; StringBuilder sb = new StringBuilder(); } @foreach ...

  3. BZOJ 1355: [Baltic2009]Radio Transmission AC自动机/KMP

    被一个KMP傻题搞蒙圈了,此题AC自动机空间超限,只能用KMP写(我只会AC自动机QAQ)...... AC自动机 Code: // luogu-judger-enable-o2 #include & ...

  4. 内核如何检测SOFT LOCKUP与HARD LOCKUP?

    内核如何检测SOFT LOCKUP与HARD LOCKUP? From article 所谓lockup,是指某段内核代码占着CPU不放.Lockup严重的情况下会导致整个系统失去响应.Lockup有 ...

  5. There are no packages available for installation. Sublime3解决方法

    最近在学习Vue,在配置sublime3的时候,想要高亮vue的语法,下载点插件 Package Control的时候,总报  There are no packages available for ...

  6. 洛谷P1567 统计天数

    题目背景 统计天数 题目描述 炎热的夏日,KC非常的不爽.他宁可忍受北极的寒冷,也不愿忍受厦门的夏天.最近,他开始研究天气的变化.他希望用研究的结果预测未来的天气. 经历千辛万苦,他收集了连续N(1& ...

  7. 【Computer Vision】 复现分割网络(1)——SegNet

    目录 Tags: ComputerVision 编译 数据处理 训练结果 Reference Tags: ComputerVision 编译 src/caffe/layers/contrastive_ ...

  8. 在eclipse中maven构建Web项目,tomcat插件在maven中的运用

    1.选中maven,构建maven  web 2.项目构建好之后发现一个错误如图,是因为没有servlet的API,我们需要在pom.xml 中对servlet的API进行依赖 pom.xml如下即可 ...

  9. 使用 Laravel 5.5+ 更好的来实现 404 响应

    译文首发于 使用 Laravel 5.5+ 更好的来实现 404 响应,转载请注明出处! Laravel 5.5.10 封装了两个有用的路由器方法,可以帮助我们为用户提供更好的 404 页面.现在,当 ...

  10. 为DK2应用程序迁移到Oculus CV1做好准备!

    为DK2应用程序迁移到Oculus CV1做好准备! 本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/arti ...