[ARC172A] Chocolate

原题链接

题解

考虑以下决策,绝对最优:
1.按巧克力块的大小排序,先把大的块分出来。
2.一开始完整的巧克力是块矩形,取出一个正方形后,可以分为下方和右侧两个矩形,然后把这两个矩形放入优先队列。

3.分割下一个矩形时,从队列中取出 最短边最长的那个矩形,在这个矩形上做步骤2一样的分割

为什么这样的策略正确啊?

code

#define ll long long
#include<bits/stdc++.h>
using namespace std;
struct node
{
    ll big,small;
    bool operator<(const node &b) const{return b.small>small;}
};

ll a[1005]={0};

int main()
{
    ios::sync_with_stdio(false);
    ll h,w,n;
    cin>>h>>w>>n;

    for(ll i=1;i<=n;i++)
    {
        cin>>a[i];
        a[i]=(1LL<<a[i]);
    }
    sort(a+1,a+n+1,greater<>());
    priority_queue<node> q;
    q.push({max(h,w),min(h,w)});
    for(ll i=1;i<=n;i++)
    {
        ll len=a[i];
        if(q.top().small<len)
        {
            puts("No");
            return 0;
        }

        ll big=q.top().big,small=q.top().small;
        q.pop();
        q.push({max(big-len,small),min(big-len,small)});
        q.push({max(len,small-len),min(len,small-len)});
    }
    puts("Yes");
    return 0;
}

posted @   纯粹的  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示