拓冰建站拓冰建站
首页 / 资讯中心 / 正文

菲娜带你解决“生产计划”

菲娜前两个月快累死了.没时间更新.久等了.现在课外班结束.边复习边来写文章更新啦先上题.......题目描述F 工厂接到了一批新的玩具生产订单第 i 个订单由 ai​,bi​ 描述意为需要在第 ai​ 天之前提供 bi​ 套玩具。玩具厂现有的生产能力每天可以生产 k 套玩具请你帮助已经忙到焦头烂额的厂长判断工厂能否顺利完成每一个订单如果。输入格式输入第一行一个正整数 T 表示多组数据。接下来 T 组数据输入格式如下每组数据第一行两个正整数 n,k 表示一共接到了 n 个订单以及工厂每天最多能够生产 k 套玩具。接下来 n 行每行两个正整数 ai​,bi​表示第 i 个订单的截止时间与玩具个数要求。输出格式输出共 T 行每行一个 YES 或 NO 表示一组数据的答案。输入输出样例输入 #1复制2 4 5 6 12 1 3 6 15 8 1 3 100 3 200 4 300 6 100输出 #1复制YES NO俗话说“做对题先读对样例”✅️菲娜带你解读样例解读每日最多生产5个分别有两次四个任务交时 交数1.6 121 36 158 1可知第一天作5个交3个剩2个2345各五个总数4*5222第6天 先生产5个 总数22527因为还要上交121527个所以总数为0接着第7天第8天总数2*510第8天上交1个总数10-19在这个过程中没有不足的情况所以输出yes2.3 1003 2004 3006 100第一二三天总数3*515但第三天要100个总数100所以输出no懂了么这样读完样例大家想到的可能是统计余数加上当天生产减去当天交付等等.......那么现在先给大家一点时间抛开这些思路再想一想有没有更简便的方法呢菲娜相信聪明的小菲们想到了方法(没想到也没关系哦)大家可以想一下1.6 121 36 158 1可知第一天作5个交3个为什么可以因为35第6天 先生产5个 总数6*530因为还要上交121527个再加上第一天的3个为什么可以因为3030接着第8天总数8*10第8天上交1个为什么可以因为3180在这个过程中没有不足的情况所以输出yes到这里大家应该已经明白菲娜的意思了吧2.3 1003 2004 3006 100第一二三天总数3*515但第三天要100个10015所以菲娜新的思路就是这样菲娜想使用两个一个main,一个fun;1.先接守t//在这里的定义就不写了大家都定义成LL就行了 int main() { cint; while(t--) { fun(); } }2.再接收n,k,和交时与交数再将交数存在下标是交时的桶数组里//在代码里名称是中文拼音;void fun() { int i,j; cinnmeiriliang; for(i1;in;i) { cinjiaoshijiaoshu; rijiaofuliang[jiaoshi]jiaoshu; } }3.就是作比较忘了的菲菲们可以看看上面哦zongshu0; for(i1;i100;i) { zongshurijiaofuliang[i]; if(zongshumeiriliang*i) { coutNO\n; return; } } coutYES\n;再解释一下我们把要交的数存在桶数组里每循环一圈总数加的就是当天要交的数这里的0菲菲们不需要太纠结就是当天没有需要加的再比较总数与每日最多量*当天比如第8天总共生产每日最多量*8到这里有一个地方大家是否注意到呢4.细节*1fun在每次被调用的时候日交付量[ ]数组没有清零哦#includebits/stdc.h using namespace std; long long int zongshu,n,t,meiriliang,rijiaofuliang[205],jiaoshi,jiaoshu; void fun() { int i,j; memset(rijiaofuliang,0,sizeof(rijiaofuliang)); cinnmeiriliang; for(i1;in;i) { cinjiaoshijiaoshu; rijiaofuliang[jiaoshi]jiaoshu; } zongshu0; for(i1;i100;i) { zongshurijiaofuliang[i]; if(zongshumeiriliang*i) { coutNO\n; return; } } coutYES\n; } int main() { cint; while(t--) { fun(); } }叮咚完整代码菲菲们记得查收哦记得读懂再去写如有很好的方法记得告诉菲娜哦菲菲们会了么下期再见哦(°ゝ°)点赞关注
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门