CF1654C Alice and Cakes 题解
大型鞭尸现场
Alice 有一块蛋糕,可以切 次,每次可以将大小为 的蛋糕切成大小为 和 大小的两部分。
现在给出切了 次之后的 块蛋糕的大小 ,判断是否可以做到把蛋糕切成最终这 块。多组数据,共 组。
这题赛事我想了一个多小时才 A 掉,丢人现眼了。
首先考虑合并,发现搜索、贪心不可做,考虑 DP,然后没想出来怎么 DP。
然后发现这是 sb 题。
因为分割的结果是告诉我们的,所以可以直接分割,如果分割到刚好有需要这个大小的块,那么就不分了,否则继续分,如果分到 并且不需要 的大小,就证明不行。
复杂度分析:如果能分到,那么复杂度就是 ,如果不能就会分到 ,不难发现需要分 次。
所以复杂度为
代码:
int n; ll a[maxn],sum; map<long long,int> HASH,E; int check(ll s){ if(HASH[s]){ HASH[s]--; return 1; } if(s==1){ return 0; } return check(s/2)&&check(s-s/2); } void work(){ n=read(); sum=0; HASH=E; int i; for(i=1;i<=n;i++) a[i]=read(),sum+=a[i],HASH[a[i]]++; if(check(sum)) puts("YES"); else puts("NO"); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2021-04-25 洛谷 P5431 【模板】乘法逆元2 题解