Calling时间限制1 秒空间限制256M网页链接牛客tracker牛客tracker 每日一题完成每日打卡即可获得牛币。获得相应数量的牛币能在【牛币兑换中心】换取相应奖品助力每日有题做丰盈牛币日益多题目描述空。你有6 66种正方形纸片其中第i ( 1 ≤ i ≤ 6 ) i\ (1 \le i \le 6)i(1≤i≤6)种边长为i ii每一种都有k i k_iki个你需要把它们放在至多s ss个面积为36 ( 6 × 6 ) 36\ ( 6 \times 6)36(6×6)的正方形框中显然我们可以一个框一个框的放要求如下每个框不必放满。比如你可以把至多36 3636个边长为1 11的正方形纸片放在一个框中也可以把30 3030个边长为1 11的正方形放在一个框中也可以把1 11个边长为5 55的正方形纸片放在一个框中等。每个框放的正方形边长不必相同。比如一个框中可以同时出现边长为3 33和边长为1 11的正方形。请问能否放得下若可以输出Yes否则输出No。输入描述第一行一个正整数T ( 1 ≤ T ≤ 10 5 ) T\ (1 \le T \le 10^5)T(1≤T≤105)表示T TT组数据。对于每组数据第一行一个非负整数s ( 0 ≤ s ≤ 10 9 ) s\ (0 \le s \le 10^9)s(0≤s≤109)。第二行6 66个非负整数为k i ( 0 ≤ k i ≤ 10 4 ) k_i\ (0 \le k_i \le 10^4)ki(0≤ki≤104)。输出描述T TT行每行一个字符串Yes或No表示对应数据的答案。请注意区分大小写。示例 1输入4 15 3 1 4 1 5 9 20 0 0 0 1 4 1 10 1 1 4 5 1 4 1024 123 456 1 3 4 10输出No Yes No Yes数据范围与提示1 ≤ T ≤ 10 5 1 \le T \le 10^51≤T≤1050 ≤ s ≤ 10 9 0 \le s \le 10^90≤s≤1090 ≤ k i ≤ 10 4 0 \le k_i \le 10^40≤ki≤104本题是二维装箱正方形装6 × 6 6 \times 66×6容器判定问题核心思路面积必要条件所有纸片总面积∑ i 1 6 i 2 k i ≤ 36 s \sum_{i1}^{6} i^2 k_i \le 36s∑i16i2ki≤36s且框数需求不能少于大块纸片的数量边长≥ 4 \ge 4≥4的正方形每个框至多放1 11个。按边长从大到小贪心装箱边长6 66必须独占一个框边长5 55独占一个框剩余36 − 25 11 36 - 25 1136−2511的边角空间只能填1 × 1 1 \times 11×1最多11 1111个边长4 44独占一个框剩余20 2020空间可放5 55个2 × 2 2 \times 22×2或20 2020个1 × 1 1 \times 11×1也可混放边长3 33每框最多放4 44个2 × 2 2 \times 22×2排列剩余空间可放1 × 1 1 \times 11×1不足4 44个的框剩余空间还可放2 × 2 2 \times 22×2每框至多1 11个且需配合1 × 1 1 \times 11×1填缝边长2 22、1 11用于填充前几类框的剩余空间最后不足的部分再用新框。统计总共需要的框数与s ss比较同时校验面积条件即可。解题思路本题是二维装箱判定问题。给定 6 种正方形纸片边长分别为1 ∼ 6 1\sim61∼6数量分别为k 1 ∼ k 6 k_1\sim k_6k1∼k6需要放入至多s ss个6 × 6 6\times66×6的正方形框中。每个框不必放满可以混合放置不同边长的纸片。问能否全部放下。由于每个框面积固定为36 3636且纸片边长均为整数可以按照从大到小的贪心策略依次处理每种纸片并记录每个框剩余空间能容纳的较小纸片数量。若最终所有纸片都能被容纳则输出Yes否则输出No。1. 问题等价转化每个6 × 6 6\times66×6框容量为面积36 3636。纸片面积分别为1 , 4 , 9 , 16 , 25 , 36 1,4,9,16,25,361,4,9,16,25,36。大尺寸纸片会限制小尺寸纸片的放置方式。例如边长6 66的纸片必须独占一个框边长5 55的纸片占一个框后剩余11 1111面积只能放1 × 1 1\times11×1边长4 44的纸片占一个框后剩余20 2020面积可放5 55个2 × 2 2\times22×2或20 2020个1 × 1 1\times11×1等。由于所有容器尺寸相同且纸片边长均为整数可以采用贪心优先放置大纸片并尽可能用次大的纸片填充剩余空间最后用最小的纸片填充。若这种贪心都无法放下则一定无解。用变量one记录当前所有框剩余空间中可容纳的1 × 1 1\times11×1纸片总数two记录可容纳的2 × 2 2\times22×2纸片总数s表示剩余可用的空框数量。2. 算法实现按边长从大到小依次处理边长 6k 6 k_6k6每个必须独占一个框。若s k_6则无解否则s - k_6。边长 5k 5 k_5k5每个独占一个框剩余11 1111面积只能放1 × 1 1\times11×1。若s k_5则无解否则s - k_5one k_5 * 11。边长 4k 4 k_4k4每个独占一个框剩余20 2020面积最多放5 55个2 × 2 2\times22×2。若s k_4则无解否则s - k_4two k_4 * 5。边长 3k 3 k_3k3每个框最多放4 44个。若s * 4 k_3则无解。然后用s - k_3 / 4消耗掉放满4 44个的框。余数k_3 % 4需要额外一个框根据余数不同该框内剩余空间可放2 × 2 2\times22×2和1 × 1 1\times11×1余1 11放1 11个3 × 3 3\times33×3剩余27 2727面积 →two 5one 7。余2 22放2 22个3 × 3 3\times33×3剩余18 1818面积 →two 3one 6。余3 33放3 33个3 × 3 3\times33×3剩余9 99面积 →two 1one 5。若有余数则s--。处理剩余空框所有剩余空框s都可以用来放2 × 2 2\times22×2和1 × 1 1\times11×1。每个空框最多放9 99个2 × 2 2\times22×2因此two s * 9。边长 2k 2 k_2k2若two k_2则无解否则two - k_2剩余的2 × 2 2\times22×2位置可转换为1 × 1 1\times11×1每个位置提供4 44个1 × 1 1\times11×1即one two * 4。边长 1k 1 k_1k1若one k_1则无解否则输出Yes。3. 复杂度分析时间复杂度每组数据只需常数次判断和简单运算O ( 1 ) O(1)O(1)。总共有T ≤ 10 5 T \le 10^5T≤105组总时间复杂度O ( T ) O(T)O(T)非常高效。空间复杂度仅使用常数个变量O ( 1 ) O(1)O(1)。总结本题通过贪心策略从大到小处理纸片并精确计算每个框剩余空间能容纳的较小纸片数量。由于所有边长均为整数且容器固定贪心选择优先用次大纸片填充能够保证空间利用率最大从而正确判定可行性。算法简单且运行极快。代码简要说明使用数组k存储 6 种纸片的数量下标0 ∼ 5 0\sim50∼5分别对应边长1 ∼ 6 1\sim61∼6。变量one记录可容纳的1 × 1 1\times11×1总数two记录可容纳的2 × 2 2\times22×2总数s为剩余空框数。依次处理边长6 , 5 , 4 , 3 6,5,4,36,5,4,3并更新one、two和s。处理边长3 33时根据余数分情况增加剩余容量。最后用剩余空框补足2 × 2 2\times22×2容量再将多余的2 × 2 2\times22×2容量转换为1 × 1 1\times11×1检查是否满足1 × 1 1\times11×1的需求。若所有检查通过输出Yes否则No。代码内容#includebits/stdc.husingnamespacestd;#defineendl\ntypedeflonglongll;typedefunsignedlonglongull;typedefvectorvectorllvvt;typedefpairll,llpll;constll N1e310;constll INF1e18;constll M1e610;constll mod1e97;ll s;arrayll,6k;voidSolve(){cins;for(lli:k){cini;}ll one0;ll two0;if(sk[5]){coutNo\n;return;}s-k[5];if(sk[4]){coutNo\n;return;}s-k[4];onek[4]*11;if(sk[3]){coutNo\n;return;}s-k[3];twok[3]*5;if(s*4k[2]){coutNo\n;return;}s-k[2]/4;switch(k[2]%4){case1:s--;two5;one7;break;case2:s--;two3;one6;break;case3:s--;two;one5;break;}twos*9;if(twok[1]){coutNo\n;return;}two-k[1];onetwo*4;if(onek[0]){coutNo\n;return;}coutYes\n;}intmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);ll T;cinT;while(T--)Solve();return0;}
企业数字化 ERP 产品动态
相关推荐
一、常用的的Linux命令 1、安装软件的方法
1.1 RPM(红帽包管理器)
作用:帮助用户查询软件之间的依赖关系,但是问题仍需要运维人员手动解决
安装软件:rpm -ivh filename.rpm
升级软件:rpm -Uvh filename.rpm
卸载软件:r… · 2026/9/26 4:11:43
用Codex花4小时做的OA小程序,配TaoToken统一Key后我惊呆了 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 4:11:37
无真机无模拟器?鸿蒙应用开发入门实操路线全解 上周有个新人问我:“没有手机,模拟器镜像又一直下载失败,我这个鸿蒙应用还能开工吗?”我说能,而且大部分基础功能在家里的电脑上就能写完、能调试。后来我陪他把这套“无真机、无模拟器”的启动路线完整跑了一遍&#… · 2026/9/26 4:11:30
Web4.0架构落地:用AI动态重构网站,从页面交付到体验生成 我记忆很深刻的一次调优:同一个URL,两个用户在相差不到三分钟的时间里打开,看到的页面结构完全不同。不是A/B测试,也不是千人千面的推荐位,而是整页的模块组合、文案主次、甚至CTA按钮的位置,都由AI在请求到… · 2026/9/26 4:52:40
RabbitMQ Docker部署实战:常用命令、权限配置与故障排查 把RabbitMQ装进Docker,表面上像是两三条命令就能搞定的事,实际用下来却发现一堆隐性坑:镜像是带management还是不带、端口怎么映射、guest为什么登录不上、admin账号为什么建不了虚拟主机、容器删了数据还在不在。这篇文章就围绕“rabbitmq部… · 2026/9/26 4:52:40
Makefile核心语法与运行逻辑:从报错到可维护构建脚本 一次编译报错,让我决定把Makefile彻底学明白。那次是在Linux下编译一个带多层子目录的C工程,IDE集成环境里点构建,控制台就甩出一行:make[2]: *** [makefile:18: libs] Error 1没有文件名,没有具体报错内容,… · 2026/9/26 4:52:40
Linux共享内存完全指南:原理、API、实战与踩坑经验 写这篇博文之前,先说我自己的一个体会:Linux下做进程间通信,但凡你写过一段时间,最后一定会回到共享内存上来。管道、消息队列、信号量这些花架子玩了一圈,一旦遇到真正的高频数据交换场景,你会发现所有绕过… · 2026/9/26 4:52:40
倒计时.zip:毫秒级平滑倒计时内核与跨时区实战方案 简介:这是一份轻量级倒计时样式模板资源,面向前端初学者与Web开发人员,解决网页中常见活动、促销或事件页面所需的时间可视化展示问题。压缩包仅2个文件(1个HTML主页面、1个JavaScript逻辑脚本),总大小仅3K… · 2026/9/26 4:52:34
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46