Section 1.4 Packing Rectangles
本来是USACO Training的1.4.1的,但是介于今早过了食物链想起了这道题实在是太怨念了,翻出自己写的AC程序居然有5KB!!
思路很简单,枚举,而且就图中的六种情况。但是第六种变化状况太多了,我自己根本就没写出来后来是看别人写的分四种情况Blah Blah...
可参考此篇中的分析:http://blog.sina.com.cn/s/blog_5c717d190100qgkr.html
program packrec;
var r,rw,rt:array[..,..] of integer;
i,j,k,l,t,i1,j1,k1,l1:integer;
ans,anscount:integer;
ansx,ansy:array [..] of integer; procedure swap(var a,b:integer);
var t:integer;
begin
t:=a;a:=b;b:=t;
end; procedure panding(x,y:integer);
begin
if x*y<ans then
begin
ans:=x*y;
anscount:=;
ansx[anscount]:=x;
ansy[anscount]:=y;
exit;
end;
if x*y=ans then
begin
inc(anscount);
ansx[anscount]:=x;
ansy[anscount]:=y;
end;
end; procedure work;
var lx,ly,min,i,max:integer;
begin
{layout1}
lx:=rw[,]+rw[,]+rw[,]+rw[,];
ly:=;
for i:= to do
if rw[i,]>ly then ly:=rw[i,];
panding(lx,ly);
{layout2}
lx:=rw[,]+rw[,]+rw[,];
if rw[,]>lx then lx:=rw[,];
max:=;
for i:= to do
if rw[i,]>max then max:=rw[i,];
ly:=max+rw[,];
panding(lx,ly);
{layout3}
lx:=rw[,]+rw[,];
if rw[,]>lx then lx:=rw[,];
lx:=lx+rw[,];
ly:=rw[,]+rw[,];
if rw[,]>rw[,] then ly:=rw[,]+rw[,];
if rw[,]>ly then ly:=rw[,];
panding(lx,ly);
{layout4}
if rw[,]>rw[,] then lx:=rw[,] else lx:=rw[,];
lx:=lx+rw[,]+rw[,];
ly:=rw[,];
if rw[,]+rw[,]>ly then ly:=rw[,]+rw[,];
if rw[,]>ly then ly:=rw[,];
panding(lx,ly);
{layout5}
if rw[,]>rw[,] then lx:=rw[,] else lx:=rw[,];
lx:=lx+rw[,]+rw[,];
ly:=rw[,]+rw[,];
if rw[,]>ly then ly:=rw[,];
if rw[,]>ly then ly:=rw[,];
panding(lx,ly);
{layout6}
{if (rw[1,1]+rw[3,1]>rw[2,1]+rw[4,1]) then
lx:=rw[1,1]+rw[3,1]
else
lx:=rw[2,1]+rw[4,1];
if rw[1,2]+rw[2,2]>rw[3,2]+rw[4,2] then
ly:=rw[1,2]+rw[2,2]
else
ly:=rw[3,2]+rw[4,2];
if (rw[3,2]>rw[1,2]) and (rw[1,1]<rw[2,1]) then ly:=rw[2,2]+rw[4,2];
if (rw[1,1]>rw[2,1]) and (rw[3,2]>rw[2,2]) then ly:=rw[1,1]+rw[3,2];
if (rw[1,1]>rw[2,1]) and (rw[3,2]>rw[)}
if rw[,]+rw[,]>rw[,]+rw[,] then
ly:=rw[,]+rw[,]
else
ly:=rw[,]+rw[,];
if rw[,]>=rw[,]+rw[,] then
begin
lx:=rw[,];
if rw[,]+rw[,]>lx then lx:=rw[,]+rw[,];
if rw[,]+rw[,]>lx then lx:=rw[,]+rw[,];
end;
if (rw[,]>rw[,]) and (rw[,]>rw[,]+r[,]) then
begin
lx:=rw[,]+rw[,];
if rw[,]+rw[,]>lx then lx:=rw[,]+rw[,];
if rw[,]+rw[,]>lx then lx:=rw[,]+rw[,];
end;
if (rw[,]>rw[,]) and (rw[,]<rw[,]+rw[,]) then
begin
lx:=rw[,]+rw[,];
if rw[,]+rw[,]>lx then lx:=rw[,]+rw[,];
if rw[,]+rw[,]>lx then lx:=rw[,]+rw[,];
end;
if (rw[,]>=rw[,]+rw[,]) then
begin
lx:=rw[,];
if rw[,]+rw[,]>lx then lx:=rw[,]+rw[,];
if rw[,]+rw[,]>lx then lx:=rw[,]+rw[,];
end;
if rw[,]=rw[,] then
begin
lx:=rw[,]+rw[,];
if rw[,]+rw[,]>lx then lx:=rw[,]+rw[,];
end;
panding(lx,ly);
end; begin
assign(input,'packrec.in');reset(input);
assign(output,'packrec.out');rewrite(output);
ans:=;
for i:= to do
readln(r[i,],r[i,]);
for i:= to do
for j:= to do
if (j<>i) then
for k:= to do
if (k<>i) and (k<>j) then
for l:= to do
if (l<>i) and (l<>j) and (l<>k) then
begin
rw[,]:=r[i,];rw[,]:=r[i,];
rw[,]:=r[j,];rw[,]:=r[j,];
rw[,]:=r[k,];rw[,]:=r[k,];
rw[,]:=r[l,];rw[,]:=r[l,];
rt:=rw;
for i1:= to do
for j1:= to do
for k1:= to do
for l1:= to do
begin
rw:=rt;
if i1= then swap(rw[,],rw[,]);
if j1= then swap(rw[,],rw[,]);
if k1= then swap(rw[,],rw[,]);
if l1= then swap(rw[,],rw[,]);
work;
end;
end;
writeln(ans);
for i:= to anscount- do
for j:=i+ to anscount do
if ansx[i]<ansx[j] then
begin
swap(ansx[i],ansx[j]);
swap(ansy[i],ansy[j]);
end;
for i:= to anscount do
if (ansx[i]<>ansx[i-]) and (ansx[i]>=ansy[i]) then writeln(ansy[i],' ',ansx[i]);
close(input);close(output);
end.
packrec
通过日期是2013-11-08,也就是因为NOIP和学农撞日期旷课在家的那个周五0 0,简直是无法忘记那天有多么郁闷,备考的一天简直废在这题上面…⊙﹏⊙b
Section 1.4 Packing Rectangles的更多相关文章
- USACO 6.2 Packing Rectangles
Packing RectanglesIOI 95 The six basic layouts of four rectangles Four rectangles are given. Find th ...
- USACO1.4.1 Packing Rectangles
//毕竟我不是dd牛,USACO的题解也不可能一句话带过的…… 题目链接:http://cerberus.delos.com:790/usacoprob2?a=pWvHFwGsTb2&S=pa ...
- [vijos P1531] 食物链
做出的第一道NOI题目?(噗,还是看题解才会的…按某篇解题说的,这题就比我年轻四岁…T T 做的第一道IOI题目是USACO上的Packing Rectangles...这题比我还老!)对我等弱渣来说 ...
- USACO chapter1
几天时间就把USACO chapter1重新做了一遍,发现了自己以前许多的不足.蒽,现在的程序明显比以前干净很多,而且效率也提高了许多.继续努力吧,好好的提高自己.这一章主要还是基本功的训练,没多少的 ...
- pdf reference 格式具体说明
1. PDF概要 1.1. 图像模型 PDF能以平台无关.高效率的方式描叙复杂的文字.图形.排版. PDF 用图像模型来实现设备无关. 图像模型同意应用程序以抽象对象描叙文字.图像.图标.而不是通过详 ...
- Determine overlapping rectangles
https://github.com/Premiumlab/Python-for-Algorithms--Data-Structures--and-Interviews/blob/master/Moc ...
- keil MDK error: L6236E: No section matches selector - no section 错误
今天板子刚到,新建的第一个工程就报错了. .\Objects\cse.sct(7): error: L6236E: No section matches selector - no section t ...
- 【代码笔记】iOS-一个tableView,两个section
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...
- gcc/linux内核中likely、unlikely和__attribute__(section(""))属性
查看linux内核源码,你会发现有很多if (likely(""))...及if (unlikely(""))...语句,这些语句其实是编译器的一种优化方式,具 ...
随机推荐
- Java用webSocket实现tomcat的日志实时输出到web页面
原文:http://blog.csdn.net/smile326/article/details/52218264 1.场景需求 后台攻城狮和前端攻城狮一起开发时,经常受到前端攻城狮的骚扰,动不动就来 ...
- java 基础(第一天)
1. 一个文件里面只能有一个 public 修饰的方法 且方法名与文件名保持一致. 如: public class main(){ } class car(){ } class dog(){ } ...
- Jquery如何获得<iframe>嵌套页面中的元素
DOM方法:父窗口操作IFRAME:window.frames["iframeSon"].documentIFRAME操作父窗口: window.parent.documentjq ...
- noip赛前小结2
嗯...赛前的第二份小结. 总结一下应该做的几个事情就好了. (1)关于做题顺序 做题顺序是很重要的. 开始的时候先审题,看清数据范围什么的,随便想一想,大概估计一下自己的得分. 第二题再把每道题仔细 ...
- navigator.userAgent.indexOf来判断浏览器类型
navigator.userAgent.indexOf来判断浏览器类型 (2011-03-03 11:30:40) 转载▼ 标签: 杂谈 来源:http://xtaai5233.blog.163. ...
- ajax轮询session阻塞问题
近来读了几篇关于ASP.NET下Session机制的文章,结合自己的实际应用,有点感想: 在ASP.NET的Session的默认机制下,对同一个SessionID下的用户请求ASP.NE ...
- 关于byte[]字节传输的大端和小端小议
当前的存储器,多以byte为访问的最小单元,当一个逻辑上的地址必须分割为物理上的若干单元时就存在了先放谁后放谁的问题,于是端(endian)的问题应运而生了,对于不同的存储方法,就有大端(big-en ...
- mvc伪静态<四> 伪静态后静态页面或者引用的css和图片失效
引用的css和图片失效的解决办法 把样式引用文件的相对路径改成绝对路径就可以了 比如原先的引用路径为:<link href="~/Content/css/style.css" ...
- java中将一个字符数组赋值给另一个,两者同时变化
java中将一个字符数组赋值给另一个,两者的变化怎么是同步的?怎么才能让他们独立开? 比如有一个int[][] a 已经存在值,现在定义int[][] b=a;之后改变a的值,为何b也跟着改变?怎么才 ...
- HTML第一部分
HTML 内容(hyper text markup language,超文本标记语言) CSS 网页美化 Javacript 脚本语言 第一部分 HTML <html ...