题目连接 牛客多校F-PoppingBalloons
题意:
用枪打气球,可以横着打三次,竖着打三次,横着打可以把那一行的气球全打下来,竖着打可以把那一列的气球全打下来,但是,每两次相邻的横着打或者竖着打,他们的距离要相差r,意思就是我当前打的是第x行,那我下一次只能打(x+r)或(x-r)行,问最多能打到多少气球。
思路:
贪心,先把每行每列的气球数都统计出来,还需要统计每个点的位置,若一个气球处于(X,Y),横着打过第X行,会对竖着打第Y列有影响,所以纪录一下每个气球的位置,方便之后减去重复计算的。纪录出来每行每列的气球数之后,再求一个对于每行每列的解是情况,(就是如果我的三枪分别打第X,X+r,X+2r这三行或列的气球数),并纪录下当前X的位置,所以可以用结构体来存,然后按照气球的数量排序,最后枚举行和列的位置找出最大值。
代码:

#include <stdio.h>
#include <algorithm>
#include <map>
using namespace std;
const int maxn = 300005;int x[maxn],y[maxn],n,r;
map<int,map<int,int> > mp;//二维数组太大,开map中再放一个map来纪录具体某个点的气球数量struct node
{int num,id;//纪录a[x]、a[x+r]、a[x+2*r]气球的数量以及x的位置,方便枚举
}cntx[maxn],cnty[maxn];bool cmp(node aa,node bb)
{return aa.num > bb.num;
}int main()
{scanf("%d%d",&n,&r);int a,b;int maxx=0,maxy=0;for(int i = 0;i < n;i++){scanf("%d%d",&a,&b);x[a]++,y[b]++;//纪录每行每列的气球数量if(a > maxx) maxx = a;if(b > maxy) maxy = b;mp[a][b]++;}for(int i = 0;i <= maxx;i++){cntx[i].num = x[i]+x[i+r]+x[i+2*r];cntx[i].id = i;}for(int i = 0;i <= maxy;i++){cnty[i].num = y[i]+y[i+r]+y[i+2*r];cnty[i].id = i;}sort(cntx,cntx+maxx+1,cmp);sort(cnty,cnty+maxy+1,cmp);int xx,yy,ans=0,sum=0;for(int i = 0;i <= min(3,maxx);i++){for(int j = 0;j <= min(3,maxy);j++){xx = cntx[i].id;yy = cnty[j].id;sum = cntx[i].num + cnty[j].num;for(int p = 0;p <= 2;p++){for(int q = 0;q <= 2;q++){sum -= mp[xx+r*p][yy+r*q];}}ans = max(ans,sum);}}printf("%d\n",ans);return 0;
}

牛客多校第十场F-Popping Balloons相关推荐

  1. 2019牛客多校第十场 F.Popping Balloons

    使用线段树,将(1,1+r,1+2r),(2,2+r,2+2r),(3,3+r,3+2r)以此类推,每个看成一个节点,对y进行建树,然后枚举x,维护最大值即可. 代码如下: #include<c ...

  2. 2019牛客多校训练第十场F Popping Balloons

    2019牛客多校训练第十场F Popping Balloons 题意:二维平面内给你若干个点,然后你可以在x轴和y轴分别射三枪(每一枪的间隔是R),问最多能射掉多少气球. 题解:贪心.这个应该只能算作 ...

  3. 牛客多校第十场 Han Xin and His Troops(扩展中国剩余)

    链接:https://ac.nowcoder.com/acm/contest/890/D 来源:牛客网 题目描述 His majesty chatted with Han Xin about the ...

  4. bitset优化+滚动优化dp ----- 2021牛客多校第8场 F Robot

    题目大意: 就是给你一个大小为n∗mn*mn∗m的矩阵,里面有障碍物,每次询问给你一个机器人,以及机器人的起始位置,问你这个机器人能否从起点到终点 机器人有3种类型 只能往右走 只能往下走 可以往右走 ...

  5. 线段树 ---- 线段树维护线段相加+滑动变长窗口 2021牛客多校第7场 F xay loves trees

    题目大意: 给你两个大小相同的树但是形状不一定一样 叫你选出最大的子集,满足下面两个条件 在第一颗树上是一条链 在第二颗树上任意两个点都不是祖先关系 解题思路: 首先我们现在第二颗树上面把每个点的df ...

  6. 2019牛客多校第三场 F.Planting Trees

    题目链接 题目链接 题解 题面上面很明显的提示了需要严格\(O(n^3)\)的算法. 先考虑一个过不了的做法,枚举右下角的\((x,y)\),然后二分矩形面积,枚举其中一边,则复杂度是\(O(n^3 ...

  7. [球体积交]Girlfriend 2021牛客多校第2场 F

    题目描述 ZYT and ZFeT are great PUAs and both have two girlfriends,but they never think that their girlf ...

  8. 【牛客多校第十场】Coffee Chicken

    题目描述 Dr. JYY has just created the Coffee Chicken strings, denoted as S(n). They are quite similar to ...

  9. 牛客第十场 F.Popping Balloons

    第一维直接遍历 第二维用线段树维护每个最左端可以得到的贡献 在线段树上每次删除一个点会影响到 X   X-R   X-2*R  3个值 最多操作1e5次 复杂度 6*n*logn(删了还要加回来 #i ...

最新文章

  1. 传统网站与营销型网站区别盘比
  2. 关于 spring-aop理解
  3. IOS Animation-CAShapeLayer、UIBezierPath与Animation的结合
  4. mysql字段简索引_Mysql索引优化攻略(全)
  5. QT的QMovie类的使用
  6. workflow java_workflow java实现的activity工作流实例 Develop 238万源代码下载- www.pudn.com...
  7. ZooKeeper的原理(转)
  8. toolStrip 按钮图片大小的修改
  9. 海洋大数据关键技术及在灾害天气下船舶行为预测上的应用
  10. JAVA开心超级签名系统源码+部署文档
  11. nagios 监控出现It appears as though you do not have permission
  12. V8 JavaScript 引擎 6.6 发布,异步性能大幅提升
  13. 百词斩不复习_不背单词好用还是百词斩好用?
  14. 计算机系的土味情话,大学各专业土味情话
  15. 周记0053:0054
  16. RK3568 Android固件介绍、固件烧录、开机进系统
  17. Alpha版本冲刺(四)
  18. 【失败日记】手机内网穿透
  19. IterNet: Retinal Image Segmentation Utilizing Structural Redundancy in Vessel Networks
  20. English words page one

热门文章

  1. 【转】告诉你外语学习的真实方法及误区分析(精编版)-part 1
  2. Hive安装过程中出现 The reference to entity createDatabaseIfNotExist must end with the ';' delimiter.问题
  3. python谷歌翻译 频率限制_Django限制API访问频率常用方法解析
  4. 怎么把好几行弄成一行_【excle 如何多行变一行】excel中怎么把多行同一个人的数据变成一行?...
  5. 看看老板叫你造的马,被你“蹧”成什么样了丨极客官舍
  6. 华为OD机试 - 卡片组成的最大数字(Python) | 机试题算法思路
  7. 视频通话除了QQ还有什么软件可以实现?
  8. CKeditor 编辑器使用记录 (CKeditor 4 and 5 )
  9. [BZOJ2844]albus就是要第一个出场
  10. 【愚公系列】2021年11月 攻防世界-进阶题-MISC-032(就在其中)