首页 > 其他分享 >[ARC172A] Chocolate

[ARC172A] Chocolate

时间:2024-02-20 09:25:39浏览次数:25  
标签:insert 矩形 min read ARC172A st 正方形 Chocolate

AtCoder

洛谷

从大到小依次考虑这些正方形。如果一个正方形是合法的,那么原矩形就会被划分成两个新的矩形,如下:

蓝色是当前的正方形,橙色和红色就是两个新的矩形。我们把这些新的矩形丢到 multiset 里维护,按照 \(\min(\text{长,宽})\) 从小到大排序,也就是每拿到一个新的正方形就从小的矩形开始考虑,而正方形又是从大到小排序的,这样不会有浪费。

struct node{
	int h,w,t;
	bool operator <(const node &x)const{
		return t<x.t;
	}
};
multiset<node>st;
int main()
{
	h=read(),w=read(),n=read();
	FOR(i,1,n) a[i]=read(),a[i]=pow(2,a[i]);
	sort(a+1,a+1+n);reverse(a+1,a+1+n);
	st.insert({h,w,min(h,w)});
	FOR(i,1,n){
		auto it=st.begin();
		for(;it!=st.end();++it){
			if((*it).t>=a[i]) break;
		}
		if(it==st.end()) return puts("No"),0;
		node x=*it;
		st.erase(it);
		if(min(x.h-a[i],a[i]))
			st.insert({x.h-a[i],a[i],min(x.h-a[i],a[i])});
		if(min(x.h,x.w-a[i]))
			st.insert({x.h,x.w-a[i],min(x.h,x.w-a[i])});
	}
	puts("Yes");
	return 0;
}

标签:insert,矩形,min,read,ARC172A,st,正方形,Chocolate
From: https://www.cnblogs.com/LHLeisus/p/18022371

相关文章

  • P2985 [USACO10FEB] Chocolate Eating S
    原题链接题解看到使最不开心的一天尽可能的开心,这是要使最小值尽可能的不小,二分思路由此而来,剩余的就是贪心模拟最坏时间复杂度约为$O(d·sum(H))≈5·10^4·log2(5·10^{10})≈1777060.45$坑点:剩下的巧克力要在最后一天全部吃完\(Code\)#include<bits/stdc++.h>#d......
  • [USACO10FEB] Chocolate Eating
    原题链接很典型的二分答案题目。但是新颖点是他要输出每块巧克力在哪一天吃,很多人(包括我自己)就可能想当然的直接在累加的时候处理,如下:for(inti=1;i<=d;i++){sum/=2;while(sum<m){if(cnt>n)returnfalse;sum+=a[cnt];......
  • Chocolate
    只因生日!祝她生日快乐!(1班晚自修祝她福如东海寿比南山,代行我职,这是好的剩下的都是闲话力:非常喜欢蔡绿喜糖里的夹心巧克力,鉴定为比德芙强114514倍。晚自修出逃回寝室睡了12h,现在精神状态良好。政治会不了一点,直接载入史册!(甚至还用考试时间写语文,这是好的)体育大概率能A,太讽......
  • Problem: E. Chocolate Bar
    题意:给定一个nm个方块组成的巧克力块,最终要吃到k个方块有两种切的方式:(nm)1.横着切,成本是mm2.竖着切,成本是nn做法:考虑记忆化搜索,使用dp[n][m][k]代表一个n*m的巧克力最后要得到k块所需要的最小成本状态转移:把每一次切的动作看作是一次转移:以n,m,k为例1.横着切,那么每......
  • 使用Chocolatey包管理器一键搭建windows开发环境
    最近腾讯开放内测的微信小程序火了,而官方支持IDE只有windows版和Mac版的,稍微研究了一下这个IDE发现是node-webkit开发的,理论上应该是跨平台的,但不知为何这个IDE并没有支持Linux环境。喜欢折腾的我当然是要尝试一下的,奈何是使用Ubuntu作为主力开发环境,所以只能重做一个windows系统了......
  • 使用Hot Chocolate和.NET 6构建GraphQL应用 —— 创建Attribute中间件
    需求在部分接口添加一个机器人校验的功能思路读者们可以看下使用HotChocolate和.NET6构建GraphQL应用(5)——实现Query过滤功能,我们可以自定义创建一个类似的特性中间件来对接口进行管理.添加了该特性的接口即可实现机器人校验功能.实现输入对象///用户输入public......
  • Ansible教程:chocolatey插件介绍及安装(Windows软件包管理器)
    介绍chocolatey.chocolatey是一个AnsibleGalaxy集合,提供了用于管理Windows上Chocolatey软件包管理器的模块和插件。Chocolatey是一个类似于Linux上的包管理器的工具,它允许在Windows系统上轻松安装、升级和卸载软件包。chocolatey.chocolatey集合包含以下模块和插件:chocolatey.choc......
  • ABC245E Wrapping Chocolate [线段树二分]
    也许更好的阅读体验\(\mathcal{Description}\)\(n\)个物品有长和宽,\(m\)个盒子也有长和宽,一个盒子最多可以装一个物品,问\(n\)个物品能否都放进盒子,物品和盒子不能旋转\(\mathcal{Solution}\)先离散化长和宽,将物品和盒子按照长从大到小排序考虑到当前物品时将所有长大于等于当......
  • CF598E Chocolate Bar
    CF598EChocolateBar      一道简单的DP,虽然用搜索写的。我们用f(i,j,z)表示把X×Y的巧克力分成总大小为Z的小块所需最小代价。每次掰开的方式有两种,横着掰和竖着掰,故有两种转移。  #include<bits/stdc++.h>usingnamespacestd;intn,m,k,T;constintinf=......
  • (UVA)Big Chocolate
    BigChocolateMohammadhasrecentlyvisited Switzerland .Asheloveshisfriendsverymuch,hedecidedtobuysomechocolateforthem,butasthisfinechocolateisveryexpensive(YouknowMohammadisalittleBITstingy!),hecouldonlyaffordbuyingone......