POJ 1020--Packets

POJ1020-Anniversary Cake【有技巧的DFS】 北大POJ1020-Anniversary Cake 解题报告+AC代码 立即下载

题意

题目大意是求一个大的正方形蛋糕能否切分成n(1<=n<=16)个指定边长t(1<=t<=10)的小正方形蛋糕。

分析

由边长可推出原大蛋糕的边长最大为40。用二维数组来递归必然会超时,简化一下,用一维数组来表示蛋糕。

想像一下,用一个一维数组来描述一个正方形,数组的值表示每个位置已经被填充的高度。每次填充时,找到最左边的最低位置。

比如说第二个输入样本,大蛋糕的边长为5,小蛋糕最大的边长为3,那么首先找到坐标0的位置,这里的高度为0,而且1,2位置的高度也为0,那么表示这个小蛋糕可以填在这里,放好后,0,1,2位置的高度均为3。
第二块小蛋糕的边长也为3,找到最左边的最低位置3(此时还是0)。此时,从3到右边界4,只有两个位置,因此不能放这里。
接着判断第3块蛋糕,以此类推。。。最终可找到是否能完整填充。

代码如下:
Memory: 236K Time: 16MS Length:69LINES

#include<iostream>
using namespace std;
int sides[11] = {};      //不同边长(1-10)的小蛋糕数量
int filled[40] = {};     //简化成一维数组后,每个位置的高度
int side = 0;            //大蛋糕的边长
bool search(int count)
{
    if (count == 0) return true;
    int st = side;
    int pos = 0;
    for (int j = 0; j < side; ++j) //寻找高度最低的位置
    {
        if (filled[j] < st)
        {
            st = filled[j];
            pos = j;
        }
    }
    for (int i = 10; i > 0; --i)  //从大到小填充
    {
        if (sides[i] > 0 && pos + i - 1 < side  && i + st - 1 < side)
        {
            int j = pos;
            for (; j < pos + i; ++j)    if (filled[j] > st)     break;//判断后面i(边长)个位置是否一样高
            if (j == pos + i)
            {
                for (int k = pos; k < pos + i; ++k) filled[k] += i;//填充
                --sides[i];
                if (!search(count - 1))      //递归&&回溯
                {
                    for (int k = pos; k < pos + i; ++k) filled[k] -= i;
                    ++sides[i];
                }
                else return true;
            }
        }
    }
    return false;
}
int main()
{
    int cases = 0;
    int count = 0;
    cin >> cases;
    for (int i = 0; i < cases; ++i)
    {
        cin >> side >> count;
        memset(filled, 0, 40 * sizeof(int));
        memset(sides, 0, 11 * sizeof(int));
        int area = 0;
        int tmp = 0;
        for (int j = 0; j < count; ++j)
        {
            cin >> tmp;
            ++sides[tmp];
            area += tmp * tmp;
        }
        if (area == side * side)
        {
            if (search(count))
            {
                cout << "KHOOOOB!" << endl;
                continue;
            }
        }
        cout << "HUTUTU!" << endl;
    }
    return 0;
}
8.5/Q1,Charls最新高分文章解读! 8 257名受试者中,672人(8.14%)在9年内发生过卒中。在调整的多因素cox回归模型中,TyG和ABSI仍然是卒中的预测因素,TyG的HR为1.25(95%CI:1.06~1.47),ABSI的HR为1.33(95%CI:1.06~1.68)。TyG和ABSI联合诊断效能最高(AUC:0.579,95%CI:0.553~0.597),而TyG(AUC:0.566,95%CI:0.544~0.587)和ABSI(AUC:0.533,95%CI:0.524~0.597)的诊断效能最低。 阅读详情

相关推荐

使用Label Studio标注车牌数据:YOLOv26模型训练指南

在计算机视觉领域,数据标注是模型训练的基础环节,直接影响最终模型的识别精度。Label Studio作为专业的标注工具,支持多种标注类型和格式导出,特别适合目标检测任务的数据准备。通过多边形标注技术,可以精确捕捉车牌的四个角点,生成旋转矩形框(OBB)标注数据,这种标注方式相比传统水平框能更好地处理倾斜车牌场景。标注完成后,数据可导出为YOLO格式,直接用于YOLOv26等先进目标检测模型的训练。在实际工程中,合理的标注策略和严格的质量控制能显著提升车牌识别模型在复杂场景下的鲁棒性,适用于智能交通、停车场管

chuozhi7142的博客 904

poj1020 dfs

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

aidway的专栏 589

如何使用ArcGIS自动矢量化建筑

在显示的重分类对话框内,输入栅格选择提取单波段后的栅格,重分类分为三个层级,旧值分别为100-249、250-251和252-255,对应新值为1、2和3,旧值的最小和最大值不用修改,保持和原有的一致。同样在ArcToolbox内点击Spatial Analyst工具点击“重分类\重分类”,在重分类对话框内输入栅格选择之前重分类过后的图片,将旧值3的新值设置为1,这样分类后就只有两类。在显示的新建Shapefile对话框内,名称命名为折线,要素类型选择折线,点击编辑,设置坐标系为WGS 1984。

2163

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

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

To lose to pursue. 2524

荔枝派Nano内核编译

上文编译好uboot之后,想刷内核和根文件系统进去。其实官方的网盘里面,已经有打包好的系统镜像,包含所有的东西,可以直接烧录进flash或者TF卡,但是都是基于winbond芯片的,国产的xt25f128b刷进去妥妥的。所以没办法,只能自己再动手重新编译内核了。(PS:搞的我都想直接买一片w25q128换上了,有点麻烦,希望官方直接涨价或者出两版就行,不然对新手不友好啊)

木子点灯的博客 546

用SOLIDWORKS从零画一个履带机器人,手把手教你搞定底盘和传动

本文详细介绍了如何使用SOLIDWORKS从零开始设计履带式机器人,重点讲解底盘结构优化和传动系统设计的关键步骤。通过七个阶段的实战指南,包括前期规划、底盘建模、驱动系统装配、履带生成、动态模拟等,帮助工程师和爱好者掌握履带机器人的核心设计技巧,提升地形适应能力和动力效率。

weixin_30872499的博客 632

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的博客 446

告别复杂配置:dbswitch vs 传统工具(Kettle/DataX)在Greenplum数据同步中的性能对比

本文深入对比了新兴工具dbswitch与传统ETL工具Kettle、DataX在Greenplum数据同步中的表现。重点分析了dbswitch如何通过免中间文件、利用二进制COPY协议等设计,在异构数据库同步场景下实现更优的性能和更简化的配置,为技术选型提供清晰参考。

transformer2023的博客 1046

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

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

转角的守望 1757

Python 陌生代码库阅读之道:从零起步到一周掌控 5 万行老项目的实战策略

文中特别强调"自顶向下+画图+注释"的基础阅读心法,并提供了具体的代码示例和命令行技巧。对于大型项目,建议先建立核心流程的骨架认知,再逐步填充细节,同时注重文档化和测试覆盖率的提升。 掌握这套方法后,开发者可以将陌生代码库的阅读效率提升3倍以上,在一周内建立起对5万行级别项目的整体掌控力。

铭渊老黄 506

基于Cesium的简易淹没分析效果

淹没分析是通过模拟水体扩散过程来评估洪水、海平面上升等情景下可能影响的区域,其核心作用是为防灾减灾、规划设计和风险管理提供科学依据。预测淹没的范围、水深和持续时间,识别高风险区域,帮助政府制定应急预案和疏散路线,减少人员伤亡和财产损失。

星云数海的博客,一个专注GIS十多年的GISer人。 531

poj1020

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

SparkRat的家 855

栅格数据做相关性分析前的预处理(批量定义投影、栅格投影、重采样)

最近在做两个栅格数据的相关性分析,这个最主要的是两个栅格数的行列号是一致的(也就是说坐标系、分辨率一致),那么标准的栅格数据的分辨率是以米的形式存在的,但是有一些栅格数据是以度为单位存在的,所以在做分析前,一定要先把其转换为米,否则在重采样的时候就会出错。(相关文章——栅格数据以度为单位变为以米为单位的简单做法)当然,在变其分辨率的单位前,一定要将其坐标系转换为一致。所以就有以下的步骤(如何将两个栅格数据的坐标系、分辨率的单位和分辨率一致) 1.首先,要看两个栅格数据的坐标系是否一致,如果不一致,要先统一到

qq_41828818的博客 8350

二维平面深度优先-POJ 1020 Anniversary Cake

思路分析: AC 代码: 16 ms // 思路:这个问题没有巧妙的思路,于是只有贪心:能放下就放下,凑失败了就换一个。 // 将大蛋糕人为划分为 SIZE * SIZE 个小格子,然后“从上到下,从左到右”依次填充大蛋糕。 #include&lt;iostream&gt; #include&lt;algorithm&gt; #include&lt;vector&gt; using...

yangguangqizhi的博客 293

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

POJ 1020

题目大意不多说了,主要说点题目中应该注意的问题。 1.如何放:基本就是大家所说的dfs,注意减枝即可; 2.怎么放才是正确的 : 每次选择放得最少的列,在其基础上放置对应的正方形(注意减枝)。该题数据很弱,即你按照行搜索,优先放置列上剩余最少的(如左图),也可以AC,正确做法是横向放置,不然在dfs时容易出现右图的问题。ps:由小到大也会存在这个问题的,只不过显示的图片不一样。

Mr_LeeY的博客 657

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

POJ1020-Anniversary Cake

全解题报告索引目录 -> 【北大ACM – POJ试题分类】 转载请注明出处:http://exp-blog.com ------------------------------------------------------------------------- 大致题意: 有一块边长为BoxSize的正方形的大蛋糕,现在给出n块不同尺寸的正方形的小蛋糕的边长,问是否...

ζёСяêτ - 小優YoU 8179

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

POJ-1020-Anniversary Cake

链接:https://vjudge.net/problem/POJ-1020 题意: 给一个宽为s的正方形,再给n个变长为an的小正方形, 判断是否能将这n个小正方形完全填充到这个大正方形里面。 思路: 首先判断总面积是否相等。 用一维数组记录每一列用了多少的高度。 每次选择剩余高度最长的 ,再找出对应的长度。 从大往小的选择正方形往里填充。 如果刚好填充完,则满足。 代码: ...

weixin_34232363的博客 188

POJ 1020 Anniversary Cake 回溯DFS

题意:给你一个大的正方形,和一些小的正放形,问你,这些小的正方形能不能填满整个大的正方形,不能有重合。 思路:首先以先选择大的正方形为优,留下的小的正方形的灵活性高,填放正方形的方法是,最作最上开始,先向num[a](每a行已经被用过的1*1的正方形数量)最小的行开始填写,如果连续的num[i]=num[a],那么就可以往上填写边长 我看题解看了一上午………… //属于尝试位置的问题 ,如果

猫ER 672

poj 1020dfs

从一个顶点开始,一行一行堆,先堆灵活度小的(大体积),后堆灵活度大的(小体积)。 不管怎么堆,dfs肯定能遍历所有堆法,但是用以上的堆法可以更快速的找到答案 比如从左上角开始,先堆满第一行,再第二行……知道n个小方块都塞进去了,表示找到答案,可以return了。 总结:做dfs一定一定要注意好完全的回溯,如果回溯,所有与判断有关的全局变量一定要还原,这题由于没有注意到高度的还原WA2

yeqm_的博客 440

poj1020 cake解题报告

题目来自:http://acm.pku.edu.cn/JudgeOnline/problem?id=1020 [题目大意]:   求给定的n(1 [输入]: 第一行是测试次数, 第二行是第一次测试的数据,第一个数是大正方形的边长,第二个数是小正方数的个数,以下各数是 各小正方形的边长。 第三行是第二次测试数据... [输出]: KHOOOOB! or HUTUTU! [样例]:

liang0000zai的专栏 1296

POJ---1020:Dessert【爆搜】

FJ has a new rule about the cows lining up for dinner. Not only must the N (3 <= N <= 15) cows line up for dinner in order, but they must place a napkin between each pair of cows with a "+", ...

KobeDuu 474

poj 1020

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

XMzhou的专栏 1047

poj1020 搜索

如题:http://poj.org/problem?id=1020 Anniversary Cake Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 15696   Accepted: 5120 Description Nahid Khaleh decides to

zht的专栏 647

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

Chapter5-标准I/O库(中)-「APUE读书笔记」

读和写流 当流打开后,有3种非格式化I/O可对其进行读写操作:(1)每次一个字符,(2)每次一行的I/O,(3)直接I/O。 1、输入函数 #include //三个函数返回取到的字符,出错或到达文件尾返回EOF int    getc(FILE*  fp);     //可被实现为宏。 int    fgetc(FILE*  fp); int    getchar(void

Hering_Linux的专栏 780
上一篇: POJ 1021--2D-Nim
下一篇: POJ 1019--Number Sequence
Hering_Linux
博客等级 码龄12年 0粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值