#搜索,剪枝,网络流,最大匹配#ssl 2123 民生问题

2024-02-11 05:48

本文主要是介绍#搜索,剪枝,网络流,最大匹配#ssl 2123 民生问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

后两个是吸引你点进来的,根本不存在

题目

在这里插入图片描述


分析

其实是正解应该是网络流的题目,这里用深搜+剪枝实现
1.深搜时找到比当前最优解不优的答案直接退出
2.预处理可以不需要的专家(有专家完全替代他)
3.对于问题只有一个专家能解决的,该专家必选,该专家的会的其他问题可以标记不需要


代码

#include <cstdio>
#define rr register
using namespace std;
int m,n,ans,p[61][61],a[61][7],b[61],v[61],now; bool e[61][61];
inline void dfs(int dep,int now){if (now>=ans) return;//不可能更优if (dep>m){//选完问题了ans=now;return;}for (rr int i=1;i<=p[dep][0];++i){rr int t=p[dep][i];for (rr int j=1;j<=a[t][0];++j) ++v[a[t][j]];//选择该专家rr int j=dep+1; while (v[j]) ++j; dfs(j,now+1);//下一个问题的位置for (rr int j=1;j<=a[t][0];++j) --v[a[t][j]];//回溯}
}
signed main(){scanf("%d%d",&m,&n); ans=n;for (rr int i=1;i<=n;++i){scanf("%d",&a[i][0]);for (rr int j=1;j<=a[i][0];++j)scanf("%d",&a[i][j]),e[i][a[i][j]]=1;}for (rr int i=1;i<=n;++i)for (rr int j=1;j<=n;++j)if (i!=j&&!b[i]&&!b[j]){rr int flag=1;for (rr int k=1;k<=m&&flag;++k)flag=!e[i][k]||e[j][k];b[i]=flag;//找出能够不要的科学家}for (rr int i=1;i<=n;++i)if (!b[i])for (rr int j=1;j<=a[i][0];++j)p[a[i][j]][++p[a[i][j]][0]]=i;for (rr int i=1;i<=m;++i)if (p[i][0]==1&&!b[p[i][1]]){//只有一个科学家会for (rr int j=1;j<=a[p[i][1]][0];++j) ++v[a[p[i][1]][j]];b[p[i][1]]=1; ++now;}rr int t=1; while (v[t]) ++t;dfs(t,now); printf("%d",ans);return 0;
}

这篇关于#搜索,剪枝,网络流,最大匹配#ssl 2123 民生问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/698977

相关文章

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

如何提高Redis服务器的最大打开文件数限制

《如何提高Redis服务器的最大打开文件数限制》文章讨论了如何提高Redis服务器的最大打开文件数限制,以支持高并发服务,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录如何提高Redis服务器的最大打开文件数限制问题诊断解决步骤1. 修改系统级别的限制2. 为Redis进程特别设置限制

C# ComboBox下拉框实现搜索方式

《C#ComboBox下拉框实现搜索方式》文章介绍了如何在加载窗口时实现一个功能,并在ComboBox下拉框中添加键盘事件以实现搜索功能,由于数据不方便公开,作者表示理解并希望得到大家的指教... 目录C# ComboBox下拉框实现搜索步骤一步骤二步骤三总结C# ComboBox下拉框实现搜索步骤一这

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

hdu1240、hdu1253(三维搜索题)

1、从后往前输入,(x,y,z); 2、从下往上输入,(y , z, x); 3、从左往右输入,(z,x,y); hdu1240代码如下: #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#inc

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

usaco 1.3 Prime Cryptarithm(简单哈希表暴搜剪枝)

思路: 1. 用一个 hash[ ] 数组存放输入的数字,令 hash[ tmp ]=1 。 2. 一个自定义函数 check( ) ,检查各位是否为输入的数字。 3. 暴搜。第一行数从 100到999,第二行数从 10到99。 4. 剪枝。 代码: /*ID: who jayLANG: C++TASK: crypt1*/#include<stdio.h>bool h

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依