信息学奥赛一本通 1384:珍珠(bead)

news/2025/1/17 1:14:25/

【题目链接】

ybt 1384:珍珠(bead)

【题目考点】

1. 图论:floyd 求传递闭包

传递闭包:二维数组e,e[i][j]表示顶点i到顶点j是否有路径。

【解题思路】

这是个有向图。每颗珍珠是一个顶点,初始情况下,如果i比j重,那么i到j有一条弧。
设布尔类型数组e,为该图的传递闭包,即e[i][j]表示i是否比j重。
先输入已知的相对重量关系,如果输入了x,y,那么x比y重,将e[x][y]设为1。
而后在e数组上使用floyd算法求传递闭包。k, i, j三重循环,如果i到j的重量关系还没确定(e[i][j]==0),但是i比k重,k比j重,那么一定有i比j重。
e[i][0]记录比i轻的珍珠的数量,e[0][j]记录比j重的珍珠的数量。遍历传递闭包e,如果e[i][j]为真,即i比j重,那么比i轻的珍珠的数量增加1,比j重的珍珠数量增加1。
已知n是奇数,那么n/2(n整除2)的结果等于(n-1)/2。

  • 如果比i重的珍珠数量大于n/2,超过了一半,那么i的重量一定不是中间重量
  • 如果比i轻的珍珠数量大于n/2,超过了一半,那么i的重量也一定不是中间重量

统计不可能是中间重量的珍珠的数量,输出结果。

【题解代码】

解法1:floyd求传递闭包

#include<bits/stdc++.h>
using namespace std;
#define N 105
int n, m, e[N][N], ct;//n:顶点数 m:边数 e[i][j]:输入数据中i比j重 
int main()
{int x, y;cin >> n >> m;for(int i = 1; i <= m; ++i){cin >> x >> y;e[x][y] = 1;}for(int k = 1; k <= n; ++k)for(int i = 1; i <= n; ++i)for(int j = 1; j <= n; ++j)if(e[i][j] == 0 && e[i][k] && e[k][j])e[i][j] = 1;for(int i = 1; i <= n; ++i)for(int j = 1; j <= n; ++j)if(e[i][j]){e[i][0]++;//e[i][0]:比i轻的数量 e[0][j]++;//e[0][j]:比j重的数量}for(int i = 1; i <= n; ++i)if(e[i][0] > n/2 || e[0][i] > n/2)ct++;cout << ct;return 0;
}

http://www.ppmy.cn/news/37832.html

相关文章

为社会开发,无障碍开发,开发人员的公益时间

无障碍开发让每一个人受益无障碍开发让每一个人受益无障碍开发的重要性无障碍开发案例无障碍小助手百度无障碍开放平台Apple Watch 的无障碍功能Google 的无障碍开发指南微软的无障碍开发工具结论无障碍开发让每一个人受益 无障碍开发是指开发人员在设计和开发软件时&#xff…

C++实现vector

#include <iostream> // using namespace std; template <typename T> class Myvector { private:T * first;//指向头T * last;//指向最后一个元素T * end;//指向容器末尾 public:Myvector():first(nullptr),last(nullptr),end(nullptr){ cout << "Myve…

Nautilus Chain 首个生态基础设施 Poseiswap,公布空投规则

以Optimism、Arbitrum One等为代表的Layer2生态&#xff0c;率先对交互测试用户发放了空投后&#xff0c;越来越多的用户也开始向新的未发币的Layer2生态比如zkSync Era、StarkNet等看齐&#xff0c;以期待从中获得潜在的空投机会。而除了Layer2概念板块外&#xff0c;以Nautil…

ThreeJS-文件夹、线框、点击按钮触发函数(七)

代码&#xff1a; <template> <div id"three_div"></div> </template> <script> import * as THREE from "three"; import { OrbitControls } from "three/examples/jsm/controls/OrbitControls"; import gsap fr…

Python 自建项目上传到 PyPI 之后通过 pip 可安装

Python 自建项目上传到 PyPI 之后通过 pip 可安装1. 登录 PyPI 网站2. 创建一个 Python 项目3. 文件信息LICENSEMANIFEST.inpyproject.tomlREADME.mdrequirements.txt4. 上传到 PyPI 上5. 查看1. 登录 PyPI 网站 官方网站: https://pypi.org/ 注册登录后可以进行查看文档: http…

Springboot异常统一处理,并保存异常日志到数据库中

一、为什么要进行统一异常处理 如果发生了异常我们应该让接口可以返回统一的结果。有好的展示给接口调用方。方便我们对异常进行记录&#xff0c;和错误排查。我们可能对某些异常比较关注&#xff0c;比如说我们监控某个IP或者用户一天发送短信的数量&#xff0c;当超出一定数…

二叉树的前序、中序、后序、层序遍历

1. 二叉树的前序遍历 前序遍历&#xff1a;根左右&#xff0c;即对于每一棵子树&#xff0c;先遍历其根节点&#xff0c;然后遍历其左子树&#xff0c;最后遍历其右子树 题目简述&#xff1a;给你二叉树的根节点root&#xff0c;返回它节点值的前序遍历。leetcode链接 思路一&a…

ToBeWritten之IoT静/动态环境搭建

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 转移发布平台通知&#xff1a;将不再在CSDN博客发布新文章&#xff0c;敬…