D. Meta-set(组合数学)

news2024/11/20 11:19:53

Problem - D - Codeforces

 

你喜欢纸牌棋盘游戏“集合”。每张牌包含k个特征,每个特征都等于集合{0,1,2}中的一个值。这副牌包含所有可能的纸牌变体,也就是说,总共有3k张不同的纸牌。

如果三张牌的某个特征与这三张牌相同或两两不同,则称其为好(good)。如果所有k个特征都对3张牌有利,则称这3张牌为一个集合(set)。

例如,牌(0,0,0)、(0,2,1)和(0,1,2)是一个集合,但牌(0,2,2)、(2,1,2)和(1,2,0)不是一个集合,例如,最后一个特征就不太好。

一组5张牌被称为元集合(meta-set),如果它们之间有严格意义上的多于一个集合。给定n张不同的牌,有多少个元集?

输入

第一行输入包含两个整数n和k(1≤n≤103,1≤k≤20)——一张桌子上的牌的数量和牌的特征数量。卡片的描述在接下来的n行中。

描述一张卡片的每一行包含k个整数ci,1,ci,2,…,ci,k(0≤ci,j≤2)-卡片特征。它保证所有的牌都是不同的。

输出

输出一个整数——元集的数量。

例子

inputCopy

8 4

0 0 0 0

0 0 0 1

0 0 0 2

0 0 1 0

0 0 2 0

0 1 0 0

1 0 0 0

2 2 0 0

outputCopy

1

inputCopy

7 4

0 0 0 0

0 0 0 1

0 0 0 2

0 0 1 0

0 0 2 0

0 1 0 0

0 2 0 0

outputCopy

3.

inputCopy

9 - 2

0 0

0 1

0 2

1 0

1

1 2

2 0

2 1

2 - 2

outputCopy

54

inputCopy

20 4

0 2 0 0

0 2 2 2

0 2 2 1

0 2 0 1

1 2 2 0

1 2 1 0

1 2 2 1

1 2 0 1

1 1 2 2

1 1 0 2

1 1 2 1

1 1 1 1

2 1 2 0

2 1 1 2

2 1 2 1

2 1 1 1

0 1 1 2

0 0 1 0

2 2 0 0

2 0 0 2

outputCopy

0

请注意

下面画出表示前四个特征的扑克牌。第一个特征表示一张牌上有多少个对象:1、2、3。第二个是颜色:红色,绿色,紫色。第三种是形状:椭圆形、菱形、曲线型。第四种是填充:开口,条纹,实心。

你可以在下面看到前三个测试。对于前两个测试,元集被突出显示。

在第一个测试中,唯一的元集是5张牌(0000,0001,0002,0010,0020)。其中的集合是三元组(0000,0001,0002)和(0000,0010,0020)。此外,集合是三元组(0100,1000,2200),它不属于任何元集。

在第二个测试中,以下5张卡片组成的组是元集(0000,0001,0002,0010,0020)、(0000,0001,0002,0100,0200)、(0000,0010,0020,0100,0200)。

在第三个测试中,有54个元集。

题解:

一个由5张卡片构成的五元组可以被称为元集合,当且仅当你能从这5张卡片里面找出至少2个好集合。

我们可以发现其中一个元素必定是两个集合的共有部分,

所以我们每次枚举两个集合,找符合这两个集合的应该长什么样,记录下来

最后遍历n个卡片,看我们刚才构造的是否存在,如果存在,肯定是会有x个集合符合,但是我们求的是元集合,这张卡存在x的好集合中,所有有x*(x-1)/2种

#include<iostream>
#include<queue>
#include<algorithm>
#include<cstring>
#include<vector>
#include<stack>
#include<string>
#include<map>
#define int long long
using namespace std;
typedef pair<int,int> PII;
map<int,int> f;
string a[3000];
void solve()
{
	int n,k;
	cin >>n >>k;
	for(int i = 1;i <= n;i++)
	{
		for(int j = 0;j < k;j++)
		{
			char x;
			cin >> x;
			a[i] += x;
		}
	}
	map<string,int> cnt;
	for(int i = 1;i < n;i++)
	{
		for(int j = i +1;j <= n;j++)
		{
			string t;
			for(int p = 0;p < k;p++)
			{
				t += ('6' - '0' - (a[i][p]-'0')-(a[j][p]-'0'))%3+'0';
			}
			cnt[t]++;
		}
		
	}
	int ans = 0;
	for(int i = 1;i <= n;i++)
	{
		int t = cnt[a[i]];
		ans += t*(t-1)/2;
	}
	cout << ans;
	
}
signed main()
{
//	ios::sync_with_stdio(0);
//	cin.tie(0);
//	cout.tie(0);
    int t = 1;
//    cin >> t;
    while(t--)
    {
        solve();
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/156796.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[LeetCode算法->双指针]

在算法中&#xff0c;双指针的问题较为常见&#xff0c;应用也比较广泛&#xff0c;双指针问题能够降低时间复杂度和空间复杂度&#xff0c;有必要掌握这一内容。下面通过LeetCode的题目来说明双指针。1.给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的…

Minecraft 1.19.2 Fabric模组开发 03.动画生物实体

我们本次尝试在1.19.2 Fabric中添加一个能够具有各种动画效果动作的生物实体。 效果展示效果展示效果展示 1.首先&#xff0c;为了实现这些动画效果&#xff0c;我们需要首先使用到一个模组:geckolib(下载地址) 找到项目的build.gradle文件&#xff0c;在repositories和depen…

vue实现网页端企业微信扫码登录功能(前端部分)

时至今日&#xff0c;企业微信在企业日常工作中的使用越来越频繁也越来越重要&#xff0c;不少企业已使用企业微信进行着日常的工作安排管理。在这种背景下&#xff0c;各类系统和企业微信对接的需求也不断增加&#xff0c;今天要说的就是一个比较常见的需求&#xff1a;在网页…

第08讲:Docker中的网络类型bridge和host

Docker 中的网络模式早先是 3 种&#xff0c;后来又加了 1 种&#xff0c;一共是 4 种。这里&#xff0c;我们只涉及、介绍使用其中 2 种网络模式&#xff1a;bridge 模式和 host 模式。 bridge 是驱动&#xff08; Driver &#xff09;类型为 bridge 的默认网络&#xff1b;h…

『 MySQL篇 』:库操作、数据类型

目录 目录 一、初识数据库 数据库 数据库管理系统 SQL语言 二、详解MySQL MySQL 存储引擎 三、简单的库操作 设置数据库的编码字符集 创建数据库 显示数据库 使用数据库 删除数据库 四、MySQL数据类型 数值类型 字符串类型 日期类型 一、初识数据库 学习 MyS…

SpringBoot整合ELK教程

SpringBoot整合ELK教程 1 基础概念 ELK 即 Elasticsearch、Logstash、Kibana&#xff0c;组合起来可以搭建线上日志系统&#xff0c;本文主要讲解使用 ELK 来收集测试框架产生的日志。 Elasticsearch&#xff1a;用于存储收集到的日志信息&#xff1b;Logstash&#xff1a;用于…

如何成为优秀合格的管理者之角色定位

目录 导语 一、管理者的角色误区和角色定位 &#xff08;一&#xff09;管理者对上级 &#xff08;二&#xff09;管理者对下属 *如何要做好“老师”的角色&#xff1f; &#xff08;三&#xff09;管理者跨部门协作 &#xff08;四&#xff09;管理者对自己 二…

springboot:接手老项目,领导让更新数据库说明文档,如何3分钟完成任务

0 引言 最新在重新整理老项目的文档&#xff0c;其中数据库说明文档上一版更新还是在1年多前&#xff0c;文档中的数据结构说明与当前数据库严重脱节&#xff0c;所以更新数据库说明文档已经是迫在眉睫的事情了。 因为项目是一个比较大型且“年长‘的项目&#xff0c;涉及了多…

谷粒商城-基础篇-Day09-整合Ware服务

整合Ware服务 将服务注册到nacos中 spring:cloud:nacos:discovery:server-addr: 127.0.0.1:8848application:name: gulimall-wareMapperScan("com.atguigu.gulimall.ware.dao")//mybatis包扫描 SpringBootApplication EnableDiscoveryClient//开启服务发现 EnableT…

进入内存,透彻理解数据类型存在的意义,整形在内存中存储,大小端字节序,浮点型在内存中存储

&#x1f331;博主简介&#xff1a;是瑶瑶子啦&#xff0c;一名大一计科生&#xff0c;目前在努力学习C进阶、数据结构、算法、JavaSE。热爱写博客~正在努力成为一个厉害的开发程序媛&#xff01;&#x1f4dc;所属专栏&#xff1a;C语言✈往期博文回顾&#xff1a;【Java基础篇…

Java——》AtomicInteger源码分析

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 Java——》AtomicInteger源码分析一、测试用例二、…

Java基础学习笔记(一)面向对象

序言&#xff1a;主要记录一下java的学习笔记&#xff0c;用作面试复习&#xff0c;参考的学习资料是尚硅谷Java网课链接 面向对象是P39~P69内容 文章目录一、类和对象二、传值方式三、静态与静态代码块四、包五、构造方法六、继承与构造方法七、多态八、方法的重载与重写8.1 …

[JAVA安全]CVE-2022-33980命令执行漏洞分析

前言 在 i春秋的漏洞靶标上看见了此漏洞&#xff0c;所以前来分析一下漏洞原理&#xff0c;比较也是去年 7月的漏洞。 漏洞描述&#xff1a;Apache官方发布安全公告&#xff0c;修复了一个存在于Apache Commons Configuration 组件的远程代码执行漏洞&#xff0c;漏洞编号&am…

Linux驱动

Linux驱动 驱动 1.驱动课程大纲  内核模块  字符设备驱动  中断 2.ARM裸机代码和驱动有什么区别&#xff1f;  共同点&#xff1a;都能够操作硬件 (都操作寄存器)  不同点&#xff1a;  裸机就是用C语言给对应的寄存器里面写值&#xff0c;驱动是按照一定的框架格…

FastReport .NET 2023.1.8 Crack

FastReport .NET适用于 .NET 6、.NET Core、Blazor、ASP.NET、MVC 和 Windows 窗体的全功能报告库。它可以在 Microsoft Visual Studio 2022 和 JetBrains Rider 中使用。 快速报告.NET 利用 .NET 6、.NET Core、Blazor、ASP.NET、MVC、Windows Forms 和 Mono 数据表示领域专家…

前端入门笔记07 —— js应用

DOM基础 document object model 基本操作 增删改查 查&#xff1a; document成员函数传入 id class tagName等内容获取DOM节点css选择去查询节点获取的DOM对象访问DOM对象的成员 let domResult; domResult document.getElementsByTagName(li); //返回一个类数组对象 Node…

Electron对在线网站做数据交互方案,实现在线网站判断Electron调用自定义接口通讯

(防盗镇楼)本文地址:https://blog.csdn.net/cbaili/article/details/128651549 前言 最近在撸VUE,想要实现一份代码既能构建Web又能构建Electron应用 并且能够判断环境是浏览器还是Electron,随后在Electron中做一些特定的事情 以往的Electron通信依靠IPC通信完成,但是发布到…

2023年,“新一代”固定资产管理平台——支持低代码平台

固定资产是各企业和工厂的主要生产要素&#xff0c;占企业整体资金比例较重&#xff0c;而且随着企业的发展&#xff0c;实物资产的数量和员工日益增多&#xff0c;固定资产的重要性日益凸显。如何高效管理这些实物资产也成了企业管理者经常考虑的问题。单纯依靠人工表格管理固…

python(一) 字符串基本用法

python&#xff08;一&#xff09; 字符串基本用法 目录1.环境安装2. 变量介绍3.变量的命名规则4. 字符串 String 基础4.1 title() 修改单词的大小写 title()4.2 upper() : 将字符串全部改为大写4.3 lower(): 将字符串全部改为小写4.4 字符串的拼接 合并字符串5. 使用制表符或者…

关于抖音年前活动的需求与思考

目录 一、前言 二、需求1 1、后端需求 2、前端需求 三、领取抽卡次数需求 1、后端需求 2、前端需求 四、必得现金红包需求 五、送重复卡需求 1、后端需求 2、前端需求 六、幸运抽奖需求 1、抽奖功能 1.1、首次(或多次)3张节气卡 抽奖 1.2、非首次或多次后5张节气…