[USACO] 铺放矩形块 题解
题目大意:
给定4个矩形块,找出一个最小的封闭矩形将这4个矩形块放入,但不得相互重叠。所谓最小矩形指该矩形面积最小。
思路:
枚举矩形的安放顺序,再按照题目所给的图判断即可,主要要想到枚举。
代码:
#include<bits/stdc++.h>
using namespace std;
int i,n,sum=,p[],q[],a[],b[];
struct data { int x,y; }ans[];
bool used[]; bool cmp(data a,data b) { return a.x<b.x; } void pd(int l,int r)
{
if (l*r<sum)
{
sum=l*r,ans[n=].x=l,ans[].y=r;
if (l>r) swap(ans[].x,ans[].y);
return;
}
if (l*r==sum)
{
ans[++n].x=l,ans[n].y=r;
if (l>r) swap(ans[n].x,ans[n].y);
}
} void dfs(int k)
{
if (k>)
{
int l=,r=,i;
for (i=;i<;i++) l=max(l,p[i]),r+=q[i];
pd(l,r);//
for (l=r=,i=;i<;i++) l=max(l,p[i]),r+=q[i];
pd(l+p[],max(r,q[]));//
l=max(p[],p[])+p[],r=max(q[]+q[],q[]);
pd(max(l,p[]),r+q[]);//
l=max(p[],p[]),r=max(q[],q[]);
pd(l+p[]+p[],max(r,q[]+q[]));//
l=max(p[]+p[],p[]+p[]);
if (q[]>=q[])
if (q[]>q[]) pd(l,q[]+q[]);
else
if (p[]+p[]<=l) pd(l,max(q[]+q[],q[]+q[]));//
return;
}
for (int i=;i<;i++)
if (!used[i])
{
used[i]=;
p[k]=a[i],q[k]=b[i],dfs(k+);
p[k]=b[i],q[k]=a[i],dfs(k+);
used[i]=;
}
} int main()
{
for (i=;i<;i++) scanf("%d%d",&a[i],&b[i]);
dfs(),sort(ans+,ans+n+,cmp),printf("%d\n",sum);
printf("%d %d\n",ans[].x,ans[].y);
for (i=;i<=n;i++)
if (ans[i].x!=ans[i-].x) printf("%d %d\n",ans[i].x,ans[i].y);
return ;
}
[USACO] 铺放矩形块 题解的更多相关文章
- 【USACO 1.4.1】铺放矩形块
[描述] 给定4个矩形块,找出一个最小的封闭矩形将这4个矩形块放入,但不得相互重叠.所谓最小矩形指该矩形面积最小. 所有4个矩形块的边都与封闭矩形的边相平行,图1示出了铺放 ...
- HTML中为何p标签内不可包含div标签?那哪些块元素里面不能放哪些块元素呢?
先看下面的例子你就能明白两者的差别: <p>测试一下块元素与<span>内联元素</span>的差别</p> <p>测试一下<div& ...
- [ACM_动态规划] 轮廓线动态规划——铺放骨牌(状态压缩1)
Description Squares and rectangles fascinated the famous Dutch painter Piet Mondriaan. One night, af ...
- HDU_2046——骨牌铺放问题,递推
Problem Description 在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数. 例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图: In ...
- ALGO-11_蓝桥杯_算法训练_瓷砖铺放(递归)
问题描述 有一长度为N(<=N<=)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限.要将这个长度为N的地板铺满,一共有多少种不同的铺法? 例如,长度为4的地面一共有如下5 ...
- C语言 · 瓷砖铺放
算法训练 瓷砖铺放 时间限制:1.0s 内存限制:512.0MB 锦囊1 递归或递推. 问题描述 有一长度为N(1<=N<=10)的地板,给定两种不同瓷砖:一种长 ...
- Educational Codeforces Round 35 B. Two Cakes【枚举/给盘子个数,两份蛋糕块数,最少需要在每个盘子放几块蛋糕保证所有蛋糕块都装下】
B. Two Cakes time limit per test 1 second memory limit per test 256 megabytes input standard input o ...
- 算法训练 瓷砖铺放 【递归】java
算法训练 瓷砖铺放 时间限制:1.0s 内存限制:512.0MB 锦囊1 锦囊2 锦囊3 问题描述 有一长度为N(1<=N<=10)的地板,给定两种不同瓷砖:一种长度为 ...
- Java实现 蓝桥杯VIP 算法训练 瓷砖铺放
[题目描述]: 有一长度为N(1< =N< =10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限.要将这个长度为N的地板铺满,一共有多少种不同的铺法? 例如,长度为4的 ...
随机推荐
- No module named django.core
在虚拟环境中将django-admin.py startproject tango_with_django_project替换为django-admin startproject tango_with ...
- Node.js入门笔记(5):案例两则
案例分析:前端自动化 1. 实现一个自动创建前端项目文件的js 通过node.js自动创建前端项目目录,包括js目录,js目录css目录,index.html和对应的内容. 初步的代码如下: var ...
- html传参数
var request = { QueryString: function (paramName) { var url = window.location.search; paramValue = & ...
- STM32F103之DMA
一.背景: 需要使用STM32的DAC,例程代码中用了DMA,对DMA之前没有实际操作过,也很早就想知道DMA到底是什么,因此,看了一下午手册,代码和网上的资料,便有了此篇文章,做个记录. 二.正文: ...
- jquery版小型婚礼(可动态添加祝福语)
前两天在网上不小心看到“js许愿墙”这几个字,我的神经就全部被调动了.然后就开始我的百度生涯,一直寻觅许愿墙背景图片和便利贴图片,觅了好久……一直没找到满意的……无意间看到祝福语和一些卡通婚礼图片.最 ...
- dex文件格式二
一. dex文件头 (1) magic value 在DexFile.c dexFileParse函数中 会先检查magic opt 啥是magic opt呢? 我们刚刚从cache目录拷贝出来的 ...
- EL表达式获取数据的方式
<%@page import="cn.jiemoxiaodi.domain.Person"%> <%@ page language="java" ...
- gbk和gb2312的区别
//GB2312是中国规定的汉字编码,也可以说是简体中文的字符集编码;GBK 是 GB2312的扩展 ,除了兼容GB2312外,它还能显示繁体中文,还有日文的假名 //总体说来,GBK包括所有的汉字, ...
- caffe初试(一)happynear的caffe-windows版本的配置及遇到的问题
之前已经配置过一次caffe环境了: Caffe初试(一)win7_64bit+VS2013+Opencv2.4.10+CUDA6.5配置Caffe环境 但其中也提到,编译时,用到了cuda6.5,但 ...
- 多个SVG图形集成到一个SVG图形上
SVG:使用XML格式定义图像的可缩放矢量图形(Scalable Vector Graphics). 优点就不多说了,下面看看怎么将多个svg图形集成到一个svg图形上. 如果使用bootstrap框 ...