厂房出租做推广什么网站好,网站做自适应的好处,wordpress如何进后台,昆山教育平台网站建设彩虹瓶的制作过程#xff08;并不#xff09;是这样的#xff1a;先把一大批空瓶铺放在装填场地上#xff0c;然后按照一定的顺序将每种颜色的小球均匀撒到这批瓶子里。
假设彩虹瓶里要按顺序装 N 种颜色的小球#xff08;不妨将顺序就编号为 1 到 N#xff09;。现在工… 彩虹瓶的制作过程并不是这样的先把一大批空瓶铺放在装填场地上然后按照一定的顺序将每种颜色的小球均匀撒到这批瓶子里。
假设彩虹瓶里要按顺序装 N 种颜色的小球不妨将顺序就编号为 1 到 N。现在工厂里有每种颜色的小球各一箱工人需要一箱一箱地将小球从工厂里搬到装填场地。如果搬来的这箱小球正好是可以装填的颜色就直接拆箱装填如果不是就把箱子先码放在一个临时货架上码放的方法就是一箱一箱堆上去。当一种颜色装填完以后先看看货架顶端的一箱是不是下一个要装填的颜色如果是就取下来装填否则去工厂里再搬一箱过来。
如果工厂里发货的顺序比较好工人就可以顺利地完成装填。例如要按顺序装填 7 种颜色工厂按照 7、6、1、3、2、5、4 这个顺序发货则工人先拿到 7、6 两种不能装填的颜色将其按照 7 在下、6 在上的顺序堆在货架上拿到 1 时可以直接装填拿到 3 时又得临时码放在 6 号颜色箱上拿到 2 时可以直接装填随后从货架顶取下 3 进行装填然后拿到 5临时码放到 6 上面最后取了 4 号颜色直接装填剩下的工作就是顺序从货架上取下 5、6、7 依次装填。
但如果工厂按照 3、1、5、4、2、6、7 这个顺序发货工人就必须要愤怒地折腾货架了因为装填完 2 号颜色以后不把货架上的多个箱子搬下来就拿不到 3 号箱就不可能顺利完成任务。
另外货架的容量有限如果要堆积的货物超过容量工人也没办法顺利完成任务。例如工厂按照 7、6、5、4、3、2、1 这个顺序发货如果货架够高能码放 6 只箱子那还是可以顺利完工的但如果货架只能码放 5 只箱子工人就又要愤怒了……
本题就请你判断一下工厂的发货顺序能否让工人顺利完成任务。
输入格式
输入首先在第一行给出 3 个正整数分别是彩虹瓶的颜色数量 N1N≤103、临时货架的容量 MN、以及需要判断的发货顺序的数量 K。
随后 K 行每行给出 N 个数字是 1 到N 的一个排列对应工厂的发货顺序。
一行中的数字都以空格分隔。
输出格式
对每个发货顺序如果工人可以愉快完工就在一行中输出 YES否则输出 NO。
输入样例
7 5 3
7 6 1 3 2 5 4
3 1 5 4 2 6 7
7 6 5 4 3 2 1输出样例
YES
NO
NO
做法
其实货架就是一个栈发货顺序可以看成一个队列。
1.初始化队列
2.判断是否可以完工
代码
#include cstdio
#include iostream
#include algorithm
#include cstringusing namespace std;const int N 1010;int stock[N],color[N];
int n,m;bool check()
{int c 1,top -1;for(int i 0;i n;i){if(color[i] c)//可以装填{c;while(top 0 stock[top] c) top--,c;//去货架上看看}else{if(top m - 1) stock[top] color[i];else return false;//放不下}}if(c n 1) return true;//完成任务else return false;
}
int main()
{int k 0;scanf(%d%d%d,n,m,k);for(int i 0;i k;i){for(int j 0;j n;j) scanf(%d,color[j]);//存储发货顺序if(check()) puts(YES);else puts(NO);}return 0;
}
结果