「网络流24题」试题库问题

传送门:>Here<

题意:有K种类型的共N道试题用来出卷子,要求卷子须有M道试题。已知每道题属于p种类型,每种类型的试题必须有且仅有k[i]道。现问出这套试卷的一种具体方案

思路分析

昨天打了一天的Dinic,今天又打了一遍。板子倒是很熟了……

这题很简单,没看题解就想出来了(貌似建图方法还和题解不太一样?2333)

首先不要被以前做的题束缚了,这可是网络流,容量不一定为1!于是很容易想到从源点往每种类型的题那里连容量为k[i]的边,然后每种类型再连题目(容量为1),最后连回汇点(容量为1)即可。

最后统计答案就是看每一种类型的题有容量的出边即可

Code

没有细节,一遍AC(甚至调试都没有……)

/*By DennyQi*/
#include <cstdio>
#include <queue>
#include <cstring>
#include <algorithm>
#define  r  read()
#define  Max(a,b)  (((a)>(b)) ? (a) : (b))
#define  Min(a,b)  (((a)<(b)) ? (a) : (b))
using namespace std;
typedef long long ll;
const int MAXN = 10010;
const int MAXM = 10010;
const int INF = 1061109567;
inline int read(){int x = 0; int w = 1; register int c = getchar();while(c ^ '-' && (c < '0' || c > '9')) c = getchar();if(c == '-') w = -1, c = getchar();while(c >= '0' && c <= '9') x = (x << 3) +(x << 1) + c - '0', c = getchar(); return x * w;
}
int K,N,M,S,T,x,p;
int first[MAXM*2],nxt[MAXM*2],to[MAXM*2],cap[MAXM*2],flow[MAXM*2],num_edge=-1;
int level[MAXN],cur[MAXN];
queue <int> q;
inline void add(int u, int v, int c, int f){to[++num_edge] = v;cap[num_edge] = c;flow[num_edge] = f;nxt[num_edge] = first[u];first[u] = num_edge;
}
inline bool BFS(){memset(level, 0, sizeof(level));while(!q.empty()) q.pop();q.push(S);level[S] = 1;int u,v;while(!q.empty()){u = q.front(); q.pop();for(int i = first[u]; i!=-1; i = nxt[i]){v = to[i];if(!level[v] && cap[i]-flow[i]>0){level[v] = level[u] + 1;q.push(v);}}}return level[T] != 0;
}
int DFS(int u, int a){if(u == T || a == 0) return a;int ans = 0, _f,v;for(int& i = cur[u]; i != -1; i = nxt[i]){v = to[i];if(level[u]+1==level[v] && cap[i]-flow[i]>0){_f = DFS(v, Min(a,cap[i]-flow[i]));ans += _f, a -= _f;flow[i] += _f, flow[i^1] -= _f;if(a == 0) break;}}return ans;
}
inline void Dinic(){int ans = 0;while(BFS()){for(int i = S; i <= T; ++i) cur[i] = first[i];ans += DFS(S, INF);}
}
int main(){
//    freopen(".in","r",stdin);K=r,N=r;S = 0, T = N+K+2;memset(first, -1, sizeof(first));for(int i = 1; i <= K; ++i){x=r;M+=x;add(S, i+N, x, 0);add(i+N, S, 0, 0);}for(int i = 1; i <= N; ++i){p=r;for(int j = 1; j <= p; ++j){x=r;add(x+N, i, 1, 0);add(i, x+N, 0, 0);}add(i, T, 1, 0);add(T, i, 0, 0);}Dinic();int c;for(int i = 1; i <= K; ++i){c = i+N;printf("%d: ",i);for(int j = first[c]; j != -1; j = nxt[j]){if(cap[j]-flow[j]==0 && cap[j] == 1){printf("%d ", to[j]);}}printf("\n");}return 0;
}

 

转载于:https://www.cnblogs.com/qixingzhi/p/9420874.html

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

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

相关文章

机器学习实践六---K-means聚类算法 和 主成分分析(PCA)

在这次练习中将实现K-means 聚类算法并应用它压缩图片&#xff0c;第二部分&#xff0c;将使用主成分分析算法去找到一个脸部图片的低维描述。 K-means Clustering Implementing K-means K-means算法是一种自动将相似的数据样本聚在一起的方法,K-means背后的直观是一个迭代过…

航海家软件公式全破解

水手突破 上趋势:MA(LOW,20)*1.2,color0080ff,linethick2;次上趋势:MA(LOW,20)*1.1,COLORYELLOW;次下趋势:MA(HIGH,20)*0.9,COLORWHITE;下趋势:MA(HIGH,20)*0.8,COLORGREEN,linethick2;ZD:(C-REF(C,1))/REF(C,1)*100;HDZF:(HHV(H,20)-C)/(HHV(H,20)-LLV(L,20));趋势强度:IF(C&g…

打包 压缩 命令tar zip

2019独角兽企业重金招聘Python工程师标准>>> 打包 压缩 命令tar zip tar语法 #压缩 tar -czvf ***.tar.gz tar -cjvf ***.tar.bz2 #解压缩 tar -xzvf ***.tar.gz tar -xjvf ***.tar.bz2 tar [主选项辅选项] 文件或目录 主选项是必须要有的&#xff0c;它告诉tar要做…

mysql免安装5.7.17_mysql免安装5.7.17数据库配置

首先要有 mysql-5.7.10-winx64环境: mysql-5.7.10-winx64 win10(64位)配置环境变量&#xff1a;1、把mysql-5.7.10-winx64放到D盘&#xff0c;进入D\mysql-5.7.10-winx64\bin目录&#xff0c;复制路径&#xff0c;配置环境变量&#xff0c;在path后面添加D\mysql-5.7.10-winx6…

tidb数据库_异构数据库复制到TiDB

tidb数据库This article is based on a talk given by Tianshuang Qin at TiDB DevCon 2020.本文基于Tianshuang Qin在 TiDB DevCon 2020 上的演讲 。 When we convert from a standalone system to a distributed one, one of the challenges is migrating the database. We’…

机器学习实践七----异常检测和推荐系统

Anomaly detection 异常检测是机器学习中比较常见的应用&#xff0c;它主要用于非监督学习问题&#xff0c;从某些角度看&#xff0c; 它又类似于一些监督学习问题。 什么是异常检测&#xff1f;来看几个例子&#xff1a; 例1. 假设是飞机引擎制造商&#xff0c; 要对引擎进行…

CODE[VS] 1621 混合牛奶 USACO

题目描述 Description牛奶包装是一个如此低利润的生意,所以尽可能低的控制初级产品(牛奶)的价格变的十分重要.请帮助快乐的牛奶制造者(Merry Milk Makers)以可能的最廉价的方式取得他们所需的牛奶.快乐的牛奶制造公司从一些农民那购买牛奶,每个农民卖给牛奶制造公司的价格不一定…

apply和call用法

apply语法 func.apply(name, [array])第一个参数指定函数体内this对象的指向&#xff0e;第二个参数为一个带下标的集合&#xff0c;可以是数组或类数组,apply方法把这个集合中的元素作为参数传递给被调用的函数var func function(a, b, c) {console.log([a, b, c]); // [1,2,…

刚认识女孩说不要浪费时间_不要浪费时间寻找学习数据科学的最佳方法

刚认识女孩说不要浪费时间重点 (Top highlight)Data science train is moving, at a constantly accelerating speed, and increasing its length by adding up new coaches. Businesses want to be on the data science train to keep up with the ever-evolving technology a…

测试工具之badboy

badboy这个工具本身用处不是很大&#xff0c;但有个录制脚本的功能&#xff0c;还是jmeter脚本&#xff0c;所以针对这一点很多懒人就可以通过这个录制脚本&#xff0c;而不需要自己去编写 badboy工具最近还是2016年更新的&#xff0c;后面也没在更新了&#xff0c;官方下载地址…

hive 集成sentry

2019独角兽企业重金招聘Python工程师标准>>> 环境 apache-hive-2.3.3-bin apache-sentry-2.1.0-bin 1 2 sentry是目前最新的版本&#xff0c;支持hive的最高版本为2.3.3&#xff0c;hive版本如果高于2.3.3&#xff0c;会出一些版本兼容问题[亲测] hive快速安装 wget…

word模板生成word报表文档

主要功能为根据word模板生成word报表文档,注意引用Interop.Word.dll;首先要生成word程序对象Word.Application app new Word.Application();根据模板文件生成新文件框架File.Copy(TemplateFile, FileName);生成documnet对象ord.Document doc new Word.Document(); 打开…

isql 测试mysql连接_[libco] 协程库学习,测试连接 mysql

历史原因&#xff0c;一直使用 libev 作为服务底层&#xff1b;异步框架虽然性能比较高&#xff0c;但新人学习和使用门槛非常高&#xff0c;而且串行的逻辑被打散为状态机&#xff0c;这也会严重影响生产效率。用同步方式实现异步功能&#xff0c;既保证了异步性能优势&#x…

什么是数据仓库,何时以及为什么要考虑一个

The term “Data Warehouse” is widely used in the data analytics world, however, it’s quite common for people who are new with data analytics to ask the above question.术语“数据仓库”在数据分析领域中被广泛使用&#xff0c;但是&#xff0c;对于数据分析新手来…

安装好MongoDB,但服务中没有MongoDB服务的解决办法

以管理员身份打开CMD&#xff0c;添加路径添加服务即可 winX 然后再选Amongod -dbpath "D:\MongoDB\Server\3.6\data\db" -logpath "D:\MongoDB\Server\3.6\data\log\mongo.log" -install -serviceName "MongoDB"转载于:https://www.cnblogs.com…

DRF数据验证+数据存储

1.验证数据的自定义类 class BooksDRFt(serializers.ModelSerializer):class Meta:model Bookfields __all__#要验证的字段author serializers.CharField(requiredFalse)#要验证的字段name serializers.CharField(min_length2, error_messages{required: 不能为空, min_len…

mysql变量 exec_MySQL slave_exec_mode 参数说明

背景&#xff1a;今天无意当中看到参数slave_exec_mode&#xff0c;从手册里的说明看出该参数和MySQL复制相关&#xff0c;是可以动态修改的变量&#xff0c;默认是STRICT模式(严格模式)&#xff0c;可选值有IDEMPOTENT模式(幂等模式)。设置成IDEMPOTENT模式可以让从库避免1032…

C#word

主要功能为根据word模板生成word报表文档,注意引用Interop.Word.dll;首先要生成word程序对象Word.Application app new Word.Application();根据模板文件生成新文件框架File.Copy(TemplateFile, FileName);生成documnet对象ord.Document doc new Word.Document(); 打开…

机器学习kaggle竞赛实战-泰坦尼克号

数据展示 首先登kaggle 下载泰坦尼克训练相关数据 import pandas as pd import numpy as np data pd.read_csv(train.csv) print(data.shape) print(data.head) train data[:800] test data[800:] print(train.shape) print(test.shape)选择特征 selected_features [Pcl…

上海大都会 H.A Simple Problem with Integers

题目描述 You have N integers A1, A2, ... , AN. You are asked to write a program to receive and execute two kinds of instructions: C a b means performing Ai (Ai2 mod 2018) for all Ai such that a ≤ i ≤ b.Q a b means query the sum of Aa, Aa1, ..., Ab. Note…