Uva 297 - Quadtrees

【Unity报错】Unity导入海康SDK 报错 DllNotFoundException: PlayCtrl assembly 2.尝试按网上其他的办法(包括使用depengs查看dll依赖等)1.先检查Plugins文件夹中是否存在PlayCtrl文件。3.如果网上查阅的办法都不能解决,请继续往下看。更换低版本的SDK库文件。 阅读详情

抱着打死也不用链表的精神,我把这个题给写出来了(其实也蛮后悔的,感觉不用链表也不是很简洁)。

我的思路基本分两步,第一步先将两个字符串合成一个,这一步我的处理是非常麻烦的(本来预计没有这么麻烦的),分九种小的情况,其中有两种还需要进行特殊的递归处理;第二步相对比较简单,将合成的字符串用个递归函数模拟四叉树便可搞定 ~

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<string>
using namespace std;
char c[10000];
int count,k1,k2,f,k;
void Quadtrees(char *cc,int dep)  //第二步处理,将合成的字符串模拟四叉树 ~
{
    dep++;
    for(int i=0; i<4; i++)
    {
        k++;
        if(cc[k]=='f')
            count+=1024/pow(4,dep);
        else if(cc[k]=='p')
            Quadtrees(c,dep);
    }
    return ;
}
int rec(char *t)   // 对 'p' 与 'f' 相遇时,'p'的后续子树进行删除
{
    for(int i=0; i<4; i++)
    {
        f++;
        if(t[f]=='e'||t[f]=='f')
            continue;
        else if(t[f]=='p')
            f=rec(t);
    }
    return f;
}
int deal_p(char *t,int kk)   //  'p' 与 'e' 相遇时,'p'的后续子树的添加处理
{
    for(int i=0; i<4; i++)
    {
        c[k++]=t[kk];
        if(t[kk]=='f'||t[kk]=='e')
        {
            kk++;
        }
        else if(t[kk]=='p')
            kk=deal_p(t,++kk);
    }
    return kk;
}
int conbination(char *a,char *b)   // 将两个字符串合成一个,每个元素相合时,有9种情况
{
    k1=0,k2=0,k=0;
    memset(c,0,sizeof(c));
    while(1)
    {
        if(a[k1]=='\0'&&b[k2]=='\0')
            break;
        if(a[k1]=='f'&&b[k2]=='p')
        {
            c[k]='f';
            k1++;
            f=k2;
            k2=rec(b)+1;
            k++;
        }
        else if(a[k1]=='p'&&b[k2]=='f')
        {
            c[k]='f';
            k2++;
            f=k1;
            k1=rec(a)+1;
            k++;
        }
        else if(a[k1]=='f'&&b[k2]=='f')
        {
            c[k++]='f';
            k1++;
            k2++;
        }
        else if(a[k1]=='f'&&b[k2]=='e')
        {
            c[k++]='f';
            k1++;
            k2++;
        }
        else if(a[k1]=='e'&&b[k2]=='f')
        {
            c[k++]='f';
            k1++;
            k2++;
        }
        else if(a[k1]=='e'&&b[k2]=='p')
        {
            c[k++]='p';
            k2=deal_p(b,++k2);
            k1++;
        }
        else if(a[k1]=='p'&&b[k2]=='e')
        {
            c[k++]='p';
            k1=deal_p(a,++k1);
            k2++;
        }
        else if(a[k1]=='p'&&b[k2]=='p')
        {
            c[k++]='p';
            k1++;
            k2++;
        }
        else if(a[k1]=='e'&&b[k2]=='e')
        {
            c[k++]='e';
            k1++;
            k2++;
        }
        else if(a[k1]=='\0')  // 满足条件,将后续字符串拷入 c,然后结束
        {
            while(b[k2]!='\0')
            {
                c[k++]=b[k2++];
            }
        }
        else if(b[k2]=='\0')
        {
            while(a[k1]!='\0')
            {
                c[k++]=a[k1++];
            }
        }
/////        cout<<c<<" "<<k1<<" "<<k2<<" "<<k<<endl;
    }
    return 0;
}
int main()
{
#ifdef test
    freopen("sample.txt","r",stdin);
#endif
    int num;
    char a[10000],b[10000];
    scanf("%d",&num);
    getchar();
    while(num--)
    {
        k1=k2=count=0;
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        scanf("%s%s",a,b);
        if(a[0]=='f'||b[0]=='f')  // 若是全黑,直接处理
            count=1024;
        else
        {
            conbination(a,b);
            k=0;
            Quadtrees(c,0);
        }
        printf("There are %d black pixels.\n",count);
    }
    return 0;
}


LM358模拟声音传感器原理图设计,已量产(声音传感器) 最近在做智能家居设备的声音触发模块时,搭了个基于 LM358 的模拟声音传感器电路 —— 不用复杂的专用芯片,靠通用运放就能把环境声音转化为可被单片机 AD 采集的电压信号,成本压得很低,实际调试下来灵敏度和稳定性都够用。今天把这个电路拆解开,聊聊每部分的设计思路。 阅读详情

相关推荐

Hyper-V虚拟机 安装 银河麒麟V10桌面版

如何在windows 11 Hyper-V 虚拟机中 安装 银河麒麟V10桌面版。

m0_46756112的博客 3419

Uva 297 四分树

题意: 有一个大小为32*32的图像, 它可以描述为一颗四分树, 如下图 注意描述顺序为 2 1 3 4 给出两棵四分树的先序遍历, 求两者合并后, 黑色像素的个数。 分析: 因为本题给的树是一颗完全的树, 所以只需要给出先序遍历, 就能确定整棵树。 我们可以建一个32*32的数组模拟涂色的过程, 是一个锻炼递归的好题目, 递归的代码通常也可以写的很简便。 每...

dixianqi2609的博客 145

U-Net图像分割实战:从论文解析到PyTorch代码实现

本文深入解析了U-Net图像分割模型的经典架构与核心思想,并提供了从零开始的PyTorch代码实现教程。通过详细拆解编码器-解码器结构、跳跃连接等关键组件,手把手指导读者构建完整的U-Net网络,涵盖数据准备、模型训练、推理部署全流程,是掌握图像分割实战技能的实用指南。

fire9的博客 341

UVA297 四分树 Quadtrees

四分图来表示一个黑白图像,方法是用根节点表示整幅图像,然后把行列个分成两等份,按图中的方式编号,从左到右对应4个子节点。如果某子节点对应的区域全黑或全白,则直接用一个黑节点或白节点表示;如既有黑又有白,则用一个灰节点表示,并且为这个区域递归建树。 给出两棵四分树的先序遍历,求二者合并(黑色部分合并)黑像素的个数(每幅图都是32X32的)。p表示灰节点,f表示黑节点,e表示白节点。

Sx_WWj的博客 218

国标GB28181视频平台EasyGBS国标平台设备播放断流现象的问题解决方案

于是排查代码发现,当设备网络较差时,设备会断流,超过指定的时间30s(EasyGBS平台默认值),就会主动清除流媒体服务,但是redis中的流数据还在,而当设备在录像时,自动保活会从redis中取保活流数据,所以就会出现设备状态显示正在播放,但是流已经消失的情况。有用户反馈,在安防视频监控EasyGBS运行时,接入的设备刚开始可以正常播放,开启云端录像后,也没有停止和重播的操作,但是出现了视频流断流的现象。在设备进行播放保活时,对流信息进行判断,添加一个最后的处理流时间,如果超过指定时间就自动重新拉流。

EasyNTS的博客 435

Aloudata Agent :基于 NoETL 明细语义层的分析决策智能体

这是包括我们在内的一些厂商探索的一个新方向,这种方式先由大模型将自然语言转化为对指标语义层的查询请求(MQL,Metrics Query Language),再由指标平台将指标和维度的查询与计算逻辑转化为准确的 SQL 查询语句。用户查询经大模型语义解析后,将其转换为指标、维度及筛选条件的组合表达,并生成面向指标平台的 MQL,Aloudata CAN 指标平台的语义引擎将 MQL 转换为准确和可执行的查询 SQL,语义引擎内置函数体系与 SQL 解析器,确保语义转换的 100% 准确性。

Aloudata的博客 1664

uva297

uva297 题意: 一个四叉树用来格式编码图像,这个想法的基础是任意的图像能够分成四个象限.每个象限能够拆分成四个子象限,比如,在四叉树中,每一个图像都被一个父节点表示,根据预先定义好的顺序,四个孩子节点代表四个象限. 当然,如果整个图像只有一个颜色,这个图像的四叉树形式只有一个节点.通常,如果一个象限由不同的颜色组成,这个象限需要...

weixin_34326429的博客 212

双翌视觉系统配合机械手大视野定位案例(单目标带角度抓取)

一、定位原理概述 1.系统构架 视觉定位系统采用正向打光方式,光源在机械手上方,CCD从上往下拍摄,进行图像分析定位。相机将计算出的像素坐标转换为机械手的物理坐标,视觉软件与机械手进行网口通讯,将视野内物料的物理坐标发送给机械手,机械手抓取物料放在指定工位。 2.相机标定概述 系统采用宫格标定确定像素坐标和物理坐标一一对应关系,同时利用3点或者多点旋转标定求出旋转中心 系统采用宫格标定,自定义行列数和间距及旋转角度,通过机械手发送的当...

weixin_51554164的博客 2172

四分树(UVa297紫书p160)

题目描述 输入格式 输出格式 题意翻译 如图所示,可以用四分图来表示一个黑白图像,方法是用根节点表示整幅图像,然后把行列个分成两等份,按图中的方式编号,从左到右对应4个子节点。如果某子节点对应的区域全黑或全白,则直接用一个黑节点或白节点表示;如既有黑又有白,则用一个灰节点表示,并且为这个区域递归建树。 给出两棵四分树的先序遍历,求二者合并(黑色部分合并)黑像素的个数(每幅图都是32X32的)。p表示灰节点,f表示黑节点,e表示白节点。 具体内容看原文和紫书。 感谢 @happyZYM

falldeep的算法世界 2万+

SpringBoot系列之实现一个AI聊天助手

本文介绍了基于Spring Boot框架实现的AI聊天助手项目。该项目使用Spring Boot 3.2.3、Spring AI 1.0.0-M5等技术栈,集成DeepSeek-R1-Distill-Llama-8B模型实现智能对话功能。文章详细介绍了项目配置流程、运行方式和核心代码实现,包括ChatMessage模型类和服务类ChatService的关键功能,如消息处理、历史记录管理和AI响应获取等。读者可通过提供的GitHub链接获取完整代码,快速搭建自己的AI聊天应用。

Nicky's blog 1451

芒果YOLO11改进17:即插即用 | 损失函数Repulsion Loss|Repulsion 解决目标遮挡场景下的目标检测,为解决密集人群检测中遮挡设计的损失函数,打造高效

即插即用 | 损失函数Repulsion Loss|Repulsion 解决目标遮挡场景下的目标检测,为解决密集人群检测中遮挡设计的损失函数,打造高效

包括YOLOv5、YOLOv7、YOLOv8等模型改进 484

UVa297 (四分树 Quadtrees)

1、题目大意 题目链接UVa 297 给出结点值为 p, e, f 的两个严格四叉树(非叶结点的度为 4)的先序遍历序列,p 代表灰色,e 代表白色,f 代表黑色,将两个树对应的结点颜色相融合,求最终黑结点代表的像素个数。其中根结点代表像素数为1024个,其余每个结点代表的像素数为上一层结点的四分之一。 2、解题思路 根据先序序列就可以确定这个四叉树。因为本题中,严格四叉树的结点个数为 4n...

Armstrong的博客 459

如何使用事务码SMICM分析ABAP代码发起的HTTP请求的错误

当我用CL_HTTP_CLIENT往一个外网的url发请求时,遇到错误:ICM_HTTP_SSL_PEER_CERT_UNTRUSTED 错误是从这段ABAP代码里抛出来的: CALL METHOD lo_http_client-&gt;get_last_error IMPORTING code = lv_sysubrc message = ev_error_message. "BREAK-...

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3209

UVA-297 Quadtrees

2016-08-22 UVA - 297 Quadtrees 题目大意:四叉树,给 32 × 32 的格子涂色,p 表示将当前格子分为四个象限,根据 1、2、3、4 象限的顺序处理,e 不上色,f 将当前格子涂黑,问两个图重叠后涂黑的格子数是多少。 解题思路:递归,二维数组模拟格子涂色,两轮后计算黑色格子数。 #include #include #include

振丿Love 472

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

非二叉树 UVA297 四分树 Quadtrees

UVA297 四分树 Quadtrees 题意翻译 如图所示,可以用四分图来表示一个黑白图像,方法是用根节点表示整幅图像,然后把行列个分成两等份,按图中的方式编号,从左到右对应4个子节点。如果某子节点对应的区域全黑或全白,则直接用一个黑节点或白节点表示;如既有黑又有白,则用一个灰节点表示,并且为这个区域递归建树。 给出两棵四分树的先序遍历,求二者合并(黑色部分合并)黑像素的个数(每幅图都是32X...

繁凡さん的博客 1088

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

UVa297 Quadtrees

// UVa297 Quadtrees // 题意:给两棵四分树的先序遍历,求二者合并之后(黑色部分合并)黑色像素的个数。p表示中间结点,f表示黑色(full),e表示白色(empty) // 算法:先建树,然后统计   #include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;iostream&gt; ...

weixin_34250709的博客 99

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

UVA 297-Quadtrees

UVA 297-Quadtrees题目大意:图中一个正方形一共可以看成1024个小正方形,按照图例编区域,给俩个字符串,遇p表示分四块,遇e表示不处理,遇f表示全部涂黑,求经过俩个字符串操作后最后有多少个黑的小正方形解题思路:按照题意递归分割涂黑即可#include <iostream> #include <string> #include <sstream> #include <stdio.h>

ZeroLH00的博客 397

UVA 297 Quadtrees 好像不是很难。又好像不是很简单

UVA 297 Quadtrees 题目的意思挺好理解的,输入两颗四叉树,按照p为不空不满,f为满,e为空,按照先序输入, 把两颗四叉树合并起来,计算出新树的值。。 思路:首先把2个字符串处理,变成2个二维数组存放,然后在通过二维数组,就能查找到每个位置的结点相加之后的结果,要注意,如果四叉树4个分叉都为f,那么处理为结点为f,结点之后全部删除。 代码 #include

Remilia's 1404

【代码超详解】UVA 297 Quadtrees 四分树

一、题目描述 四分树是一种编码图像的算法。任意一个图像都可以被划分成四个象限,如果这四个象限仍然有像素的颜色不同,就把这个象限再划分成四个象限,直到象限只是单个点或者全部像素点的颜色都相同为止。 首先输入一个数字,代表测试用例的数量。在这若干个样例中,每个样例占一行,用于描述四分树。每一行的每个字符只能是 p、f、e 三个中的一个。p代表该节点为父节点,接下来输入其子节点。f 代表该节点要被涂成黑...

COFACTOR 700

297 - Quadtrees (UVA)

刘汝佳的代码特别简洁明了,第二段代码就是他的解法。

linh2006的博客 132

UVA297 四分树 Quadtrees 题解

题目链接: https://www.luogu.org/problemnew/show/UVA297 附几道推荐题目(先完成再食用此题效果更佳) https://www.luogu.org/problemnew/show/UVA122 https://www.luogu.org/problemnew/show/UVA699 https://...

ShineEternal的笔记小屋 377

UVa 297 Quadtrees

#include <cstdio> #include <cstring> #include <iostream>using namespace std;const int len = 32; const int maxn = 1024; char s[maxn]; int buf[len][len], cnt; void draw(const char* s, int &p, int r, int

more time 367

UVA 297 Quadtrees

题目链接:https://vjudge.net/problem/UVA-297 题意摘自《算法禁赛入门经典》 题目大意   略。 分析   先递归建树,然后 dfs 求答案。 代码如下 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 #define INIT() i...

weixin_30287169的博客 155

例题6-11 UVA297 Quadtrees(30行AC代码)

紫书刷题进行中,题解系列【GitHub|优快云】 例题6-11 UVA297 Quadtrees(30行AC代码) 题目大意 一个四叉树有三类节点,即父结点(P),黑色叶子(f),白色叶子(e) 现给出两个四叉树,求合并后黑色像素个数。 思路分析 输入为四叉树的先序序列,因此先序递归建树很容易,但关键在于如何合并两棵四叉树,计算黑色个数。 尝试1:想同步层次/先序遍历两个四叉树,然后统计黑色个...

努力做个书呆儿 307

uva 297 Quadtrees

题意:两个四叉树的合并问题,写得确实烂了点 #include<iostream> #include<algorithm> #include<queue> #include<cmath> #include<math.h> #include<string> #include<string.h> #include&...

qq_35752161的博客 216

UVA 297 Quadtrees

UVA-297题意:一个有1024个格子的像素块,给出 2 个完全四叉树的先序,求两个重叠后涂成黑色的格子数。其中e为白色,f为黑色,p为非叶子节点。 解题思路:首先要理解四叉树是如何染色的。如题目中所表示的,每个节点若存在子节点,处理方式为将当前的正方形四等分,然后用每科子树对应一个1 / 4的正方形去染色。 我们可以dfs遍历,当当前节点为p时读取它的四个子树,当前节点为e或f时染色并返回上

QzNarsh的博客 470
上一篇: UVa 10004 - Bicoloring
下一篇: UVa 548 - Tree
GooMaple
博客等级 码龄14年 79粉丝 197原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值