乙個桌球俱樂部共有 k 張桌球臺,編號為 1∼k
對於任意一對球員,當他們到達時如果有多個球檯可用,那麼他們就會被安排到編號較小的那個球台上打球。
如果所有球檯都被占用了,他們就只能排隊等待了。
假設每對球員最多隻允許打兩小時球。
你需要計算每個排隊等候的人的等待時間以及每個球檯當天有多少對球員在上面打球。
另外,讓這個事情變得複雜的是,俱樂部為 vip 球員保留了一些球檯。
當乙個 vip 球檯空出時,等待隊伍中的第一對 vip 球員將優先使用這個球檯。
如果此時等待隊伍中沒有 vip,則排在等待隊伍的第一對球員可以使用這個球檯。
另一方面,當輪到一對 vip 球員打球時,如果沒有 vip 球檯可用,那麼他們將被視作普通球員處理。
補充:1、當等待隊伍中有 vip 球員並且有空閒 vip 球檯時,必須優先分配 vip 球員,並且必須分配他們 vip 球檯(優先分配編號較小的),直至 vip 使用者或 vip 球檯分配完為止。
2、期望打球時間超過兩小時的,只能允許打兩小時。
3、當多對球員的開始打球時間相同時,先輸出到達時間早的球員的資訊。
4、當等待球員中沒有 vip 時,vip 球檯視作普通球檯處理,當可用球檯中沒有 vip 球檯時,vip 球員視作普通球員處理。
第一行包含整數 n,表示共有 n
對球員。
第一行包含整數 n,表示共有 n
對球員。
接下來 n
行,每行包含兩個時間以及乙個 vip 標識,hh:mm:ss----到達時間,p----打球時間(單位:分鐘),tag----如果是 1,說明這是一對 vip,如果是 0
,說明不是 vip。
保證到達時間在 08:00:00 至 21:00:00 之間,這是俱樂部的營業時間。
保證每對球員的到達時間都不相同。
再一行包含兩個整數 k
和 m,表示球檯數量以及 vip 球檯數量。
最後一行包含 m
個整數,表示 vip 球檯的編號。
首先輸出每對球員的到達時間,開始打球時間,等待時間。
每對球員的資訊佔一行,按開始打球時間從早到晚的順序依次輸出。
等待時間必須四捨五入為整數分鐘。
如果一對球員在 21:00:00 之前(不包括 21:00:00)不能得到一張球檯,那麼無需輸出他們的資訊。
再輸出一行,k
個整數,表示每個球檯服務的球員對數。
#include
using
namespace std;
typedef
long
long ll;
typedef pair<
int,
int> pii;
const
int mod=
100000000
;const
int n=
2e6+10;
const
int m=
1e3+10;
const
int inf=
0x7f7f7f7f
;const
int maxx=
2e5+7;
int n,m,k;
struct person
bool
operator
>
(const person &t)
const
//優先佇列};
struct table};
bool is_viptable[
20000];
int table_cnt[
20000];
vector persons;
void
assign
(priority_queue
,greater
>
& ps,
priority_queue
,greater
>
&ts ));
}string get_time
(int sec)
intmain()
);vip_person.
push()
;for
(int i=
0;i;else normal_person.
push()
;}priority_queue
,greater
> normal_table;
priority_queue
,greater
> vip_table;
normal_table.
push()
; vip_table.
push()
; cin>>k>>m;
for(
int i=
0;i)for
(int i=
1;i<=k;i++)if
(is_viptable[i]
) vip_table.
push()
;else normal_table.
push()
;while
(normal_person.
size()
>
1||vip_person.
size()
>1)
while
(vip_table.
top(
).end_time
auto nt=normal_table.
top();
auto vt=vip_table.
top();
int end_time=
min(nt.end_time,vt.end_time);if
(end_time>=21*
3600
)break;if
(vp.arrive_time<=end_time&&vt.end_time==end_time)
assign
(vip_person,vip_table)
;else
if(np.arrive_time
else
}sort
(persons.
begin()
,persons.
end())
;for
(auto person:persons)
cout<
;for
(int i=
2;i<=k;i++
) cout<<
' '<
; cout<
return0;
}
Python檢測重複字 部分中華字經重複字檢測
中文去標點符號,中文繁體字轉化簡體字,列表檢測並輸出重複項,list當多個相同值時索引 關於去標點,使用包 zhon,直接pip即可 安裝及使用 關於中文繁簡轉換,安裝opencc python 安裝及使用 coding utf 8 author zhr date 2019 10 25 20 26 ...
監聽套接字 連線套接字
摘要 對於伺服器程式設計中最重要的一步等待並接受客戶的連線,那麼這一步在程式設計中如何完成,accept函式就是完成這一步的。它從核心中取出已經建立的客戶連線,然後把這個已經建立的連線返回給使用者程式,此時使用者程式就可以與自己的客戶進行點到點的通訊了。accept函式等待並接受客戶請求 inclu...
java FileInputStream 位元組流
首先要明白,檔案儲存在硬碟上實質上儲存的都是數字,因此通過fileinputstream中的read 方法讀取的是數字。fileinputstream fis new fileinputstream new file test.txt int x fis.read system.out.printl...