蛋糕

CCF 2017-03-1 分蛋糕

半世苍凉 提交于 2019-11-27 02:15:21
CCF 2017-03-1 分蛋糕 题目 问题描述   小明今天生日,他有 n 块蛋糕要分给朋友们吃,这 n 块蛋糕(编号为1到 n )的重量分别为 a 1, a 2, …, an 。小明想分给每个朋友至少重量为 k 的蛋糕。小明的朋友们已经排好队准备领蛋糕,对于每个朋友,小明总是先将自己手中编号最小的蛋糕分给他,当这个朋友所分得蛋糕的重量不到 k 时,再继续将剩下的蛋糕中编号最小的给他,直到小明的蛋糕分完或者这个朋友分到的蛋糕的总重量大于等于 k 。   请问当小明的蛋糕分完时,总共有多少个朋友分到了蛋糕。 输入格式   输入的第一行包含了两个整数 n , k ,意义如上所述。   第二行包含 n 个正整数,依次表示 a 1, a 2, …, an 。 输出格式   输出一个整数,表示有多少个朋友分到了蛋糕。 样例输入 6 9 2 6 5 6 3 5 样例输出 3 样例说明   第一个朋友分到了前3块蛋糕,第二个朋友分到了第4、5块蛋糕,第三个朋友分到了最后一块蛋糕。 评测用例规模与约定   对于所有评测用例,1 ≤ n ≤ 1000,1 ≤ k ≤ 10000,1 ≤ ai ≤ 1000。 思路 不是难题,甚至可以不用数组,直接在输入的时候进行一步判断,sum代表当个人拿到的蛋糕,num代表人数,最后需要判断一下sum是否为0. 代码 #include<iostream>

理解线程同步

家住魔仙堡 提交于 2019-11-27 01:27:42
1、首先确定一点:同步安全,异步不安全。 2、结合实例,针对下面的使用场景:妈妈做蛋糕给儿子吃。 3、需求分析: (a)蛋糕的数量是共享数据,应该放入临界区。 (b)妈妈做蛋糕的时候,儿子不能吃;儿子吃蛋糕的时候,妈妈不能做。 (c)假设儿子很饿,妈妈做一个,儿子吃一个,妈妈做好一个后,等待儿子去吃,吃完后再去做,但是,如果儿子贪玩,很长时间都没吃完一个蛋糕,妈妈就不管了。继续做蛋糕。 (d)有一点是肯定的:必须要蛋糕,儿子才能吃,也就是说,如果蛋糕没了,儿子必须等待妈妈做好蛋糕,并且必须一直等下去,知道妈妈做出蛋糕。 (e)妈妈做好蛋糕后,通知儿子吃蛋糕;儿子吃完蛋糕后,通知妈妈继续做蛋糕。 注意:为了避免当前线程一直等下去,也就是出现死锁,有两个办法: 1、当前线程调用Monitor.Wait(sync,5000); 加上时间限制,等待超时,就不等了,进入就绪状态,准备执行。 2、互斥的线程调用Monitor.Pulse(sync); 通知当前线程。 转载于:https://www.cnblogs.com/nzbbody/archive/2012/03/05/2380809.html 来源: https://blog.csdn.net/weixin_30199169/article/details/99234384