AcWing 393 僱傭收銀員(差分約束)

2021-10-08 00:28:05 字數 1727 閱讀 6887

一家超市要每天24小時營業,為了滿足營業需求,需要僱傭一大批收銀員。

已知不同時間段需要的收銀員數量不同,為了能夠僱傭盡可能少的人員,從而減少成本,這家超市的經理請你來幫忙出謀劃策。

經理為你提供了乙個各個時間段收銀員最小需求數量的清單r(0),r(1),r(2),…,r(23)。

r(0)表示午夜00:00到凌晨01:00的最小需求數量,r(1)表示凌晨01:00到凌晨02:00的最小需求數量,以此類推。

一共有n個合格的申請人申請崗位,第 i 個申請人可以從ti時刻開始連續工作8小時。

收銀員之間不存在替換,一定會完整地工作8小時,收銀台的數量一定足夠。

現在給定你收銀員的需求清單,請你計算最少需要僱傭多少名收銀員。

第一行包含乙個不超過20的整數,表示測試資料的組數。

對於每組測試資料,第一行包含24個整數,分別表示r(0),r(1),r(2),…,r(23)。

第二行包含整數n。

接下來n行,每行包含乙個整數ti。

每組資料輸出乙個結果,每個結果佔一行。

如果沒有滿足需求的安排,輸出「no solution」。

直接假設s24為答案,能找到非環就證明答案正確。

#include

using

namespace std;

typedef

long

long ll;

typedef pair<

int,

int> pii;

typedef

unsigned

long

long ull;

const

int n=

30,m=

110,inf=

0x3f3f3f3f

;int n;

int h[n]

,e[m]

,w[m]

,ne[m]

,idx;

int r[n]

,num[n]

;int dist[n]

;int q[n]

,cnt[n]

;bool st[n]

;void

add(

int a,

int b,

int c)

void

build

(int c)

}bool

spfa

(int c)}}

}return

true;}

intmain()

bool success =

false

;for

(int i=

0; i <=

1000

; i++)}

if(!success) cout<<

"no solution"

<

}return0;

}

LM393 尋跡原理

簡單的方式 直接說它是怎麼用的 複雜的方式 講解硬體電路原理 這裡我們為了滿足大部分人快速學習微控制器 或其他微處理器 的願望,先來說說簡單的方法 如圖,這是尋跡探頭,乙個發射探頭,乙個接收探頭。工作原理是 當發射探頭發出的光被物體反射,被接收探頭接收時,經過一系列過程 此處省略中間複雜的過程 最終...

SOJ 393 廣告印刷

題目描述 最近,afy 決定給 toj 印刷廣告,廣告牌是刷在城市的建築物上的,城市裡有緊靠著的 n nn 個建築。afy 決定在上面找一塊盡可能大的矩形放置廣告牌。我們假設每個建築物都有乙個高度,從左到右給出每個建築物的高度 h 1h 1 h1 h 2h 2 h2 h nh n hn 且 0 00...

leetcode每日一題 393 除法求值

題目 給你乙個變數對陣列 equations 和乙個實數值陣列 values 作為已知條件,其中 equations i ai,bi 和 values i 共同表示等式 ai bi values i 每個 ai 或 bi 是乙個表示單個變數的字串。另有一些以陣列 queries 表示的問題,其中 q...