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

假如-100有飞船a,+100有飞船b,那么在两者y坐标和/2的位置放飞船,就炸掉2个。数据是60*60最多3600,将所有的和涉及的左飞船,右飞船或起来(位运算|)。然后二重循环和,或起来看数量。

//#pragma comment(linker,"/STACK:1024000000,1024000000")
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<vector>
#include<cmath>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<algorithm>
#include <stack>
#include <bitset>
using namespace std;
const int SZ=,INF=0x7FFFFFFF;
bitset<> bt1[SZ],bt2[SZ]; int main()
{
std::ios::sync_with_stdio();
//freopen("d:\\1.txt","r",stdin);
//for(;scanf("%d",&n)!=EOF;)
{
int n,m;
cin>>n>>m;
vector<int> v1(n),v2(m);
for(int i=;i<n;++i)cin>>v1[i];
for(int i=;i<m;++i)cin>>v2[i];
set<int> st;
for(int i=;i<n;++i)
{
for(int j=;j<m;++j)
{
int val=v1[i]+v2[j]+;
bt1[val][i]=;
bt2[val][j]=;
st.insert(val);
}
}
int res=;
for(auto it=st.begin();it!=st.end();++it)
{
int cur=*it;
for(auto j=st.begin();j!=st.end();++j)
{
//if(j==it)continue;
int tmp=(bt1[cur]|bt1[*j]).count()+(bt2[cur]|bt2[*j]).count();
res=max(res,tmp);
}
}
cout<<res<<endl;
}
return ;
}

最新文章

  1. centos中安装字体
  2. NOSQL 数据库 CodernityDB
  3. atitit.软件开发方法总结O6
  4. Spring-JDBC通用Dao
  5. Arrays.equals()
  6. 生成静态页面的PHP类
  7. CodeForces 456D&amp;455B--A Lot of Games(Trie+博弈)
  8. eclipse  sae上传代码
  9. 经典SQL语句大全(转载)
  10. SQLITE 多进程查询出错database is locked
  11. linux常用的压缩与解压缩命令
  12. js函数库-D3
  13. linux系统,关于Python多版本共存
  14. MySQL高可用之组复制(1):组复制技术简介
  15. Android开发 ---ORMLite实现数据的增删改查,单例模式,Dao栈
  16. 从Excel文件中读取内容
  17. JVM堆内存调优
  18. Fire! 又是图 bfs
  19. sqlServer 查询表中31到40的记录,考虑id不连续的情况
  20. 02.java并发编程之原子性操作

热门文章

  1. Python: 猴子分桃。海滩上有一堆桃子,五只猴子来分。
  2. java后台获取和js拼接展示信息
  3. pythonl类继承例子
  4. python 类的私有方法例子
  5. python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
  6. GDPR给安全的影响
  7. 【运维技术】Nexus私服安装配置常用问题
  8. 计算概论(A)/基础编程练习2(8题)/1:求平均年龄
  9. c++中对应java ShutdownHook的退出处理器
  10. shell分析http日志