当前位置: 首页 > 编程日记 > 正文

洛谷P2763 试题库问题

题目:https://www.luogu.org/problemnew/show/P2763

题目描述

«问题描述:

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

«编程任务:

对于给定的组卷要求,计算满足要求的组卷方案。

输入输出格式

输入格式:

第1行有2个正整数k和n (2 <=k<= 20, k<=n<= 1000)

k 表示题库中试题类型总数,n 表示题库中试题总数。第2 行有k 个正整数,第i 个正整数表示要选出的类型i的题数。这k个数相加就是要选出的总题数m。接下来的n行给出了题库中每个试题的类型信息。每行的第1 个正整数p表明该题可以属于p类,接着的p个数是该题所属的类型号。

输出格式:

第i 行输出 “i:”后接类型i的题号。如果有多个满足要求的方案,只要输出1个方案。如果问题无解,则输出“No Solution!”。

输入输出样例

输入样例#1: 
3 15
3 3 4
2 1 2
1 3
1 3
1 3
1 3
3 1 2 3
2 2 3
2 1 3
1 2
1 2
2 1 2
2 1 3
2 1 2
1 1
3 1 2 3
输出样例#1: 
1: 1 6 8
2: 7 9 10
3: 2 3 4 5

说明

感谢 @PhoenixEclipse 提供spj

解析

网络流24题之一orz。

二分图多重匹配。

每道题跟T连容量为1的边。

每类题跟S连容量为需要该类题数量的边。

每道题跟它所在的题的类别连容量为1的边。

跑最大流,如果结果小于题目总数,则无解。

否则,对每条连接题的类别和题目的边检查,

若满流,输出题目的编号即可。

至于洛谷的90分:

检查一下是否有条边连了0节点(似乎数据有问题)。

  1 #include<iostream>
  2 #include<cstdio>
  3 #include<algorithm>
  4 #include<cstring>
  5 #include<cmath>
  6 #include<vector>
  7 #include<queue>
  8 using namespace std;
  9 #define maxn 10000
 10 struct line{
 11     int to;
 12     int cap,flow;
 13 };
 14 vector<line> edge;
 15 vector<int> G[maxn];
 16 bool vis[maxn];
 17 int dis[maxn];
 18 int cur[maxn];
 19 int n,k,m,rep,re;
 20 int inv[maxn];
 21 int S,T;
 22 void addedge(int from,int to,int cap){
 23     edge.push_back((line){to,cap,0});
 24     edge.push_back((line){from,0,0});
 25     int sz=edge.size();
 26     G[from].push_back(sz-2);
 27     G[to].push_back(sz-1);
 28 }
 29 bool bfs(){
 30     memset(vis,false,sizeof(vis));
 31     vis[S]=true;
 32     dis[S]=0;
 33     queue<int> q;
 34     q.push(S);
 35     while (!q.empty()){
 36         int u=q.front();
 37         q.pop();
 38         for (int i=0;i<G[u].size();++i){
 39             line e=edge[G[u][i]];
 40             if (vis[e.to]) continue;
 41             if (e.flow>=e.cap) continue;
 42             vis[e.to]=true;
 43             dis[e.to]=dis[u]+1;
 44             q.push(e.to);
 45         }
 46     }
 47     return vis[T];
 48 }
 49 int dfs(int x,int a){
 50     if (a==0||x==T) return a;
 51     int f,flow=0;
 52     for (int &i=cur[x];i<G[x].size();++i){
 53         line &e=edge[G[x][i]];
 54         if (dis[e.to]==dis[x]+1&&(f=dfs(e.to,min(a,e.cap-e.flow)))){
 55             flow+=f;
 56             a-=f;
 57             e.flow+=f;
 58             edge[G[x][i]^1].flow-=f;
 59             if (!a) break;
 60         }
 61     }
 62     return flow;
 63 }
 64 int dinic(){
 65     int ans=0;
 66     while (bfs()){
 67         memset(cur,0,sizeof(cur));
 68         ans+=dfs(S,10000);
 69     }
 70     return ans;
 71 }
 72 int main(){
 73     scanf("%d%d",&k,&n);
 74     S=0; T=2*n+1; 
 75     for (int i=1;i<=n;++i){
 76         addedge(i+k,T,1);
 77     }
 78     for (int i=1;i<=k;++i){
 79         scanf("%d",&inv[i]);
 80         m+=inv[i];
 81         addedge(S,i,inv[i]);
 82     }
 83     for (int i=1;i<=n;++i){
 84         scanf("%d",&rep);
 85         for (int j=1;j<=rep;++j){
 86             scanf("%d",&re);
 87             addedge(re,i+k,1);
 88         }
 89     }
 90     if (dinic()<m){
 91         printf("No Solution!");
 92         return 0;
 93     }
 94     for (int i=1;i<=k;++i){
 95         printf("%d:",i);
 96         for (int j=0;j<G[i].size();++j){
 97             line e=edge[G[i][j]];
 98             if (e.cap==e.flow&&e.to) printf(" %d",e.to-k);
 99         }
100         printf("\n");
101     }
102     return 0;
103 }
AC

90分,100分分别是这么写的:

 1 //90分:
 2     for (int i=1;i<=k;++i){
 3         printf("%d:",i);
 4         for (int j=0;j<G[i].size();++j){
 5             line e=edge[G[i][j]];
 6             if (e.cap==e.flow&&e.to!=k) printf(" %d",e.to-k);
 7         }
 8         printf("\n");
 9     }
10 //100分:
11     for (int i=1;i<=k;++i){
12         printf("%d:",i);
13         for (int j=0;j<G[i].size();++j){
14             line e=edge[G[i][j]];
15             if (e.cap==e.flow&&e.to) printf(" %d",e.to-k);
16         }
17         printf("\n");
18     }
compare

希望有大佬给更好解释orz。

转载于:https://www.cnblogs.com/gjc1124646822/p/8053295.html

相关文章:

梦断代码阅读笔记03

经过几天的阅读&#xff0c;终于将这本书看完了&#xff0c;读完了整个故事&#xff0c;我进行了简单的总结&#xff0c;感觉不仅仅是在写代码与计算机或软件交流&#xff0c;更多的是做事行为。 首先是做事得有目标。无论做什么事情都要有目标和动力&#xff0c;这样做起事来无…

能让导师喜欢的学生(转自论坛)

第一&#xff0c;明辨是非&#xff0c;从善如流。研究生是未来的高级知识分子&#xff0c;作为国家栋梁&#xff0c;将来很可能为国家和社会发展献计献策&#xff0c;如果不能明辨是非&#xff0c;如何做出正确建议和决策&#xff1f;如果不能从善如流&#xff0c;如何保证自己…

使用SpringBoot发送邮件 在本地测试是好的 放到服务器连接超时问题

原因 原来是ECS基于安全考虑&#xff0c;禁用了端口25。改成465就可以发邮件了。 原始配置 本地可发送 #spring.mail.hostsmtp.qq.com #spring.mail.usernameqq #spring.mail.passwordpassword #spring.mail.properties.mail.smtp.starttls.enabletrue #spring.mail.prope…

电脑中所有exe文件无法运行解决方案

电脑中所有exe文件无法运行。通过系统恢复无法解决毛病&#xff0c;后来才想起肯定是exe文件关联被改动&#xff0c;只有通过修改注册表才能改回来。要修改注册表就要运行regedit.exe文件&#xff0c;这也是一个exe文件&#xff0c;也无法运行。后来查资料找到了解决方法。现在…

[转]后期-快速消除痘痘,完美修复MM肌肤

是面对美景&#xff0c;即使皮肤不好也得露个脸啊!那MM的面子问题怎么办呢?简单&#xff0c;咱就通过Photoshop后期处理来<?xml:namespace prefix o />给MM打造完美水嫩的肌肤!远景照片 简单还原MM容颜日常拍摄的照片&#xff0c;很多时候是远景的拍摄&#xff0c;人物…

[Android] Android MVP 架构下 最简单的 代码实现

Android MVP 架构下 最简单的 代码实现 首先看图&#xff1a; 上图是MVP&#xff0c;下图是MVC MVP和MVC的区别&#xff0c;在于以前的View层不仅要和model层交互&#xff0c;还要和controller层交互。而在mvp中&#xff0c;view层只和presenter层交互&#xff0c;而model层也…

java项目上有个红色感叹号(在project Explorer视图下)

启动项目时一直报错&#xff0c;检查也没问题&#xff0c;最后看到项目上有个红色感叹号&#xff0c;发现是jar包路径不对&#xff0c;把错误路径的jar包移除&#xff0c;然后再重新添加即可。转载于:https://www.cnblogs.com/sanhao/p/8059257.html

配置jdk环境 windows

java 配置环境 JAVA_HOME D:\Program Files\Java\jdk1.8.0_181 path %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; CLASSPATH .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

再谈Linux修改应用程序获得root权限

我之前写过一篇关于怎样就可以使你的应用程序获得root权限运行&#xff0c;那个对于一些测试程序或小工程的程序时比较实用&#xff0c;但如果你的工程文件多达几十个甚至上百&#xff0c;那么这种方法就不太适用了。在Ubuntu下面&#xff0c;我选择适用了codelite&#xff0c;…

JBPM4常见错误汇总

1.在tomcat6.0下布署错误 基于JBPM4的web项目jsp页面发布出错现象&#xff1a; javax.servlet.ServletException: java.lang.LinkageError: loader constraint violation: when resolving interfacemethod "javax.servlet.jsp.JspApplicationContext.getExpressionFacto…

Day 3 上午

内容提要&#xff1a; 动态规划 数位DP 树形DP 区间DP 动态规划 斐波那契数列f(0)0,f(1)1,......,f(n)f(n-1)f(n-2)0,1,1,2,3,5,8,13......他和动态规划有什么关系&#xff1f;首先&#xff0c;他有一个边界条件&#xff0c;就是f(0)0,f(1)1&#xff0c;相当于它不是从正无穷到…

SpringBoot------添加保存时自动编译插件

1.右键Java项目2.选择“Spring Tools”3.选择“Add Boot DevTools”4.每次使用Ctrl S键时就会自动编译了 实际上是在Pom.xml文件中添加了如下Java包 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring…

设置PLSQ 连接oracle数据库

1 、instantclient_12_1 的设置 配置文件内容 tnsnames.ora # tnsnames.ora Network Configuration File: C:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora # Generated by Oracle configuration tools.ORCL (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST 221.…

《星辰变OL》估计很多人看过这书

瓜瓜小说论坛《星辰变OL》估计很多人看过这书&#xff0c;也估计很多人都不知道这游戏就快开始运行了。 本人2009-2010最期待的游戏了。 咩羊大大你千万注意下&#xff0c;这游戏一有封测&#xff0c;内测一类。一定要给我留个号。 下面看视频。 一定要给我留号啊~咩羊&#xf…

Ubuntu16.04 搭建nexus 私服 学习步骤以及安装maven和git

1、下载安装maven wget https://www-us.apache.org/dist/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz 1、创建maven仓库位置 2、修改setting.xml文件 添加东西如下 export M2_HOME/software/maven/apache-maven-3.6.0 export CLASSPATH$CLASSPATH:$M2_H…

Asp.net(C#)给图片加上水印效果(转自园上的Seven Eleven)

Asp.net(C#)给图片加上水印效果 private void Btn_Upload_Click(object sender, System.EventArgs e) { if(UploadFile.PostedFile.FileName.Trim()!"") { //上传文件 string extension Path.GetExten…

pip install失败报错解决方案

cmd pip install 某些包时报错 pip install Consider using the --user option or check the permissions. 只需要pip install --user package就可以解决转载于:https://www.cnblogs.com/webRobot/p/10799270.html

12.19冲刺总结

第二天冲刺&#xff1a; 昨天完成的任务&#xff1a; 主界面布局 遇到的问题&#xff1a; 登录界面弹窗 今日任务&#xff1a; 主界面编写转载于:https://www.cnblogs.com/mhj666/p/8349629.html

Win2003 防木马、权限设置、IIS服务器安全配置整理

原贴http://hi.baidu.com/zzxap/blog/item/18180000ff921516738b6564.html2009-02-10 10:45一、系统的安装   &#xff11;、按照Windows2003安装光盘的提示安装&#xff0c;默认情况下2003没有把IIS6.0安装在系统里面。&#xff12;、IIS6.0的安装开始菜单—>控制面板—&…

Js面试题(一)--js实现数组去重怎么实现?

方法1、创建一个新的临时数组来保存数组中已有的元素方法2、使用哈希表存储已有元素方法3、使用indexof判断数组元素第一次出现的位置是否为当前位置方法4、先排序再去重第一种方法和第三种方法都使用了indexof()&#xff0c;这个函数的执行机制也会遍历数组第二种使用了哈希表…

使用Maven 打包项目 生成XXX.tar.gz 文件

1、在项目中创建assembly文件夹 创建如图的一个assembly.xml文件 内容如下 <assemblyxmlns"http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"h…

整理了一下SQL Server里面可能经常会用到的日期格式转换方法

select getdate() 2004-09-12 11:06:08.177 举例如下: select CONVERT(varchar, getdate(), 120 ) 2004-09-12 11:06:08 select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),-,), ,),:,) 20040912110608 select CONVERT(varchar(12) , getdate(), 111 ) 2004/…

java使用Cookie判断用户登录情况

1.判断是否登录 public boolean isLogin() {Set<Cookie> cookies this.browser.getCookies();String JSESSIONIDID "JSESSIONID";String sessionIdID "sessionId";String loginID "login";String JSESSIONIDIDValue "";Str…

桌面菜单背景修改

只能修改资源管理器里的右键菜单&#xff0c;即桌面、文件夹和各种文件上的右键菜单&#xff0c;其它如标题栏和任务栏的是没效果的&#xff0c;可惜了。修改其实只是注册了一个dll文件&#xff0c;然后修改这个dll里面的背景图片就可以了。1.首先下载ContextBG.dll。2.然后下载…

全浏览器兼容的DIV拖动效果

测试过下列浏览器 IE6、IE7、IE8、Chrome 5、FF 3.6、Opera 10、Safari 5 拖动效果的脚本网上都有&#xff0c;但网上找到的脚本有个问题 这是在网上随便找的代码(原出处不知道&#xff0c;很多类似代码的文章都没写出处&#xff0c;实在不知道到底出至哪里...) 代码 1 <!DO…

SpringSecurity使用 配置文件 和wen.xml 文件配置

目录 1、web.xml 文件配置 2、spring-security 普通 为使用自己创建的认证类 1、web.xml 文件配置 !-- 配置SpringSecurity的拦截器 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/spring-se…

Echo团队Alpha冲刺随笔 - 第九天

项目冲刺情况 进展 已经进入测试阶段&#xff0c;正在消除系统的bug问题 通过测试&#xff0c;找出了系统中存在的较多bug......体会 测试太重要了&#xff0c;很多原本以为没什么bug&#xff0c;一测就能找到好几个&#xff0c;而且改个bug真的可能新加n多个今日会议内容 黄少…

Windows下配置scrapy需要MVC的14.0版本(转载)

转载于--http://blog.csdn.net/MrWilliamVs/article/details/77130965 杨煜冬煜杨的博客&#xff0c;他的博客比较杂&#xff0c;Java、Python都有--http://blog.csdn.net/yyd19921214 环境依赖于 microsoft visual C 14.0, 仔细看报错后面还写着该C库的下载地址&#xff1b;(但…

关于SQLServer2005的学习笔记——约束、Check、触发器的执行顺序

通常我们认为一条 Insert 就是一个事务&#xff0c;但这个事务是如何执行的呢&#xff1f;如果保障事务执行时该事务的完整性和一致性呢&#xff1f;抛开存储机制、索引、锁等环节&#xff0c;让我们看看约束、 Check 和触发器在这个过程中的先后顺序&#xff0c;或许能加深些对…

Kubernetes集群部署(yum部署)

环境准备 Kubernetes-Master:192.168.37.134 #yum install kubernetes-master etcd flannel -y Kubernetes-node1:192.168.37.135 #yum install kubernetes-node etcd docker flannel *rhsm* -y Kubernetes-node2:192.168.37.146 #yum install kubernetes-node etcd…