2023“钉耙编程”联赛 Day 3 L 题 Inference 题解

news2025/1/20 1:51:41

原题描述

给定 m m m 个特征,你想基于大量的数据,再通过 Alice \text{Alice} Alice 的前 m − 1 m−1 m1 个特征的值推断出她的最后一个特征的值。

特征之间的关系可以表示为一个有向无环图,其中一个节点 A A A 指向一个节点 B B B 表示 B B B 是依赖于 A A A 的随机变量。

下面的公式可以根据其他数据计算 Alice \text{Alice} Alice 的最后一个特征的值的概率,其中 x i x_i xi 表示第 i i i 个特征, π ( x i ) \pi(x_i) π(xi) 表示指向 x i x_i xi 的节点, c n t cnt cnt 表示它们的出现次数:

P ( x m ∣ x 1 , … , x m − 1 ) = c P ( x 1 , … , x m ) = ∏ i = 1 m P ( x i ∣ π ( x i ) ) P(x_m∣x_1,\dots,x_{m−1})=cP(x_1,\dots,x_m)=\prod_{i=1}^m P(x_i∣\pi(x_i)) P(xmx1,,xm1)=cP(x1,,xm)=i=1mP(xiπ(xi))

P ( x i ∣ π ( x i ) ) = P ( π ( x i ) , x i ) P ( π ( x i ) ) = { c n t ( π ( x i ) , x i ) c n t ( π ( x i ) ) , if    c n t ( π ( x i ) ) ≠ 0 0 , if    c n t ( π ( x i ) ) = 0 P(x_i∣\pi(x_i))=\dfrac{P(\pi(x_i),x_i)}{P(\pi(x_i))}= \begin{cases} \dfrac{cnt(\pi(x_i),x_i)}{cnt(\pi(x_i))}, \text{if}\;cnt(\pi(x_i))\not=0 \\0,\text{if}\;cnt(\pi(x_i))=0 \end{cases} P(xiπ(xi))=P(π(xi))P(π(xi),xi)= cnt(π(xi))cnt(π(xi),xi),ifcnt(π(xi))=00,ifcnt(π(xi))=0

保证最后一个特征的出度为 0 0 0,并且至少存在一种情况使得 c n t ( π ( x i ) ) ≠ 0 cnt(\pi(x_i))\not =0 cnt(π(xi))=0

现在,给定 n n n个人的数据,假设已知她的前 m − 1 m−1 m1个特征的值,Alice 的第 m m m个特征最有可能是什么值。

(题面很垃圾,建议看一下然后看样例解释)

输入描述

输入部分的开头有一个整数 T T T ( 1 ≤ T ≤ 10 ) (1\leq T\leq 10) (1T10),表示测试用例的数量。

对于每个测试用例,第一行包含三个整数 n n n ( 1 ≤ n ≤ 1 0 4 ) , m (1\leq n\leq 10^4),m (1n104)m ( 1 ≤ m ≤ 100 ) , k (1\leq m\leq 100),k (1m100)k ( 1 ≤ k ≤ 300 ) (1\leq k\leq 300) (1k300),表示数据的数量、特征的数量以及特征之间的关系数量。

在接下来的 k k k 行中,每行包含两个整数 x , y x, y x,y ( 1 ≤ x , y ≤ m ) (1\leq x,y\leq m) (1x,ym),表示节点 x x x 指向节点 y y y,因此第 y y y 个特征依赖于第 x x x 个特征。每个节点的入度小于 5 5 5

在接下来的 n n n 行中,每行包含 m m m 个整数,表示某个人每个特征的值。每个特征的值在 0 、 1 、 2 0、1、2 012 之间。

在最后一行,有 m − 1 m-1 m1 个整数,表示 Alice \text{Alice} Alice 的前 m − 1 m-1 m1 个特征的值。

输出描述

输出一个整数,表示 Alice \text{Alice} Alice 的第 m m m 个特征的最可能的值。

保证只存在一个具有最大概率的值。

样例输入

1
10 5 4
1 4
2 4
3 5
4 5
0 1 0 1 0 
0 1 1 1 1 
0 0 0 0 0 
0 0 1 0 0 
1 1 1 0 1 
1 0 0 1 1 
1 1 0 1 1 
1 0 1 0 0 
1 1 1 1 1 
0 1 0 1 1 
1 1 0 0

样例输出

0

样例解释

在样例中,这里有十个人的数据,包含五个特点,特点有四个关系,这是一个反应每个人数据的表格:

编号努力处境食欲成绩个性
101010
201111
300000
400100
511101
610011
711011
810100
911111
1001011
Alice1100?

他们的关系如下:

我们可以使用公式来计算结果为 0 0 0 的概率:

P ( x m ∣ x 1 , … , x m − 1 ) = c P ( x 1 , … , x m ) = ∏ i = 1 m P ( x i ∣ π ( x i ) ) = P ( x 1 = 1 ) × P ( x 2 = 1 ) × P ( x 3 = 0 ) × P ( x 4 = 0 ∣ x 1 = 1 , x 2 = 1 ) × P ( x 5 = 0 ∣ x 3 = 0 , x 4 = 0 ) = 5 10 × 6 10 × 5 10 × 1 3 × 1 1 = 0.05 P(x_m∣x_1,\dots,x_{m−1})=cP(x_1,\dots,x_m)=\prod_{i=1}^m P(x_i∣\pi(x_i))\\ =P(x_1=1)\times P(x_2=1)\times P(x_3=0)\times P(x_4=0|x_1=1,x_2=1)\times P(x_5=0|x_3=0,x_4=0)\\ =\frac{5}{10}\times\frac{6}{10}\times\frac{5}{10}\times\frac{1}{3}\times\frac{1}{1}=0.05 P(xmx1,,xm1)=cP(x1,,xm)=i=1mP(xiπ(xi))=P(x1=1)×P(x2=1)×P(x3=0)×P(x4=0∣x1=1,x2=1)×P(x5=0∣x3=0,x4=0)=105×106×105×31×11=0.05
可以计算得出 1 , 2 1,2 1,2 的概率都等于 0 0 0,小于 0.05 0.05 0.05

做法解析

这道题纯纯诈骗题,我们关注下面样例解释的式子,我们发现对于每种可能,其概率与其他可能不同的地方只在最后一项,所以我们只关心这一项即可。

那么我们只需要找出与 x m x_m xm 有关的特点,筛选出条件符合的统计即可。

代码解析

#include <bits/stdc++.h>
#define LL long long
using namespace std;
const LL N = 1e4 + 5;
const LL M = 105;
const LL K = 305;
LL T, n, m, k, x, y, d[N][M], a[M], cnt[3];
vector<LL> v[N];
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin >> T;
    while (T--) {
        memset(v, 0, sizeof(v));
        memset(cnt, 0, sizeof(cnt));
        cin >> n >> m >> k;
        for (int i = 1; i <= k; i++) {
            cin >> x >> y;
            v[y].push_back(x);
        }
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                cin >> d[i][j];
            }
        }
        for (int i = 1; i <= m - 1; i++) {
            cin >> a[i];
        }
        for (int i = 1; i <= n; i++) {
            LL f = 0;
            for (LL j : v[m]) {
                if (d[i][j] != a[j]) {
                    f = 1;
                    break;
                }
            }
            if (!f) {
                cnt[d[i][m]]++;
            }
        }
        LL ans = 0;
        for (int i = 1; i <= 2; i++) {
            if (cnt[ans] < cnt[i])
                ans = i;
        }
        printf("%lld\n", ans);
    }
}

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

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

相关文章

Python基础语法入门(第二十天)——文件操作

一、基础内容 在Python中&#xff0c;路径可以以不同的表现形式进行表示。以下是一些常用的路径表现形式&#xff1a; 1. 绝对路径&#xff1a;它是完整的路径&#xff0c;从根目录开始直到要操作的文件或文件夹。在Windows系统中&#xff0c;绝对路径以盘符开始&#xff0c;…

Linux系列讲解 —— FTP协议的应用

简单介绍一下FTP文件传输协议在linux系统中的应用。 目录 0. 基本概念1. FTP Server1.1 安装FTP Server1.2 FTP Server开启和关闭1.3 查看FTP Server是否开启1.4 FTP服务器配置 2. FTP Client2.1 lftp2.2 ftp2.3 sftp2.4 文件资源管理器集成的ftp和sftp 3. ftp常用命令 0. 基本…

【C++11保姆级教程】auto和decltype

文章目录 前言总结一、auto1.初识auto关键字 2.auto使用二、decltype1.初识decltype2.使用decltype 总结 前言 在C11中引入了一些新的关键字和特性&#xff0c;其中包括auto和decltype。这两个关键字提供了更方便、更灵活的类型推断机制&#xff0c;使得代码编写更加简洁和可读…

TCS3200颜色识别模块

TCS3200颜色识别模块 TCS3200简介 供电电源(2.7V to 5.5V)可配置颜色滤波器和输出信号频率高分辨率光强转换到频率(工作原理) TCS3200工作原理 TCS3200是TAOS公司推出的可编程彩色光到频率的转换器&#xff0c;它把可配置的硅光电二极管与电流频率转换器集成在一个单一的CMO…

Python找出列表中出现次数最多的元素三种方式

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 方式一&#xff1a; 原理&#xff1a;创建一个新的空字典&#xff0c;用循环的方式来获取列表中的每一个元素&#xff0c;判断获取的元素是否存在字典中的key&#xff0c;如果不存在的话&#xff0c;将元素作为key&#xf…

如何保证事件的闭环处理

所谓的闭环&#xff0c;就是指告警发出、认领、协作处理、问题恢复、复盘改进的整个过程。 排班&#xff0c;专人做专事 ​这个手段听起来并不高大上&#xff0c;但确实非常有效。值班期间虽然提心吊胆的&#xff0c;生怕背锅&#xff0c;但因为是轮班制&#xff0c;心里总有…

C语言笔试训练【第12天】

文章目录 1、请阅读以下程序&#xff0c;其运行结果是&#xff08; &#xff09;2、假设编译器规定 int 和 short 类型长度分别为32位和16位&#xff0c;若有下列C语言语句&#xff0c;则 y 的机器数为&#xff08; &#xff09;3、下列程序的输出结果是什么&#xff08; &…

LC-链表的中间节点(遍历)

LC-链表的中间节点&#xff08;遍历&#xff09; 链接&#xff1a;https://leetcode.cn/problems/middle-of-the-linked-list/description/ 描述&#xff1a;给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个…

OpenCV-Python中的图像处理-图像直方图

OpenCV-Python中的图像处理-图像直方图 图像直方图统计直方图绘制直方图Matplotlib绘制灰度直方图Matplotlib绘制RGB直方图 使用掩膜统计直方图直方图均衡化Numpy图像直方图均衡化OpenCV中的直方图均衡化CLAHE 有限对比适应性直方图均衡化 2D直方图OpenCV中的2D直方图Numpy中2D…

基于Python科研论文绘制学习 - task1

绘制原则 必要性&#xff08;避免图多字少&#xff09; 易读性&#xff08;完整准确的标题、标签&#xff09; 一致性&#xff08;配图需要和上下文一致&#xff09; 尝试运行代码的时候出现了很多bug&#xff0c;基本都是围绕Scienceplots库的&#xff0c;在更新pip、pandas…

Gin安装解决国内go 与 热加载

get 方式安装超时问题&#xff0c;国内直接用官网推荐的下面这个命令大概率是安装不成功的 go get -u github.com/gin-gonic/gin 可以在你的项目目录下执行下面几个命令&#xff1a; 比如我的项目在E:\Oproject\zl cmd E:\Oproject\zl>就在目录下执行 go env -w GO111…

HCIP学习--MPLS

MPLS-多协议标签交换 标签交换 基于2.5层的标签号进行路由行为,开始传输数据包的时候需要查询两张表&#xff0c;一个路由表一个ARP表然后人们就想可不可以少查点表&#xff0c;然后MPLS就出现了&#xff0c;MPLS就是是在数据包的2.5层压入一个标签号&#xff0c;路由器基于2…

人大进仓数据库ksql命令基础

测试环境信息: 系统为银河麒麟V10 数据库为Kingbase ES V8 数据库安装目录为/opt/Kingbase/ES/V8 ksql命令位于/opt/Kingbase/ES/V8/Server/bin下 使用--help获取帮助 续上图 1.查看数据库列表 ./ksql -U system -l 2.查看数据库版本 ./ksql -V 3.连接指定的数据库tes…

计算机技术综合布线实训室建设方案

一、计算机技术综合布线系统概述 综合布线是指在建筑物或办公室内部&#xff0c;将各种通信设备&#xff08;如计算机、电话、视频监控、音频设备等&#xff09;通过统一的电缆系统连接起来的一种网络布线方式。它是构建局域网&#xff08;LAN&#xff09;和数据中心基础设施的…

Revit SDK 介绍:PanelSchedule 配电盘明细表

前言 这个例子介绍 Revit 的配电盘明细表&#xff0c;PanelSchedule。Revit 的电器专业在国内用的并不是十分广泛&#xff0c;但从功能上来说还是比较完整的。 内容 这个例子里有三个命令&#xff1a; PanelScheduleExport - 导出配电盘明细表InstanceViewCreation - 创建配…

HTML5的介绍和基本框架

目录 HTML5 HTML5介绍 HTML5的DOCTYPE声明 HTML5基本骨架 html标签 head标签 body标签 title标签 meta标签 在vscode中写出第一个小框架 HTML5 HTML5介绍 HTML5是用来描述网页的一种语言&#xff0c;被称为超文本标记语言。用HTML5编写的文件&#xff0c;后缀以.ht…

JVM编译优化

即时编译器 HotSpot虚拟机中内置了两个即时编译器,分别称为Client Compiler和Server Compiler,或者简称为C1编译器和C2编译器。Java8默认开启Server模式。用户可以使用“-client”或“-server”参数去指定编译模式。 C1编译器启动速度快,关注局部简单可靠的优化,比如方法…

【八大排序】-- 计数排序(动图演示)

计数排序介绍 计数排序是一个非基于比较的排序算法。它的优势在于在对一定范围内的整数排序时&#xff0c;它的复杂度为Ο(nk)&#xff08;其中k是整数的范围&#xff09;&#xff0c;快于任何比较排序算法。 当然这是一种牺牲空间换取时间的做法&#xff0c;而且当O(k)>O(n…

Java反序列化漏洞笔记

前言 作为Java安全方面的盲对Java反序列化各种链方面了解的并不多&#xff0c;但是这些链条又极为重要&#xff0c;有助于更好的理解各种漏洞的产出和原理&#xff0c;因此以下笔记开始从底慢慢学起。 为什么会产生安全问题&#xff1f; 服务器反序列化数据时&#xff0c;客…

OpenCV-Python中的图像处理-模板匹配

OpenCV-Python中的图像处理-模板匹配 模板匹配单对象的模板匹配多对象的模板匹配 模板匹配 使用模板匹配可以在一幅图像中查找目标函数&#xff1a; cv2.matchTemplate()&#xff0c; cv2.minMaxLoc()模板匹配是用来在一副大图中搜寻查找模版图像位置的方法。 OpenCV 为我们提…