我最喜欢吃饭了

我最喜欢吃饭了

题目链接

有n个人,m个窗口,给出n个人打完饭出门的顺序,求顺序是否合理。
思路:有m条队伍,我们可以用m个数组来模拟这个队伍,如果给出的序列能够按顺序放入这m条队伍中,并且满足每条队伍的人的编号都是从小到大的即合理,否则不合理。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N = 5e3 + 9;
int a[N];
int stk[N][N], top[N];
//stk[i]表示第i条队伍,top[i]来记录第i条队伍的人数
void solve()
{
    int n, m;
    cin >> n >> m;
    for (int i = 1; i <= n; i++) cin >> a[i];
    for (int i = 1; i <= n; i++)
    {
        int j;
        //将a[i]放入队伍中
        for (j = 1; j <= m; j++)
        {
            //如果第i个人的编号 > 队伍j最后一个人的编号,则第i个人入队
            if (a[i] > stk[j][top[j]])
            {
                stk[j][++top[j]] = a[i];
                break;
            }
        }
        //如果a[i] < 所有队伍的队尾编号,则他无法入队,所以不合理
        if (j == m + 1)
        {
            cout << "Karashi lovelove\n";
            return;
        }
    }
    //所有的人都入队了,且满足编号从小到大,合理
    cout << "Karashi cblcd\n";
    return;
}
int main()
{
    int _ = 1;
    //cin>>_;
    while (_--) solve();
    return 0;
}

posted @ 2024-12-24 15:28  Jin01  阅读(13)  评论(0)    收藏  举报