poj1020分蛋糕(用一堆小正方形拼成一个大正方形)

【开关】刀开关矩阵(Pole Switched Matrix)的结构讨论 矩阵主要有交叉点矩阵和树形矩阵两种矩阵结构。 交叉点矩阵是由SPST继电器排列成简单的网格形式的阵列组成;树形矩阵是由树形的多路复用模块组成,为需要高频RF带宽的应用提供解决方案。在搭建这些矩阵的同时,也限制了可提供的连接性。这也是为什么有的矩阵是简单的交叉点矩阵,而有的矩阵的交叉点中嵌入隔离继电器用来提供中间带宽的矩阵。 但是,Pickering Interfaces提供的另外一种矩阵类型其... 阅读详情

搞了一天了,没搞出来。看了poj上bbs的神代码总算AC了;

基本思路:用一个数组储存每一列(单位为一,range:1 to cakeSize)的“高度”(即row向下延伸的地方),然后从row最短的地方开始放正方形(从10到1枚举,若放入之后不会超出CakeSize则进行深搜),然后计算能不能放下此正方形。若放不下,continue循环枚举下一个,若可以放下,深搜之,若得,返回true,否则继续枚举下一个方案。

当枚举到最后一个正方形(即正方形的总数)时即符合题意(前提是正方形的总面积加起来等于要求的大正方形的面积),若循环枚举完毕仍不可得,则不能拼成。

AC代码如下:

# include <stdio.h>
# include <string.h>
# include <stdlib.h>
# define DEBUG

int s[11];
int col[50];
int num;

int dfs(int cnt) {
	if(cnt == num) return 1;
	int min_col = 1;
	int min_row = col[1];
	for (int i = 2; i <= s[0]; ++ i) {
		if(col[i] < col[min_col]) {
			min_col = i;
			min_row = col[i];
		}
	}
	for(int x = 10; x > 0; -- x) {
		if(s[x] && min_col + x - 1 <= s[0] && min_row + x <= s[0]) {
			int width = 0;
			for (int i = min_col; col[i] == col[min_col]; ++ i, ++ width);
			if (width < x) continue;
			-- s[x];
			for (int i = 0; i < x; ++ i) {
				col[i + min_col] += x;
			}
			if(dfs(cnt + 1)){
				return 1;
			}
			for (int i = 0; i < x; ++ i) {
				col[i + min_col] -= x;
			}
			++ s[x];
		}
	}
	return 0;
}


int main () {
	int t;
	for (scanf("%d", &t); t; -- t) {
		memset(s, 0, sizeof(s));
		memset(col, 0, sizeof(col));
		scanf ("%d %d", &s[0], &num);
		for (int i = 0; i < num; ++ i) {
			int tmp;
			scanf ("%d", &tmp);
			++ s[tmp];
		}
		int sum = 0;
		for (int i = 1; i <= 10; ++ i) {
			sum += s[i] * i * i;
		}
		if(sum == s[0] * s[0] && dfs(0)){
			printf ("KHOOOOB!\n");
		}
		else printf ("HUTUTU!\n");
	}
	return 0;
}


高通Camera IFE时钟配置 高通Camera IFE时钟配置中的minHorizontalBlanking和minVerticalBlanking配置计算方法 阅读详情

相关推荐

POJ1020-Anniversary Cake【有技巧的DFS】

POJ1020-Anniversary Cake 解题报告+AC代码

poj1020 dfs

题意:有一个小为s*s的蛋糕,现给出n(1   算法:dfs,从上到下,从左到右,从蛋糕到小蛋糕依次尝试/枚举  最简单的思路是先按蛋糕的尺寸逆序排序小蛋糕,然后枚举每个小蛋糕,但是TLE。原因很简单,假如第i次尝试的是j个蛋糕,如果失败了,会尝试第j+1个蛋糕,但是假如第j+1个蛋糕的尺寸和第j个蛋糕的尺寸相同,同样会失败,此处需要剪枝。 后来,按照蛋糕的尺寸从到小进行枚举,如果尺

aidway的专栏 586

线条关键点检测数据集_20251118_031406.zip

一、基础信息数据集名称:线条关键点检测数据集图片数量:训练集:802张图片验证集:100张图片测试集:100张图片总计:1002张图片类类别:Linea-1、Linea-2、Linea-3标注格式:YOLO格式,包含关键点坐标,适用于关键点检测任务数据格式:图片数据,来源于相关检查场景二、适用场景工业自动化检测:用于生产线上的线条定位与缺陷识别,提升质量控制效率。监控视觉系统:集成到监控设备中,实时检测线条结构,适用于基础设施安全监测。计算机视觉研究:支持关键点检测算法的开发与验证,推动工业视觉技术进步。机器人导航:辅助机器人在复杂环境中识别线条路径,实现自动化操作。三、数据集优势精准标注:关键点坐标由专业标注员完成,确保模型训练的高准确性。类别多样性:包含三种线条类型,覆盖多种工业场景,增强模型泛化能力。任务适配性强:标注兼容主流深度学习框架,可直接用于关键点检测任务。应用价值突出:专注于工业检查与监控视觉,为自动化系统提供可靠数据支撑。

POJ 1020--Packets

poj 1020

Hering_Linux的专栏 416

POJ-1020 Anniversary Cake + Python(DFS)

原题:1020 -- Anniversary Cake 一 问题描述 对于一个小为size*size的方形矩阵,现在用n个小方块将其填满。 要求: 1 n个方块均需被填入矩阵; 2 填放完毕之后,方形矩阵中无空位,即正好将方形矩阵填满。 详细描述见原题链接。 二结题思路:DFS检测可行的一种方案 # 1 根据蛋糕尺寸size,设置一个Size*Size小的矩阵,并设置其初始值为0,用来存放蛋糕。 # 2 对nums块蛋糕到小排序,然后别对每块蛋糕进行处理。此处设置一个for循环.

xxdragon126的博客 445

poj1020(非常经典的dfs,易理解,难写代码)

把二维降到一维,有助于操作 本题是用列的累积表达整个区域 例如在2~3列放一个小为三的蛋糕,visit【i】++;(1 然后就是寻找比较好的位置进行放蛋糕。 放蛋糕的时候又要注意判断是不是可以放的下 对于成功放入的进行下一步搜索,否则回溯,这里可以把回溯的概念理解清楚 #include #include #include using namespace std;

转角的守望 1753

poj 1020 蛋糕问题

/* * poj 1020蛋糕 题目意: 求能否将一堆正方形无重叠的拼接成一个正方形? 解题思路: 回溯 + 剪枝 按照从左到右,从上到下的顺序,枚举所有可以放置正方形的单元,尝试放入合适的小正方形。 直到无法放入小正方形或者完全放完为止。 1、因为小正方形的边长介于1~10之间,

baisung的专栏 1131

POJ1020 - Anniversary Cake 解题报告

POJ1020 - Anniversary Cake 解题报告原题解析题目要点示例代码数据参考 原题解析 题目的意思是,一块正方形蛋糕,切成若干(n: [1, 16])正方形蛋糕(size: [1, 10])。问能够完整完,还是不完或者浪费。 题目要点 蛋糕的尺寸没有说明,但是通过小蛋糕的最数量和最尺寸可以推断不超过40; 解题的思路容易想到枚举所有切法,所以用dfs深度优先搜索比较合适,搜索蛋糕的切法; 因为计算的是完整切完的方法,因此切割过程中必不会产生空隙,因此可以将40*40的问

oneCertain的博客 269

OJ-POJ1020-DFS

这题DFS通过不难,意: 1,给一个正方形蛋糕,边长已知;   2,无损正方形蛋糕; 根据边界条件: 1,小蛋糕边长 2,小蛋糕数目 设定两个数组: 1,int partMap[]:存储小蛋糕状态,[下标]小蛋糕边长,[值]小蛋糕数量 2,int totalCou[]:存储未填状态,[下标]纵坐标,[值]最小横坐标 需要注意不符合条件的判断。 1,超界:加入之后

zxwtry的博客 472

poj-1020(蛋糕)(转)

转载: http://blog.csdn.net/lyy289065406/article/details/6683250 题意: 有一块边长为BoxSize的正方形蛋糕,现在给出n块不同尺寸的正方形的小蛋糕的边长,问是否能把蛋糕按恰好切割为这n块小蛋糕,要求每块小蛋糕必须为整块。   解题思路: 可以把蛋糕想象为一个蛋糕盒子,然后往里面装小蛋糕。 装蛋糕时遵循以下原则: 自

baoluqi的博客 502

poj 1020蛋糕

题意:给出正方形蛋糕的边长,然后给出一些小蛋糕的边长(正方形),看这些小的正方形能不能拼成这个蛋糕. 思路:感觉就是个二维的 1011..但是写起来还是悲剧啊...最后还是看了解题报告...  这种搜索的技巧,还真难掌握...  具体注释,看代码 #include using namespace std; //从上到下从左到右 搜索 int cnt[20],len[50];//cn

丿聪丶 628

POJ 1020谈几种重要的思维方式

题目 [http://poj.org/problem?id=1020]: Nahid Khaleh decides to invite the kids of the "Shahr-e Ghashang" to her wedding anniversary. She wants to prepare a square-shaped chocolate cake with known ...

diaomiaoshen4451的博客 174

poj 1020 Anniversary Cake

有一块边长为Big的正方形蛋糕,现在给出n块不同尺寸的正方形的小蛋糕的边长,问是否能把蛋糕按恰好切割为这n块小蛋糕,要求每块小蛋糕必须为整块。 思路:把每块小蛋糕放进边为big的盒子里,dfs从块到小块放,想到了这个思路,但还是不会敲代码,可能是敲得少,想不出怎么设置数组,怎么来判断错误的条件。参考acm之家的Java代码写出c的 #include #include int s

但求心安的博客 445

POJ1020 Anniversary Cake

Time Limit:1000MS Memory Limit:10000K Total Submissions:16683 Accepted:5442 Description Nahid Khaleh decides to invite the kids of the "Shahr-e Ghashang" to ...

dezhen7015的博客 156

POJ1020 蛋糕

Anniversary Cake Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 17496   Accepted: 5708 Description Nahid Khaleh decides to invite the kids of the "Shahr-e G

u011535421的博客 631

POJ 1020 Anniversary Cake

<br /><br />Anniversary CakeTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 10380 Accepted: 3238<br />DescriptionNahid Khaleh decides to invite the kids of the "Shahr-e Ghashang" to her wedding anniversary. She wants to prepare a square-shaped ch

hqd_acm的专栏 1800

POJ 1020

code1#include<iostream>2usingnamespacestd;3intcake[11],pos[41];4intside,number;56boolDFS(inta)7{8intmin_pos=41;9intput;1011if(a==number)12{13...

weixin_30678349的博客 174

POJ1020-Anniversary Cake【解题报告|DFS】

题目链接 题目意 有一块边长为BoxSize的正方形蛋糕,现在给出n块不同尺寸的正方形的小蛋糕的边长,问是否能把蛋糕按恰好切割为这n块小蛋糕,要求每块小蛋糕必须为整块。 解题思路 有技巧的DFS 可以把蛋糕想象为一个蛋糕盒子,然后往里面装小蛋糕。 装蛋糕时遵循以下原则: 自下而上,自左至右; 即先装好盒子底部,再继续往上层装,且装每一层时都靠左边放蛋糕蛋糕优先装,因为小蛋糕灵活度比较高。 只要把问题变换为上述问题,我想对深搜比较熟悉的同学也会马上得到思路了,这个只是很简单的DFS思路。 但是

csyifanZhang的博客 420

poj1020

题目描述:有一个边长为size的正方形蛋糕,现在问这块蛋糕是否恰好能被成n块特定边长的正方形蛋糕。 输入格式:第一行一个整数s,表示有s组数据,每组数据一行,每行开头一个整数s,表示蛋糕的边长,然后是一个整数n,表示小蛋糕的数量,接下来n个整数,代表这个n块小蛋糕的边长。 输出格式:每组数据输出一行,”KHOOOOB!”或者”HUTUTU!”,别代表恰好可以和不能。 数据约定:1<

SparkRat的家 853

POJ1020 回溯算法和DFS的练习

POJ1020 题目意 使用n个小正方形拼接为变长为m的正方形,每个小正方形小为1-10, n的取值范围为1-16, 可以得知m的取值范围为1-40。 问, 现在给定 m 和n 已经n个小正方形的情况下,判断是否能够利用这个n个小正方形组成 这个变长为m的正方形. 思路 : 1 刚开始在选择数据结构的表示时我用二维数组来表示这个原始的正方形,但发现回溯的时候,在还原正方形时显得...

weixin_33836874的博客 71
上一篇: poj1017Number Sequence
下一篇: poj1021棋盘同构问题
atupal
博客等级 码龄15年 125粉丝 163原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值