首页 > 其他分享 >abc370D Cross Explosion

abc370D Cross Explosion

时间:2024-10-07 18:00:24浏览次数:1  
标签:Explosion int stH abc370D Cross stW erase ans it2

有H行W列的格子,初始时每个格子中都是墙,接下来有Q组询问,格式为:R[i] C[i],表示在坐标(R[i],C[i])的地方放置炸弹,如果该位置是墙,则墙被炸掉,如果是空地,则上下左右最近的一格墙被炸掉。问最终还剩多少墙?
1<=H,W; H*W<=4E5; 1<=Q<=2E5; 1<=R[i]<=H; 1<=C[i]<=W

分析:用set维护按行和列的墙集合,模拟即可。注意在处理完左后,处理右时要重新find,因为删除会导致迭代器失效,处理上下也是类似的。

#include <bits/stdc++.h>
using i64 = long long;

void solve() {
	int H, W, Q;
	std::cin >> H >> W >> Q;
	std::vector<std::set<int>> stH(H+1), stW(W+1);
	for (int i = 1; i <= H; i++) {
		for (int j = 1; j <= W; j++) {
			stH[i].insert(j);
			stW[j].insert(i);
		}
	}
	int ans = H * W;
	for (int i = 0; i < Q; i++) {
		int r, c;
		std::cin >> r >> c;
		if (stH[r].count(c)) {
			stH[r].erase(c);
			stW[c].erase(r);
			ans -= 1;
		} else {
			auto it1 = stH[r].lower_bound(c);
			if (it1 != stH[r].end()) {
				int z = *it1;
				stH[r].erase(z);
				stW[z].erase(r);
				ans -= 1;
			}
			auto it2 = stH[r].lower_bound(c);
			if (it2 != stH[r].begin()) {
				--it2;
				int z = *it2;
				stH[r].erase(z);
				stW[z].erase(r);
				ans -= 1;
			}
			auto it3 = stW[c].lower_bound(r);
			if (it3 != stW[c].end()) {
				int z = *it3;
				stW[c].erase(z);
				stH[z].erase(c);
				ans -= 1;
			}
			auto it4 = stW[c].lower_bound(r);
			if (it4 != stW[c].begin()) {
				--it4;
				int z = *it4;
				stW[c].erase(z);
				stH[z].erase(c);
				ans -= 1;
			}
		}
	}
	std::cout << ans << "\n";
}

int main() {
	std::cin.tie(0)->sync_with_stdio(0);
	int t = 1;
	while (t--) solve();
	return 0;
}

标签:Explosion,int,stH,abc370D,Cross,stW,erase,ans,it2
From: https://www.cnblogs.com/chenfy27/p/18450383

相关文章

  • 题解 ABC373G【No Cross Matching】/ POJ3565【Ants】
    题目描述年轻的自然主义者比尔在学校里研究蚂蚁。他的蚂蚁以生活在苹果树上的蚜虫为食。每个蚂蚁群需要自己的苹果树来养活自己。比尔有一张地图,上面标有\(n\)个蚂蚁群和\(n\)棵苹果树的坐标。他知道蚂蚁从它们的蚂蚁群到它们的取食地点,然后返回蚂蚁群,都是使用化学标记的路线......
  • DeepCross模型实现推荐算法
    1.项目简介A032-DeepCross项目是一个基于深度学习的推荐算法实现,旨在解决个性化推荐问题。随着互联网平台上信息和内容的爆炸式增长,用户面临着信息过载的困境,如何为用户提供高效、精准的推荐成为了关键。该项目背景基于现代推荐系统的发展,利用用户行为数据和内容特征,来生......
  • 【BurpSuite】Cross-site scripting (XSS 学徒部分:1-9)
    ......
  • abc370D Cross Explosion
    一开始并查集写的,ga掉。set应用一道非常好的题目。```#include<bits/stdc++.h>#include<set>#definesiiset<int>::iteratorusingnamespacestd;inth,w,q,ans;set<int>s1[400007],s2[400007];voiddel(intx,inty){//printf("%d%d\n",x,......
  • cross-plateform 跨平台应用程序-10-naitvescript 介绍
    跨平台系列cross-plateform跨平台应用程序-01-概览cross-plateform跨平台应用程序-02-有哪些主流技术栈?cross-plateform跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?cross-plateform跨平台应用程序-04-ReactNative介绍cross-plateform跨平台应用程序-05-Flut......
  • cross-plateform 跨平台应用程序-09-phonegap/Apache Cordova 介绍
    跨平台系列cross-plateform跨平台应用程序-01-概览cross-plateform跨平台应用程序-02-有哪些主流技术栈?cross-plateform跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?cross-plateform跨平台应用程序-04-ReactNative介绍cross-plateform跨平台应用程序-05-Flut......
  • cross-plateform 跨平台应用程序-05-Flutter 介绍
    跨平台系列cross-plateform跨平台应用程序-01-概览cross-plateform跨平台应用程序-02-有哪些主流技术栈?cross-plateform跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?cross-plateform跨平台应用程序-04-ReactNative介绍cross-plateform跨平台应用程序-05-Flut......
  • cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?
    跨平台系列cross-plateform跨平台应用程序-01-概览cross-plateform跨平台应用程序-02-有哪些主流技术栈?cross-plateform跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?cross-plateform跨平台应用程序-04-ReactNative介绍cross-plateform跨平台应用程序-05-Flut......
  • cross-plateform 跨平台应用程序-01-概览
    跨平台系列cross-plateform跨平台应用程序-01-概览cross-plateform跨平台应用程序-02-有哪些主流技术栈?cross-plateform跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?cross-plateform跨平台应用程序-04-ReactNative介绍cross-plateform跨平台应用程序-05-Flut......
  • (多模态)MedM2G: Unifying Medical Multi-Modal Generation via CrossGuided Diffusion
    1.摘要医学生成模型以其高质量的样本生成能力而闻名,加速了医学应用的快速增长。然而,目前的研究主要集中在针对不同医疗任务的单独医学生成模型上,受限于医学多模态知识的不足,制约了医学的综合诊断。在本文中,我们提出MedM2G,即医学多模态生成框架,其关键创新是在统一模型内对齐......