「網絡流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.pswp.cn/news/388931.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/388931.shtml
英文地址,請注明出處:http://en.pswp.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…