链接:https://vjudge.net/problem/POJ-1020

题意:

给一个宽为s的正方形,再给n个变长为an的小正方形,

判断是否能将这n个小正方形完全填充到这个大正方形里面。

思路:

首先判断总面积是否相等。

用一维数组记录每一列用了多少的高度。

每次选择剩余高度最长的 ,再找出对应的长度。

从大往小的选择正方形往里填充。

如果刚好填充完,则满足。

代码:

#include <iostream>
#include <memory.h>
#include <vector>
#include <map>
#include <algorithm>
#include <cstdio>
#include <math.h>
#include <queue>
#include <string> using namespace std; typedef long long LL; const int MAXN = 60; int square[MAXN];
int col[MAXN];
int n, m; bool DFS(int num)
{
if (num == n)
return true;
int minVal = m;
int minOrd = 0;
for (int i = 1;i <= m;i++)
{
//填充最小的列
if (col[i] < minVal)
{
minVal = col[i];
minOrd = i;
}
}
int minNum = 0;
for (int i = minOrd;i <= m;i++)
{
//得到填充最小的列的行数
if (col[i] == minVal)
minNum++;
else
break;
}
//从10往1填
for (int i = 10;i >= 1;i--)
{
if (square[i] <= 0)
continue;
if (i <= m - col[minOrd] && i <= minNum)
{
square[i]--;
for (int j = minOrd;j < minOrd + i;j++)
col[j] += i;
if (DFS(num + 1))
return true;
for (int j = minOrd;j < minOrd + i;j++)
col[j] -= i;
square[i]++;
}
}
return false;
} int main()
{
int t;
int wid;
scanf("%d", &t);
while (t--)
{
int sum = 0;
memset(square, 0, sizeof(square));
memset(col, 0, sizeof(col));
scanf("%d%d", &m, &n);
for (int i = 1;i <= n;i++)
{
cin >> wid;
square[wid]++;
sum += wid * wid;
}
if (sum != m * m)
{
cout << "HUTUTU!" << endl;
continue;
}
if (DFS(0))
cout << "KHOOOOB!" << endl;
else
cout << "HUTUTU!" << endl;
} return 0;
}

  

POJ-1020-Anniversary Cake的更多相关文章

  1. POJ 1020 Anniversary Cake(DFS)

    Anniversary Cake Time Limit: 1000MSMemory Limit: 10000KB64bit IO Format: %I64d & %I64u Submit St ...

  2. poj 1020 Anniversary Cake(切正方形蛋糕+搜索)

                                                                                                         ...

  3. POJ1020 Anniversary Cake

    题目来源:http://poj.org/problem?id=1020 题目大意:有一块边长为s的正方形大蛋糕,有n个客人,每个客人想分一块边长为si的正方形蛋糕.求这块大蛋糕能否恰好满足所有客人的需 ...

  4. POJ 2342 Anniversary party / HDU 1520 Anniversary party / URAL 1039 Anniversary party(树型动态规划)

    POJ 2342 Anniversary party / HDU 1520 Anniversary party / URAL 1039 Anniversary party(树型动态规划) Descri ...

  5. DP Intro - poj 2342 Anniversary party

    今天开始做老师给的专辑,打开DP专辑 A题 Rebuilding Roads 直接不会了,发现是树形DP,百度了下了该题,看了老半天看不懂,想死的冲动都有了~~~~ 最后百度了下,树形DP入门,找到了 ...

  6. 【DFS】Anniversary Cake

    [poj1020]Anniversary Cake Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 17203   Accep ...

  7. poj 2324 Anniversary party(树形DP)

    /*poj 2324 Anniversary party(树形DP) ---用dp[i][1]表示以i为根的子树节点i要去的最大欢乐值,用dp[i][0]表示以i为根节点的子树i不去时的最大欢乐值, ...

  8. Anniversary Cake

    Anniversary Cake Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 15704   Accepted: 5123 ...

  9. 【poj1020】 Anniversary Cake

    http://poj.org/problem?id=1020 (题目链接) 题意 有一个S*S的大蛋糕,还有许多正方形的小蛋糕,问能否将大蛋糕完整的分成所有的小蛋糕,不能有剩余. Solution 像 ...

  10. POJ 2342 - Anniversary party - [树形DP]

    题目链接:http://poj.org/problem?id=2342 Description There is going to be a party to celebrate the 80-th ...

随机推荐

  1. delphi2010\delphi XE7 开发及调试WebService 实例

    使用delphi已经10多年了,一直搞桌面程序开发,对Webservice一直很陌生,近来因工作需要,学习delphi开发WebService,担心遗忘,作此笔记. 特别感谢 中塑在线技术总监 大犇  ...

  2. 如何让A20,android开机自动启动C程序【转】

    本文转载自:http://blog.csdn.net/u011258134/article/details/50749174 如何让A20,android开机自动启动C程序 2014-12-26 11 ...

  3. LightOJ - 1030 Discovering Gold —— 期望

    题目链接:https://vjudge.net/problem/LightOJ-1030 1030 - Discovering Gold    PDF (English) Statistics For ...

  4. UVA1378 A Funny Stone Game —— SG博弈

    题目链接:https://vjudge.net/problem/UVA-1378 题意: 两个人玩游戏,有n堆石子,两人轮流操作:于第i堆石子中取走一块石子,然后再往第j.k堆中各添加一块石子.其中 ...

  5. DDD领域驱动之干货(四)补充篇!

    距离上一篇DDD系列完结已经过了很长一段时间,项目也搁置了一段时间,想想还是继续完善下去. DDD领域驱动之干货(三)完结篇! 上一篇说到了如何实现uow配合Repository在autofac和au ...

  6. C#继承与多态

    继承:在程序中,如果一个类A:类B,这种机制就是继承. 子类可以继承父类的所有内容(成员)吗? 解析: 1.私有成员(属性和方法) 2.构造函数 3.final修饰过的方法,子类不能进行重写 //SE ...

  7. spring配置数据库连接池

    1. jdbcConfig.properties文件中 jdbc.jdbcUrl=jdbc:mysql:///ssm-crudjdbc.driverClass=com.mysql.jdbc.Drive ...

  8. C++之运算符重载(前置++和后置++)

    今天在阅读<google c++ 编程风格>的文档的时候,5.10. 前置自增和自减:有一句话引起了我的注意: 对于迭代器和其他模板对象使用前缀形式 (++i) 的自增, 自减运算符.,理 ...

  9. camera调试命令

    问题:adb install -r Camera.apk 2864 KB/s (7603465 bytes in 2.592s)Failure [INSTALL_FAILED_UPDATE_INCOM ...

  10. CF-805B

    B. 3-palindrome time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...