2020牛客多校第七場 B.Mask Allocation 構造
阿新 • • 發佈:2020-08-01
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;View Codeconst 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; }