天梯赛 L3-025 那就别担心了

news2024/12/23 8:47:04

原题链接:

PTA | 程序设计类实验辅助教学平台

题目描述:

下图转自“英式没品笑话百科”的新浪微博 —— 所以无论有没有遇到难题,其实都不用担心。

博主将这种逻辑推演称为“逻辑自洽”,即从某个命题出发的所有推理路径都会将结论引导到同一个最终命题(开玩笑的,千万别以为这是真正的逻辑自洽的定义……)。现给定一个更为复杂的逻辑推理图,本题就请你检查从一个给定命题到另一个命题的推理是否是“逻辑自洽”的,以及存在多少种不同的推理路径。例如上图,从“你遇到难题了吗?”到“那就别担心了”就是一种“逻辑自洽”的推理,一共有 3 条不同的推理路径。

输入格式:

输入首先在一行中给出两个正整数 N(1<N≤500)和 M,分别为命题个数和推理个数。这里我们假设命题从 1 到 N 编号。

接下来 M 行,每行给出一对命题之间的推理关系,即两个命题的编号 S1 S2,表示可以从 S1 推出 S2。题目保证任意两命题之间只存在最多一种推理关系,且任一命题不能循环自证(即从该命题出发推出该命题自己)。

最后一行给出待检验的两个命题的编号 A B

输出格式:

在一行中首先输出从 A 到 B 有多少种不同的推理路径,然后输出 Yes 如果推理是“逻辑自洽”的,或 No 如果不是。

题目保证输出数据不超过 109。

输入样例 1:

7 8
7 6
7 4
6 5
4 1
5 2
5 3
2 1
3 1
7 1

输出样例 1:

3 Yes

输入样例 2:

7 8
7 6
7 4
6 5
4 1
5 2
5 3
6 1
3 1
7 1

输出样例 2:

3 No

解题思路:

注意:题目要求判断是否逻辑自洽是判断从A点起的所有路径是否都能够到达B。

记忆化搜索、树形dp。

设f[i]为顶点i到达顶点B的路径数,那么f[i]=i的所有子节点到达顶点B的路径总数。

重点来了,如何判断是否逻辑自洽?

其实可以在dfs的过程中同时判断,只要路径中有任何一个f[i]为0,也就是到达B的路径数为0,即不满足逻辑自洽,否则满足逻辑自洽。

代码(CPP):

给出两份代码

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e3 + 10;
int n, m, A, B, cnt;
vector<int> G[maxn];
int Cnt[maxn];
bool flag = true;

int dfs(int v)
{
    if(Cnt[v])  // 备忘录,,记忆化搜索,查备忘录内有无记录,有则不需要再次计算
        return Cnt[v];
    for (int i = 0; i < G[v].size(); i++)
    {
        Cnt[v] += dfs(G[v][i]);
    }
    if(Cnt[v] == 0)  // 如果路径上有任何一个点无法到达B,则这个逻辑图不是逻辑融洽的
        flag = false;
    return Cnt[v];
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> n >> m;
    while(m--)
    {
        int u, v;
        cin >> u >> v;
        G[u].push_back(v);
    }
    cin >> A >> B;
    Cnt[B] = 1;
    dfs(A);
    cout << Cnt[A] << " " << (flag ? "Yes" : "No");
    return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e3 + 10;
int n, m, A, B, cnt;
vector<int> G[maxn];
int Cnt[maxn];
bool flag = true;

int dfs(int v)
{
    if(Cnt[v])  // 备忘录,,记忆化搜索,查备忘录内有无记录,有则不需要再次计算
        return Cnt[v];
    for (int i = 0; i < G[v].size(); i++)
    {
        Cnt[v] += dfs(G[v][i]);
    }
    if(Cnt[v] == 0)  // 如果路径上有任何一个点无法到达B,则这个逻辑图不是逻辑融洽的
        flag = false;
    return Cnt[v];
}
int main()
{
//     freopen("in.txt", "r", stdin);
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> n >> m;
    while(m--)
    {
        int u, v;
        cin >> u >> v;
        G[u].push_back(v);
    }
    cin >> A >> B;
    Cnt[B] = 1;
    dfs(A);
    cout << Cnt[A] << " " << (flag ? "Yes" : "No");
    return 0;
}

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

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

相关文章

DHCP的原理和配置

DHCP在一个广播域里动态修改IP地址 背景 DHCP (Dynamic Host Configuration Protocol&#xff0c;动态主机配置协议)由Internet工作任务小组设计开发专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议 使用DHCP的好处 减少管理员的工作量避免输入错误的可能避免IP地…

Java每日一练(20230421)

目录 1. 整数排列 &#x1f31f; 2. 数组排序 &#x1f31f; 3. 单词搜索 &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 整数排列 十位数的所有排列…

jmeter的界面介绍

前言 jmeter是一款进行接口自动化&#xff0c;性能测试的开源的工具 界面 jmeter菜单里面有个文件--模板&#xff0c;这个主要是一些请求不知道怎么设置时可以选择预制的一些模板 选择对应的模板点击创建&#xff0c;就可以生成一个对应的记录&#xff0c;我们选择jdbc&…

2021遥感应用组二等奖:基于机器学习回归算法的鄱阳湖水质遥感定量反演及时序变化监测研究

作品介绍 一、作品背景 鄱阳湖是中国第一大淡水湖&#xff0c;也是中国第二大湖&#xff0c;它在调节长江水位、涵养水源、改善当地气候等方面起着重大的作用。但近年来受围垦、环境污染等人类活动影响&#xff0c;鄱阳湖湿地退化严重&#xff0c;同时使鄱阳湖的容量减少&…

C语言中static的作用

在 C语言 中&#xff0c;static 通常用来修饰变量和函数。 static 修饰变量 变量按照作用域不同&#xff0c;分为全局变量和局部变量。 当static修饰全局变量时&#xff0c;该变量仍然可以在该文件的全局区域内引用&#xff0c;并且在编译阶段时为该变量分配内存&#xff0c;…

Ubuntu 安装 Samba 服务器

1. Ubuntu 安装 Samba 服务器 确认安装: dpkg -l | grep samba 安装&#xff1a; sudo apt-get install samba samba-common 卸载&#xff1a; sudo apt-get autoremove samba2. Samba 服务器配置 sudo vi /etc/samba/smb.conf在文件最后添加 [Share] commentThis is samba …

Leetcode-day3【215】数组中的第K个最大元素

文章目录 215. 数组中的第K个最大元素题目解题思路解题思路【学习】基于快速排序的选择方法 215. 数组中的第K个最大元素 题目 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#…

osg实现地球并在指定经纬度放置一个飞机模型(非osgEarth方式)

代码如下&#xff1a; #include<osgViewer/Viewer> #include<osgGA/TrackBallManipulator> #include<osg/Shape> #include<osg/ShapeDrawable> #include<osg/Texture2D> #include<osgDB/readFile> #include<osg/MatrixTransform> #…

Linux环境对Nginx开源版源码下载、编译、安装、开机自启

一、准备内容Centos8安装yum源https://blog.csdn.net/xiaochenXIHUA/article/details/127251704?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168197299116800211534092%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%

网络安全与攻防-同源策略

目录 同源策略&#xff08;浏览器控制&#xff09; 定义 思考&#xff1a; 跨域的N种方法 Jsonp 跨域资源共用&#xff08;CORS&#xff09; 预检&#xff08;OPTIONS请求&#xff09; 代理服务&#xff08;优先考虑&#xff09; 实战CORS&#xff08;Fetchnode.js&…

利用校正板对无人机影像辐射校正

无人机影像上获取到的数据是反映传感器对光响应的数值特征&#xff08;即DN值&#xff09;&#xff0c;但DN值与环境光强及相机参数有关&#xff0c;只有将其转换为反射率才能较好的反映地物的特征。一般的转换方法是使用二向反射率已知的校正板进行「单点比值」&#xff08;只…

WINNER电比例插装阀放大器

WINNER插装阀分类&#xff1a;双向流量控制阀、提动轴型单向止回常闭比例流量阀、双向流量控制常开比例压力补偿、导压级比例泄压阀、直动型降压比例泄压阀&#xff1b; 比例控制阀是一种按输入的电信号连续、按比例地控制液压系统的流量、压力和 方向的控制阀&#xff0c;其输…

SpringBoot项目的创建和使用

目录 一&#xff0c;SpringBoot 1&#xff0c;什么是SpringBoot 2&#xff0c;SpringBoot的优点 二&#xff0c;SpringBoot项目的创建和使用 1&#xff0c;项目的创建 创建方式 使用Idea创建(统一使用Idea社区版2021.x版本) 使用网页版创建&#xff08;使用Spring官网&a…

(已解决)关键词爬取百度搜索结果,返回百度安全验证,网络不给力,请稍后重试,无法请求到正确数据的问题

已解决&#xff0c;使用关键词进行百度搜索&#xff0c;然后爬取搜索结果&#xff0c;请求数据后&#xff0c;返回的是百度安全验证&#xff0c;网络不给力&#xff0c;请稍后重试。无法请求到正确数据。且尝试在header中增加Accept参数还是不行。 一、问题产生的现象 在学习过…

2024年江苏专转本到底多难?

相比较普通高考的难度来说&#xff0c;专转本的难度不算大且录取率更高一点。所以只要好好复习&#xff0c;上岸还是很容易的。&#xff08;一&#xff09;、语文的难度分析对比2022年及2023年语文的考试情况&#xff0c;考试的难度差别不大&#xff0c;也就是说语文的难度整体…

生产区域人数超员识别监测算法 yolov5

生产区域人数超员监控报警系统通过yolov5python网络模型分析技术&#xff0c;生产区域人数超员识别监测算法模型识别到现场画面区域超员时&#xff0c;立即告知后台中心进行告警提醒及时处理。Yolo意思是You Only Look Once&#xff0c;它并没有真正的去掉候选区域&#xff0c;…

C++初阶(初识命名空间及输入输出)

C是在C的基础之上&#xff0c;容纳进去了面向对象编程思想&#xff0c;并增加了许多有用的库&#xff0c;以及编程范式 等。熟悉C语言之后&#xff0c;对C学习有一定的帮助&#xff0c;本章节主要目标: 1. 补充C语言语法的不足&#xff0c;以及C是如何对C语言设计不合理的地方…

spring boot3.0新特性Http客户端远程调用

1、安装依赖 <!-- For reactive support --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></dependency>2、项目结构 3、新建配置类WebConfig package com.exa…

局域网可使用的远程工具有哪些

推荐一些局域网可使用的远程工具。 1、Splashtop&#xff1a;Splashtop 的效果非常好。 性能出色&#xff0c;拖放文件传输在不同平台之间工作&#xff0c;甚至还有语音聊天。Splashtop Personal 在局域网免费使用&#xff0c;性能出色&#xff0c;是不可多得的免费局域网远程…

进阶项目 01 使用@value注解,@ConfigurationProperties ,@PropertySource和properties文件

这可能是分布式开发的前奏&#xff0c;什么是分布式开发&#xff0c;一般在学校里面写的springboot项目&#xff0c;只有application.properties或者是application.yml文件中的一个配置信息&#xff0c;例如&#xff1a; application.yml文件中&#xff1a; #server server:po…