1. 程式人生 > 實用技巧 >2020牛客多校第七場 B.Mask Allocation 構造

2020牛客多校第七場 B.Mask Allocation 構造

https://ac.nowcoder.com/acm/contest/5672/B

題意:

有兩種醫院,重症醫院和輕症醫院;

現在有n家重症醫院和m家輕症醫院,n*m個口罩;

用最少的盒子裝(盒子不能拆開)這n*m個口罩,若分配給n家重症醫院,每家醫院m個口罩,若分配給m家輕症醫院,每家醫院n個口罩;

求最少的盒子數,並按字典序從大到小列印每個盒子裝的口罩數量。

程式碼:

#include <bits/stdc++.h>
using namespace std;
const long long mod =1e9+7;
typedef long long ll;
typedef __int128 LL;
const int inf =0x3f3f3f3f; const long long INF =0x3f3f3f3f3f3f3f3f; const int MAXN =2e5+5; int ans[MAXN]; int main() { int t; scanf("%d",&t); while(t--) { int n,m; scanf("%d%d",&n,&m); int cnt=0; while(n&&m) { if(n<m)swap(n,m);
for(int i=1;i<=m;i++)ans[++cnt]=m; n-=m; } printf("%d\n",cnt); for(int i=1;i<=cnt;i++)printf("%d%c",ans[i],i==cnt?'\n':' '); } return 0; }
View Code