B. Sets and Union

这篇具有很好参考价值的文章主要介绍了B. Sets and Union。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目:

样例:

输入
4
3
3 1 2 3
2 4 5
2 3 4
4
4 1 2 3 4
3 2 5 6
3 3 5 6
3 4 5 6
5
1 1
3 3 6 10
1 9
2 1 3
3 5 8 9
1
2 4 28
输出
4
5
6
0

B. Sets and Union,玩转上号CF“游戏”,算法错题本,算法,c语言

思路:

        这里题目的意思是,要求合并尽可能多的集合,使它的集合大小最大,但是不能等于全部集合的合并。

        这里由于题目所给的范围较小,所以我们可以暴力枚举,其次,里面也有贪心的成分,这里我们换个思路,我们通过总的集合,根据总的集合中的某个元素,枚举不存在该元素的集合,并合并,就是不等于全部集合的合并,取个合并后的集合个数 max,就是答案。文章来源地址https://www.toymoban.com/news/detail-728853.html

代码详解如下:

#include <iostream>
#include <vector>
#include <unordered_set>
#include <unordered_map>
#define endl '\n'
#define YES puts("YES")
#define NO puts("NO")
#define umap unordered_map
#define uset unordered_set
#pragma GCC optimize(3,"Ofast","inline")
#define ___G std::ios::sync_with_stdio(false),cin.tie(0), cout.tie(0)
using namespace std;
const int N = 2e6 + 10;

inline void solve()
{	
	int t,ans = 0;
	
	umap<int,vector<int>>v;	// 记录每个集合
	
	uset<int>sum;	// 统计总集合
	
	cin >> t;	// t 为集合个数
	for(int i = 1;i <= t;++i)
	{
		int n;	// 集合大小
		cin >> n; 
		for(int j = 1;j <= n;++j)
		{
			int x;	// 集合元素
			cin >> x;
			
			// 记录该集合
			v[i].emplace_back(x);
			
			// 统计总集合元素
			sum.insert(x);
		}
	}
	
	// 开始 贪心删除
	for(auto now : sum)
	{	
		// 选择删除后的合并集合
		uset<int>tem;
		
		for(int i = 1;i <= t;++i)
		{
			// st 标记是否删除该集合
			bool st = false;
			
			// 遍历该集合
			for(auto j : v[i])
			{
				// 如果 sum 中的某个元素存在该集合
				// 那么我们选着的是删除这个集合
				// 所以无需添加
				if(now == j)
				{
					st = true;
					break;
				}
			}
			
			// 如果该集合不用删除,那么我们就添加该集合的元素
			if(!st)
			{
				for(auto j : v[i]) tem.insert(j);
			}	
		}
		// 判断选择删除这个元素后的,所有集合大小
		// 选择答案 合并集合个数最大,但不等于 sum 集合
		ans = max(ans,(int)tem.size());
	}
	
	cout << ans << endl;
}

int main()
{
//	freopen("a.txt", "r", stdin);
	___G;
	int _t = 1;
	cin >> _t;
	while (_t--)
	{
		solve();
	}
	return 0;
}

最后提交:

到了这里,关于B. Sets and Union的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【学习笔记】CF573E Bear and Bowling

    感觉贪心的做法比较自然🤔,推荐 这篇博客 非常经典 牛逼 的贪心思路: 考虑每次加入一个数,位置 i i i 的贡献为 V i = k i × a i + b i V_i=k_itimes a_i+b_i V i ​ = k i ​ × a i ​ + b i ​ ,其中 k i k_i k i ​ 表示 i i i 以前被选的位置的个数, b i b_i b i ​ 表示 i i i 以后被选的数的

    2024年02月07日
    浏览(34)
  • 基于yolov7的FPS游戏(csgo,cf,cfhd)自瞄开发

    1.训练yolo识别人物导出pt文件 链接: yolov7训练自己的数据集-gpu版 2.使用win32进行屏幕截图和鼠标移动 3.使用导出的pt文件进行推理(pt文件将在完善后发出) 屏幕截图获取屏幕-检测目标的坐标-取中心点-计算距离获取最近的敌人坐标-移动鼠标到中心点 数据集整理后上传 鼠标移动

    2024年02月12日
    浏览(61)
  • 用户设备IP三者绑定自动上号

    发送任务: 云机监听登陆:

    2024年02月11日
    浏览(42)
  • 【用unity实现100个游戏之18】从零开始制作一个类CSGO/CS2、CF第一人称FPS射击游戏——基础篇2(附项目源码)

    本节就先实现添加武器,一些射击基本功能实现。 这里我找了一个人的手臂和武器动画素材 https://sketchfab.com/3d-models/cz-scorpion-evo3-a1-ultimate-fps-animations-f2bdfac775344004ad38d0318f0664a4 将他拖入到为摄像机的子集,然后调整到合适位置即可 你会发现手臂有一部分没法正常显示,那是因

    2024年04月10日
    浏览(54)
  • 【用unity实现100个游戏之18】从零开始制作一个类CSGO/CS2、CF第一人称FPS射击游戏——基础篇4(附项目源码,完结)

    免责声明:因为文章附带 源码 ,所以我上锁了,整理不易,但是推荐大家自己手动跟敲代码理解更加深入

    2024年02月04日
    浏览(57)
  • 玩转代码|逆向分析一下4399小游戏绕过实名认证

    4399的实名认证真是越来越恶心了,本以为只是响应国家号召做点表面功夫,没想到现在他们又在网页上加了反调试。看来是4399是认真的。 目录 0X00实名认证提醒  0X01分析  0X03断点发现=关键元素 0X04遮罩消失 0X05快去试试吧   先看一下,需要认证的界面。不认证的话是无法

    2024年02月04日
    浏览(94)
  • B. 用人工智能来拍摄变焦风景照片

    作者:禅与计算机程序设计艺术 在现代社会,数字化革命正席卷全球,越来越多的人开始使用智能手机、平板电脑等移动设备来浏览互联网,拍摄照片、视频、短视频和音乐等视听媒体。然而,由于手机拍摄器件的限制,导致照片过分模糊、缺少明显肉眼可见的特征,使得它

    2024年02月06日
    浏览(48)
  • B. Ten Words of Wisdom

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output In the game show \\\"Ten Words of Wisdom\\\", there are n� participants numbered from 11 to n�, each of whom submits one response. The i�-th response is ai�� words long and has quality bi��. No two responses have the same quality, and

    2024年02月13日
    浏览(44)
  • Python实现吃鸡游戏子弹and导弹自动追踪!原来是这样的一个原理啊!

    screen.blit(missile, (x1-missile.get_width(), y1-missile.get_height()/2)) dis_angle=d_angle-old_angle #dis_angle就是到下一个位置需要改变的角度 old_angle=d_angle #更新初始角度 pygame.display.update() 如果仅把导弹考虑为一个质点的话,那么以上算法就已经足矣,我没有做导弹的旋转,因为一个质点也不分头

    2024年03月28日
    浏览(83)
  • Python 集合(Sets)2

    您无法通过引用索引或键来访问集合中的项。但是,您可以使用 for 循环遍历集合项,或者使用 in 检查集合中是否存在指定的值。 示例,遍历集合并打印值: 示例,检查集合中是否存在 \\\"banana\\\": 一旦创建了集合,您就不能更改其项,但可以添加新项。要向集合添加一

    2024年02月08日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包