首页 > 其他分享 >题解:AT_abc176_e [ABC176E] Bomber

题解:AT_abc176_e [ABC176E] Bomber

时间:2024-04-02 17:12:26浏览次数:21  
标签:wf ++ 题解 ABC176E maxw maxh hi fd Bomber

分析

我们可以用 \(hf\) 和 \(wf\) 分别储存每行的目标数及每列的目标数。

然后我们可以贪心

若想摧毁最多的目标,则选定的位置所在的行是所有行中目标最多的,所在的列是所有列中目标最多的 (感性理解一下)

但是,选定的位置也可能有一个目标。在统计摧毁的目标数时,该目标被算了两次。所以要将该目标被多算的那次减掉。

所以我们可以枚举每个满足条件的位置,然后看是否有一个位置上没有炸弹。

若是,则输出 \(maxh+maxw\) 。

否则,输出 \(maxh+maxw-1\) 。

那么代码如下(这里用的是时间复杂度更小的unordered_map):

#include<bits/stdc++.h>
#define int long long
#define fd(i,a,b) for(int i=a;i<=b;i=-~i)
using namespace std;
int h,w,m,hf[300100],wf[300100];
int ans=1,hi,wi,maxh,maxw,cnth,cntw;
int sumh[300100],sumw[300100];
unordered_map < int,unordered_map<int,int> > mp;
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	cin>>h>>w>>m;
	fd(i,1,m)
	{
		cin>>hi>>wi;
		hf[hi]++;wf[wi]++;
		maxh=max(hf[hi],maxh);
		maxw=max(wf[wi],maxw);
		mp[hi][wi]++;
	}
	fd(i,1,h)
	{
		if(hf[i]==maxh) sumh[++cnth]=i;
	}
	fd(i,1,w)
	{
		if(wf[i]==maxw) sumw[++cntw]=i;
	}
	fd(i,1,cnth)
	{
		fd(j,1,cntw)
		{
			if(!mp[sumh[i]][sumw[j]])
			{
				ans=0;
				break;
			}
		}
	}
	cout<<maxh+maxw-ans;
	return 0;
}

感谢观看

标签:wf,++,题解,ABC176E,maxw,maxh,hi,fd,Bomber
From: https://www.cnblogs.com/whrwlx/p/18111054

相关文章

  • P2143 [JSOI2010] 巨额奖金 题解
    P2143[JSOI2010]巨额奖金题解矩阵树定理+Kruskal最小生成树计数。思路MST都是喵喵题。引理1:所有合法的权值相同边的连边方案,得到的连通块情况是相同的。感性理解:如果不相同意味着至少有一条边可以连通一对连通块。所以我们可以这么做:先跑Kruskal标记树边,然后枚举......
  • P1967 [NOIP2013 提高组] 货车运输 题解
    P1967[NOIP2013提高组]货车运输原题地址思路:由于题目要求的是使两点之间的最小边权最大,所以可以构造最大生成树(最大生成树一定是最大瓶颈生成树,而瓶颈生成树上两点之间的路径,在原图中的所有路径中,最小边权仍然最大,即满足题目要求,详见https://oi-wiki.org/graph/mst/#性质),......
  • Golang | Leetcode Golang题解之第4题寻找两个正序数组的中位数
    题目:题解:funcfindMedianSortedArrays(nums1[]int,nums2[]int)float64{iflen(nums1)>len(nums2){returnfindMedianSortedArrays(nums2,nums1)}m,n:=len(nums1),len(nums2)left,right:=0,mmedian1,median2:=0,0......
  • CF1935D Exam in MAC 题解
    ExaminMAC题意\(t\)组数据。给定一个大小为\(n\)的集合\(s\)和一个整数\(c\),保证\(0\leqslants_i\leqslantc(1\leqslanti\leqslantn)\)。求有多少对整数数对\((x,y)\),满足:\(0\leqslantx\leqslanty\leqslantc\)。\(x+y\notins\)且\(y-x\not......
  • 2024最新一线互联网大厂常见高并发面试题解析
    面试官:临界区是什么?答:临界区用来表示一种公共资源或者说是共享资源,可以被多个线程使用。但是每一次,只能有一个线程使用它,一旦临界区资源被占用,其他线程要想使用这个资源,就必须等待。比如,在一个办公室里有一台打印机,打印机一次只能执行一个任务。如果小王和小明同时需要打......
  • 【赛题解析】【移动应用开发】全国职业院校技能大赛任务一:实现社区首页功能解析
    ​培训、环境、资料、考证公众号:波比网络公众号2:波比网络工作室移动应用开发技能大赛交流群:548238632波比网络专注于技能提升,赋能**本文章全文由波比网络原创,非法转载必究!**文章目录移动应用与开发任务1:实现社区首页功能1.界面顶部显示所在社区名称、轮播图和社......
  • IDEA中新建SpringBoot模块,JDK版本问题解决
    问题描述IDEA中新建SpringBoot模块,使用的JAVAJDK1.8,新建模块时选项中没有JDK8: 运行时报错,JDK之类的问题解决方案,查看修改以下四个地方:(1)设置-Java编译器 (2)项目结构--依赖以及源码 ......
  • 哈尔滨理工大学3-31校赛模拟赛第一场题解
    概览:ABF为签到题,CE模拟,D深搜,G最短路,H双指针A.提取数字:注意前导零的情况需要排除,由于组成的数不超过longlong范围,所以直接用res承接就好了#include<iostream>usingnamespacestd;longlongres;intmain(){charc;while(cin>>c)if(c>='0'&&c<='9......
  • CCF CSP模拟真题解答示例
    CCFCSP(CertifiedSoftwareProfessional)是中国计算机学会主办的软件能力认证考试,旨在评估参赛者在计算机科学和软件工程方面的基本知识和实践能力。请注意,以下解答仅作为示例,并非针对实际真题的准确答案。实际考试中的题目和答案可能会有所不同,因此建议参考官方发布的真题......
  • 洛谷 P9907 [COCI 2023/2024 #1] Mostovi 题解
    题目分析首先可以确定的是需要枚举断边,所以我们希望两次枚举之间能有些关联。不难想到类树形DP的套路,建DFS树,只不过这题除了讨论和父亲之间的边,还要考虑返租边。以下钦定以\(1\)为树根。树边先从简单的树边开始考虑。考虑不经过\(u\)和\(u\)的父亲\(v\),对答案是否产......