【24题】试题库问题【网络流】

试题库管理系统 基于javaswing和javaDB的试题库管理系统~ 基于javaswing和javaDB的试题库管理系统~ 基于javaswing和javaDB的试题库管理系统~ 立即下载

题目大意:

假设一个试题库中有nn道试题。每道试题都标明了所属类别。同一道题可能有多个类别属性。现要从题库中抽取m道题组成试卷。并要求试卷包含指定类型的试题。


思路:

这道题很明显是一个二分图。所以首选DinicDinic。
对于每一个试卷,将它连向汇点TT,流量为所需的题目总数;而每一道题就连向原点S,流量为11。而中间则将每一道题连向它可以放入的试卷,流量为1。之后跑一边DinicDinic,若sum=numsum=num则可以组成试卷,否则不行。


代码:

#include <cstdio>
#include <queue>
#include <iostream>
#include <cstring>
#define Inf 0x7f
#define INF 2147483647
using namespace std;

int n,m,k,s,t,head[3000001],dep[3000001],num,x,y,sum,ans;

struct edge
{
    int to,next,c;
}e[3000001];

void add(int from,int to,int c)
{
    k++;
    e[k].c=c;
    e[k].to=to;
    e[k].next=head[from];
    head[from]=k;
}

bool bfs()  //分层不解释
{
    memset(dep,Inf,sizeof(dep));    
    dep[s]=0;
    queue<int> q;
    q.push(s);
    while (q.size())
    {
        int u=q.front();
        q.pop();
        for (int i=head[u];i;i=e[i].next)
        {
            int v=e[i].to;
            if (dep[u]+1<dep[v]&&e[i].c)
            {
                dep[v]=dep[u]+1;
                q.push(v);
            }
        }
    }
    return (dep[t]<Inf);
}

int dfs(int u,int low)
{
    int lows=0;
    if (u==t) return low;  //到达汇点
    for (int i=head[u];i;i=e[i].next)
    {
        int v=e[i].to;
        if (dep[v]==dep[u]+1&&e[i].c)
        {
            lows=dfs(v,min(e[i].c,low));  //求最小边权
            if (!lows) continue;  //最小边权为0
            e[i].c-=lows;  //正向边
            e[((i+1)^1)-1].c+=lows;  //反向边
            return lows;
        }
    }
    return 0;
}

bool print()  //输出不解释
{
    for (int i=n+1;i<=n+m;i++)
    {
        printf("%d:",i-n);
        for (int j=head[i];j;j=e[j].next)
        {
            int v=e[j].to;
            if (v<t&&e[j].c)
             printf(" %d",v);
        }
        putchar(10); 
    }
    return false;
}

int main()
{
    scanf("%d%d",&m,&n);
    s=0;
    t=n+m+1;
    for (int i=1;i<=m;i++)
    {
        scanf("%d",&x);
        num+=x;
        add(n+i,t,x);
        add(t,n+i,0);
    }
    for (int j=1;j<=n;j++)
    {
        add(s,j,1);
        add(j,s,0);
        scanf("%d",&x);
        for (int i=1;i<=x;i++)
        {
            scanf("%d",&y);
            add(j,n+y,1);
            add(n+y,j,0);
        }
    }
    while (bfs())  //只要能分层就循环
    {
        while (sum=dfs(s,INF))
         ans+=sum;
    }
    if (ans<num) return printf("No Solution!\n")&0;
    return print();
}
试题库管理系统java 自己写的java代码,学期项目。试题库管理系统,有老师出题,学生做题,并保存题库的功能,数据库用的SQL server 立即下载

相关推荐

Vue3实战:企业级应用集成钉钉扫码登录全流程解析

本文详细解析了在Vue3企业级应用中集成钉钉扫码登录的全流程。从钉钉开放平台应用创建与配置,到Vue3前端如何优雅地嵌入并管理扫码组件,再到后端如何安全地处理OAuth 2.0授权码以换取用户信息并完成登录,提供了完整的实战代码与避坑指南。该方案能有效实现安全便捷的单点登录,统一企业身份认证。

weixin_29019241的博客 289

【P2763】 试题库问题(网络流24题)

题目格式«问题描述:假设一个试题库中有n道试题。每道试题都标明了所属类别。同一道题可能有多个类别属性。现要从题库中抽取m 道题组成试卷。并要求试卷包含指定类型的试题。试设计一个满足要求的组卷算法。«编程任务:对于给定的组卷要求,计算满足要求的组卷方案。输入输出格式输入格式:第1行有2个正整数k和n (2 &lt;=k&lt;= 20, k&lt;=n&lt;= 1000)k 表示题库中试题类型总数...

Tmotfl的博客 638

Redis中什么是Big Key(大key)问题?如何解决Big Key问题?

通俗易懂的讲,Big Key就是某个key对应的value很大,占用的redis空间很大,本质上是大value问题。key往往是程序可以自行设置的,value往往不受程序控制,因此可能导致value很大。redis中这些Big Key对应的value值很大,在序列化/反序列化过程中花费的时间很大,因此当我们操作Big Key时,通常比较耗时,这就可能导致redis发生阻塞,从而降低redis性能。用几个实际的例子对大Key的特征进行描述:● 一个String类型的Key,它的值为5MB(数据过大); ● 一

weixiaohuai的博客 3万+

网络流24题——试题库问题

【问题分析】 二分图多重匹配问题,用最大流解决。 【建模方法】 建立二分图,每个题为X集合中的顶点,每个类别为Y集合中的顶点,增设附加源S和汇T。 1、从S向每个Xi连接一条容量为1的有向边。 2、从每个Yi向T连接一条容量为该类别所需数量的有向边。 3、如果一个题i属于一个类别j,连接一条从Xj到Yi容量为1的有向边。 求网络最大流,如果最大流量等于所有类别所需之和,则存在解,否则无解...

GYH0730的博客 294

自抗扰(ADRC)控制原理及控制器设计

自抗扰控制原理以及控制器设计

weixin_43487974的博客 3万+

Aveva Marine C# 二次开发入门001

1# 引用 C:\AVEVA\Marine\OH12.1.SP4\Aveva.ApplicationFramework.dll C:\AVEVA\Marine\OH12.1.SP4\Aveva.ApplicationFramework.Presentation.dll 2# 引用命名空间, using Aveva.ApplicationFramework.Presentation;usi...

weixin_30245867的博客 1911

[最大流]试题库问题

题目描述 假设一个试题库中有n道试题。每道试题都标明了所属类别。同一道题可能有多个类别属性。现要从题库中抽取m 道题组成试卷。并要求试卷包含指定类型的试题。试设计一个满足要求的组卷算法。 对于给定的组卷要求,计算满足要求的组卷方案。 输入输出格式 输入格式: 第1行有2个正整数k和n (2 &lt;=k&lt;= 20, k&lt;=n&lt;= 1000) k 表示题库中试题类型总数...

~NULL~ 772

Yolov5s/Yolov8s网络结构图

yolov8、yolov5网络结构图

Goodness2020的博客 9925

【网络流24题】试题库问题(最大流)

题面Cogs题解简单题 这题应该很裸 因为每个试题限用一次 所以从源点向每个题目连边,容量为1 然后每个类型的题目有限制 从类型向汇点连边,容量为所需的题目数 然后就是题目向类型的匹配 和它对应的类型连边,容量为1 然后直接跑最大流输出就行了#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring>

小蒟蒻yyb的博客 622

CS 188 Project3(RL) Q10:Approximate Q-Learning

实现一个近似的Q-learning学习代理,它学习状态特征的权重,其中许多状态可能共享相同的特征。在qlearningAgents.py中的ApproximateQAgent类中编写实现,它是PacmanQAgent的子类。 注:近似Q-learning学习假设在状态和动作对上存在一个特征函数f(s,a),它产生一个向量f1(s,a) .. fi(s,a) .. fn(s,a)特征值。我们在fe...

大模型与Agent智能体 2655

【第07例】IPD体系进阶: 6 个技术评审点(TR)

TR技术评审点

产品线负责人 4419

洛谷·[网络流24题]试题库问题

洛谷P2763 [网络流24题] 试题库问题 网络最大流

樱狸✨愿携清风归来处 342

PowerPMAC配置EtherCAT设备

本文详细介绍了在PowerPMAC IDE环境下配置EtherCAT伺服电机的完整流程。主要内容包括:准备工作(连接硬件和获取ESI文件)、通过ESI管理器加载配置文件、网络扫描识别从站设备、变量映射(定义输入输出位置参数)、激活EtherCAT通讯(验证状态字和实际位置)以及相关参数说明。文章还概述了主站配置的8个方面和从站配置的7个选项,重点说明了PDO映射和变量分配机制,为伺服电机的EtherCAT通信配置提供了系统指导。

mahuliang321的博客 972

[网络流24题]试题库问题

试题库问题 题目描述: 假设一个试题库中有n道试题。每道试题都标明了所属类别。同一道题可能有多个类别属性。现要从题库中抽取m 道题组成试卷。并要求试卷包含指定类型的试题。试设计一个满足要求的组卷算法。 编程任务: 对于给定的组卷要求,计算满足要求的组卷方案。 输入格式: 第1行有2个正整数k和n (2 k 表示题库中试题类型总数,n 表示题库中试题总数。第2

Edwin VanCleef的博客 570

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【网络流24题】试题库问题

Description假设一个试题库中有 n道试题。每道试题都标明了所属类别。同一道题可能有多个类别属性。现要从题库中抽取 m道题组成试卷。并要求试卷包含指定类型的试题。试设计一个满足要求的组卷算法。 对于给定的组卷要求,计算满足要求的组卷方案。 Input文件第 1行有 2个正整数 k和n(2≤k≤20,k≤n≤1000),k表示题库中试题类型总数, n表示题库中试题总数。第 2行有 k个正整数,

magical_qting的博客 863

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

试题库问题【网络流24题】【最大流Dinic】

题目链接 还是挺好的一道题,但是可能我写题的顺序缘故,并不觉得这道题会比之前的题难,既然最后答案要判断是否为M,那么就是问的是最大流的值是否为M,这样子只需要考虑的是最大流的值即可了,我们接下去判断,怎么建边就是个问题了,一共有K个点是所谓 的出题的每个种类的要求的点,然后还有N个是所有的题目的点,然后根据每道题的范围,在对题目种类连接上一条容量为1的边,然后再通过K个点与汇点链接上容量为其...

既然弱小,就只顾变强就是了 308

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

[网络流 24 题] luoguP2763 试题库问题

[返回网络流 24 题索引] 题目描述 假设一个试题库中有 nnn 道试题。每道试题都标明了所属类别。同一道题可能有多个类别属性。现要从题库中抽取 mmm 道题组成试卷。并要求试卷包含指定类型的试题。 Solution 2763\text{Solution 2763}Solution 2763 设表示题目的点为 PPP,表示类别的为 KKK。 首先从源 STSTST 到 PiP...

YangHao5的博客 362

网络流24题(试题库问题)

比较模板的网络流匹配了 明显是拿试卷去匹配类型明显是拿试卷去匹配类型明显是拿试卷去匹配类型 由于一张试卷只能贡献给一种类型,所以s向试卷连流量1的边来限制一下由于一张试卷只能贡献给一种类型,所以s向试卷连流量1的边来限制一下由于一张试卷只能贡献给一种类型,所以s向试卷连流量1的边来限制一下 每张试卷可以流入一些类型,向对应的类型建边,流量1每张试卷可以流入一些类型,向对应的类型建边,流量1每张试卷可以流入一些类型,向对应的类型建边,流量1 每种类型需要被匹配x次,所以类型向t连边,流量为x每种类型需要被匹配

jziwjxjd的博客 510

【线性规划与网络流24题 7】试题库问题

题目链接:试题库问题 【线性规划与网络流24题 7】试题库问题 Description 假设一个试题库中有n道试题。每道试题都标明了所属类别。同一道题可能有多个类别属性。现要从题库中抽取m 道题组成试卷。并要求试卷包含指定类型的试题。试设计一个满足要求的组卷算法。 编程任务: 对于给定的组卷要求,计算满足要求的组卷方案 Input 文件第1行有2个正整数k和n (

ACdream 852
上一篇: YAPTCHA【数论】
下一篇: 吃饭【网络流】
stoorz1023
博客等级 码龄9年 101粉丝 595原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值