P1905 堆放货物

其实这是一道大大大水题

看题加思考加代码一共不到20分钟

题目不可能出现不合法的情况

直接模拟就好

//P1905 堆放货物
#include<bits/stdc++.h>
using namespace std;
int n,p;
int w[4];
int pp[2550][1050];//第一位是船号 第二维是物品数
int cnt[2550];//记录一艘船上放了几个物品
int main(){
    cin>>n>>p;
    for(int i=1;i<=n;i++){
        int s;
        scanf("%d",&s);
        w[s]++; //记录1,2,3 出现次数
    }
    int len=1;//记录分到了第几个船
    for(int i=1;i<=3;i++){
        for(int j=1;j<=w[i];j++){
            len=len%p;
            pp[len][++cnt[len]]=i;
            len++;
        }
    }
    for(int i=0;i<p;i++){
        for(int j=cnt[i];j>=1;j--){//从下到上
            cout<<pp[i][j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}
原文地址:https://www.cnblogs.com/duojiaming/p/11723918.html