hihoCoder #1490 Tree Restoration 一直RE,求指导

论文解析之Image Restoration Using Very Deep Convolutional Encoder-Decoder Networks with Symmetric Skip Co 论文名: Image Restoration Using Very Deep Convolutional Encoder-Decoder Network with Symmetric Skip Connection   ------------------2016 NIPS 论文针对图像修复方向,提出了一种跳跃链接的残差网络,总体来说论文结构简单,不过有点意思,所以简单说一下: 阅读详情

题目如下,我自己还设计了两个测试样例,样例都通过了,但是提交一直RE,求大神指导。
我的思路是:
1. 从最底层叶子节点开始寻找兄弟节点,然后将多个兄弟节点合并成1个(比如讲6的父节点记作-5,并将6从叶子节点中删除,同时更新距离矩阵);
2. 当最底层所有的兄弟节点都合并完成之后,那么合并的集合跟上一层的非叶子节点是一一对应的;
3. 然后从左到右依次给叶子节点分配父节点,并进行子节点与父节点的合并(给底层叶子节点赋值,将父节点变成叶子节点,更新叶子节点数组与距离矩阵(即所有非0的距离都减1),并将树的层数减1)
4. 当树的深度变成1时,就结束,得到答案

这里写图片描述
这里写图片描述

题目给的
8 3 5
1 3 4
1
2 3 4
5 6 7 8
3 5 6 7 8
0 3 3 3 3
3 0 2 4 4
3 2 0 4 4
3 4 4 0 2
3 4 4 2 0
设计1
11 3 7
1 4 6
1
2 3 4 5
6 7 8 9 10 11
4 6 7 8 9 10 11
0 3 3 3 3 3 3
3 0 2 4 4 4 4
3 2 0 4 4 4 4
3 4 4 0 2 4 4
3 4 4 2 0 4 4
3 4 4 4 4 0 2
3 4 4 4 4 2 0
设计2
9 4 4
1 2 4 2
1
2 3
4 5 6 7
8 9
6 7 8 9
0 2 5 5
2 0 5 5
5 5 0 4
5 5 4 0
import java.util.Scanner;

public class Main {

    private static int N, M, K;
    private static int[] A, leaves, parents;
    private static int[][] depth, dis;

    public static void main(String[] args) {
        init();

        getAnswer();

        for (int i = 1; i <= N; i++)
            System.out.print(parents[i] + " ");
    }

    //求解函数
    private static void getAnswer() {
        int i, j, leavesIndex, brotherNum;
        int[] brothers = new int[100];
        while (M > 1) {//当深度==1,停止
            for (i = 0; i < A[M]; i++) {
                brotherNum = 0;
                leavesIndex = nodeToleavesIndex(depth[M][i]);
                if (leavesIndex == 101) continue;
                for (j = 0; j < K; j++) {
                    if (dis[leavesIndex][j] == 2)
                        brothers[brotherNum++] = leavesIndexToNode(j);
                }
                if (brotherNum > 0)
                    mergeBrothers(brothers, brotherNum, depth[M][i]);
            }
            mergeLastTwoLayers();
            M--;
        }
    }

    // 合并最后两层
    private static void mergeLastTwoLayers() {
        int i, j, length = 0, brother;
        int[] parentNodes = new int[100];
        //找出上一层中的所有非叶子节点
        for (i = 0; i < A[M - 1]; i++)
            if (!isLeaves(depth[M - 1][i]))
                parentNodes[length++] = depth[M - 1][i];


        j = 0;
        for (i = 0; i < A[M]; i++) {
            if (parents[depth[M][i]] == 101) {
                parents[depth[M][i]] = parentNodes[j];
                updateParent(parentNodes[j], depth[M][i]);
                j++;
            } else {
                brother = 0 - parents[depth[M][i]];
                parents[depth[M][i]] = parents[brother];
            }
        }

    }

    //父子节点合并之后的更新操作
    private static void updateParent(int parentNode, int node) {
        int i, leavesIndex;
        leavesIndex = nodeToleavesIndex(node);
        leaves[leavesIndex] = parentNode;
        for (i = 0; i < K; i++) {//更新距离,由于父节点到了上一层,因此将原节点到其他叶子节点的距离减1
            if (dis[leavesIndex][i] != 0) dis[leavesIndex][i]--;
            if (dis[i][leavesIndex] != 0) dis[i][leavesIndex]--;
        }
    }

    //是否是叶子节点
    private static boolean isLeaves(int node) {
        for (int i = 0; i < K; i++)
            if (node == leaves[i]) return true;
        return false;
    }

    //合并兄弟节点
    private static void mergeBrothers(int[] brothers, int brotherNum,
            int thisNode) {
        int i;
        for (i = 0; i < brotherNum; i++) {
            parents[brothers[i]] = 0 - thisNode;//将该节点的父节点记录为兄弟节点编号的负数
            updateBrothers(brothers[i]);
        }
    }

    //根据节点编号查找在叶子节点中的位置,因为距离矩阵记录的是叶子节点中的位置之间的关系
    private static int nodeToleavesIndex(int node) {
        for (int i = 0; i < K; i++)
            if (node == leaves[i]) return i;
        return 101;
    }

    //根据在叶子节点中的位置,找到对应的节点编号
    private static int leavesIndexToNode(int leavesIndex) {
        return leaves[leavesIndex];
    }

    // 兄弟节点合并之后的更新
    private static void updateBrothers(int node) {
        int i, j;
        int leavesIndex = nodeToleavesIndex(node);
        //下面两个for循环用来删除该节点在距离矩阵中的关系
        for (i = leavesIndex; i < K - 1; i++)
            for (j = 0; j < K; j++) {
                dis[i][j] = dis[i + 1][j];
            }
        for (i = leavesIndex; i < K - 1; i++)
            for (j = 0; j < K; j++) {
                dis[j][i] = dis[j][i + 1];
            }
        //这个for循环将该节点从叶子节点中删除
        for (i = leavesIndex; i < K - 1; i++)
            leaves[i] = leaves[i + 1];
        K--;//叶子节点数量减1
    }

    private static void init() {
        Scanner sc = new Scanner(System.in);

        N = sc.nextInt();
        M = sc.nextInt();
        K = sc.nextInt();
        A = new int[M + 1];
        parents = new int[N + 1];
        leaves = new int[K];
        depth = new int[M + 1][100];
        dis = new int[K][K];

        int i, j;

        for (i = 1; i <= N; i++)
            parents[i] = 101;
        parents[1] = 0;

        for (i = 1; i <= M; i++)
            A[i] = sc.nextInt();

        for (i = 1; i <= M; i++) {
            for (j = 0; j < A[i]; j++) {
                depth[i][j] = sc.nextInt();
            }
        }

        for (i = 0; i < K; i++)
            leaves[i] = sc.nextInt();

        for (i = 0; i < K; i++)
            for (j = 0; j < K; j++)
                dis[i][j] = sc.nextInt();
    }

}
【图像去噪】论文精读:Very Deep Convolutional Encoder-Decoder Networks with Symmetric Skip Connections(REDNet) 论文题目:Image Restoration Using Very Deep Convolutional Encoder-Decoder Networks with Symmetric Skip Connections —— 使用具有对称跳过连接的非常深的卷积编码器-解码器网络进行图像恢复NIPS 2016!REDNet!深度卷积Encoder-Decoder结构!对称跳跃连接!在本文中,我们提出了一个非常深的全卷积编解码框架,用于图像恢复,如去噪和超分辨率。 阅读详情

相关推荐

TexGen模型导出到ABAQUS的inp文件:如何快速修改纱线材料属性(避坑指南)

本文针对TexGen模型导出到ABAQUS的inp文件后纱线材料属性缺失或错误的问题,提供了高效的解决方案。文章详细解析了inp文件结构,指导用户如何手动定位并修改纱线材料属性,并提供了可批量处理的Python脚本,帮助用户快速、精准地完成材料参数赋值,有效提升复合材料仿真工作效率。

ice55的博客 602

Image Restoration Using Deep Convolutional Encoder-Decoder Networks with Symmetric Skip Connections

一、本文的主要贡献1. 卷积和反卷积对称网络结构的提出 A very deep network architecture, which consists of a chain of symmetric convolutional and deconvolutional layers, for image restoration is proposed in this paper. The con

Man 3945

深入解析UDS 0x19服务:DTC状态掩码与故障诊断实战

本文深入解析了UDS诊断协议中的核心0x19服务(ReadDTCInformation),重点拆解了DTC状态掩码(DTCStatusMask)的八个状态位及其在故障生命周期中的联动逻辑。通过实战案例,详细说明了从故障发生、确认到清除的全过程,并介绍了如何利用该服务进行深度诊断,包括读取扩展数据(如冻结帧)和避免常见开发误区,是理解汽车ECU故障管理机制的关键。

weixin_29248313的博客 323

降噪、超分辨率RED-Net之Image Restoration Using Very Deep Convolutional Encoder-Decoder Networks with Symmetr

使用具有对称跳过连接的非常深卷积编码器 - 解码器网络的图像恢复 Abstract 在本文中,我们提出了一种非常深的完全卷积编码 - 解码框架,用于图像恢复,如去噪和超分辨率。该网络由多层卷积和反卷积运算符组成,学习从损坏图像到原始图像的端到端映射。卷积层充当特征提取器,捕获图像内容的抽象,同时消除噪声/损坏。然后使用解卷积层来恢复图像细节。我们建议采用跳跃层连接对称地连接卷积层和反卷积层,训...

澍yeah的博客 8499

开源实战 | 基于SolidWorks与Matlab的并联索驱机器人轨迹规划全流程

本文详细介绍了基于SolidWorks与Matlab的并联索驱机器人轨迹规划全流程,涵盖从基础概念到实战技巧的各个环节。通过SolidWorks建模、Matlab运动学实现及轨迹优化策略,展示了如何实现高精度轨迹规划,适用于摄影、医疗等领域的机器人应用。

weixin_28331555的博客 404

论文理解【LLM-OR】—— 【PaMOP】Guiding Large Language Models in Modeling Optimization Problem

针对 LLM 求解运筹优化任务,PaMOP 通过约束划分树分离子问题,实现复杂优化问题的分块建模,并结合求解器反馈与反向翻译一致性检查迭代纠错,降低子任务复杂度,提升可执行率与建模准确性。

佚失的诗篇 1007

图像恢复论文——[RED-Net, NIPS16]Image Restoration Using Very Deep Convolutional Encoder-Decoder Networks wi

知乎同名账号同步发表 目录一、架构二、main contribution三、一些讨论四、训练&模型功能&一些比较五、小结 一、架构 论文全称:Image Restoration Using Very Deep Convolutional Encoder-Decoder Networks with Symmetric Skip Connections 其实就是conv和deconv,外加对称的skip connection。作者表示每两层就会有一个skip connection。 作者的意思

umbrellalalalala的博客 949

Qt5.14.2+VS2017开发环境搭建全流程(含插件配置与项目测试)

本文详细介绍了Qt5.14.2与VS2017开发环境的完整搭建流程,包括软件安装、插件配置、环境变量设置以及项目测试。特别针对实际开发中常见的配置问题提供解决方案,帮助C++开发者快速搭建高效的Qt开发环境。

weixin_28419039的博客 217

基于深度卷积神经网络和跳跃连接的图像去噪和超分辨

Image Restoration Using Very Deep Convolutional Encoder-Decoder Networks with Symmetric Skip Connections 作者:Xiao-Jiao Mao、Chunhua Shen等 本文提出了一个深度的全卷积编码-解码框架来解决去噪和超分辨之类的图像修复问题。网络由多层的卷积和反卷积组成,学习一个从受...

weixin_30681615的博客 1830

[QT笔记]QTableView与QTableWidget表头设置实战对比

本文深入对比了QT开发中QTableView与QTableWidget在表头设置上的核心差异与实践方法。QTableWidget提供开箱即用的便捷API,适合快速开发;而QTableView遵循模型-视图架构,表头数据由模型管理,虽设置稍复杂但灵活性与扩展性更强。文章通过实战代码示例,详细解析了两种组件的适用场景、性能考量及常见避坑指南,帮助开发者根据项目需求做出高效选择。

weixin_29018335的博客 322

第一届“龙信杯”电子数据取证竞赛Writeup

第一届“龙信杯”电子数据取证竞赛Writeup

toto的博客 1万+

Image Restoration Using Very Deep Convolutional Encoder-Decoder Networks with Skip Connections

Image Restoration Using Very Deep Convolutional Encoder-Decoder Networks with Symmetric Skip Connections Papers: Nips:https://papers.nips.cc/paper/6172-image-restoration-using-very-deep-convolutional-...

qq_42192910的博客 920

深度学习实战102-基于深度学习的网络入侵检测系统,利用各种AI模型和pytorch框架实现网络入侵检测

在明确了研究背景后,我们需要设定明确的项目目标。本项目的核心目标是开发一个高精度、低延迟的网络入侵检测系统检测准确率:达到95%以上,确保系统能够有效识别各类已知和未知的入侵行为。响应时间:控制在毫秒级范围内,以实现实时监测和快速响应。模型鲁棒性:在面对不同类型的网络环境和攻击手法时,系统需保持稳定的性能输出。可扩展性:系统设计需考虑未来可能面临的新型威胁,便于后续升级和维护。

微学AI的博客 1792

[agc005c]Tree Restoring

前言简单题,数据范围可能是吓人的。题目大意给你每个点到最远点的距离,求是否存在这样的一颗树。简单一个性质是每个点的最远点一定是直径的端点。 然后我们找出直径长度,要求能构造出这条直径(每种距离都有2个点,当然直径中心只需要1个)。 然后其余点都可以直接接在直径上,因此到最远点的距离不能少于直径长度的一半。 满足就能构造。#include<cstdio> #include<algorithm>

不来也不去的一只失忆蝴蝶 754

ssm框架搭建

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

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

python怎么实现图像去噪_基于深度卷积神经网络和跳跃连接的图像去噪和超分辨...

Image Restoration Using Very Deep Convolutional Encoder-Decoder Networks with Symmetric Skip Connections作者:Xiao-Jiao Mao、Chunhua Shen等本文提出了一个深度的全卷积编码-解码框架来解决去噪和超分辨之类的图像修复问题。网络由多层的卷积和反卷积组成,学习一个从受损图像到原始...

weixin_39726131的博客 1136

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

hihoCoder #1490 : Tree Restoration 微软2017在线笔试题

题意 给你一棵树,已知其中全部节点的编号(1~n),节点所在层次,节点在该层从左到右是第几个节点,叶子节点编号以及叶子节点间的距离,但不知节点之间的边信息,要求重构这棵树,输出每个节点的父亲节点。 思路 我们考虑如果先不使用其他信息,只使用层次遍历的信息以及叶子节点编号的信息可以确定下来哪些节点的父亲节点 实际上我们可以找到最靠左的叶子节点,即位于某层最左边所在的层次最小的叶子节点,显然这样的叶子节

luke2834的专栏 1639

[hihocoder1490]Tree Restoration恢复树

问题描述题目2 : Tree Restoration 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 There is a tree of N nodes which are numbered from 1 to N. Unfortunately, its edges are missing so we don’t know how the nodes are

silent56_th的博客 708

Tree Restoration(猜测一棵树的合法性)

原题:Gym - 101755F 题意: 有n个结点,给出这个结点下面子树的所有结点,问有没有这样的树,如果有,输出所有边 解析: 把给出的条件先记录下来,然后靠这些条件把树建起来,然后bfs这棵树,把bfs的条件和给出的条件对比即可 这样就不用自己去想有哪些bug了 代码: //从下往上建图(相邻结点),从上往下bfs(只要是上下),检测前后(总关系)是否矛盾 ////...

QAQ 640

【文章阅读】【超解像】--Image Restoration Using Convolutional Auto-encoders with Symmetric Skip Connections

【文章阅读】【超解像】–Image Restoration Using Convolutional Auto-encoders with Symmetric Skip Connections RED-Net:Residual Encoder-Decoder Networks 论文链接:https://arxiv.org/abs/1606.08921 参考code: https://github.c...

happyday_d的博客 2561

GYM 101755 F.Tree Restoration(拓扑排序)

Description 给出以第iii个点为祖先节点的点集,问是否存在nnn个点的树满足条件 Input 第一行一整数nnn表示点数,之后nnn行每行首先输入一整数cicic_i表示以第iii个点为祖先节点的点有cicic_i个,然后输入这cicic_i个点的编号(1≤n≤1000,0≤ci≤n)(1≤n≤1000,0≤ci≤n)(1\le n\le 1000,0\le c_i\le n) ...

ZSQ 505

Gym - 101755F F. Tree Restoration

F. Tree Restoration time limit per test:2.0 s memory limit per test:256 MB input:standard input output:standard output There is a tree of n vertices. For each vertex a list of all its successors ...

长路漫漫 唯剑作伴 392

hihoCoder 1476 矩形计数 dp

我们通过dp来求解这个问题。我们定义dp(i,j)表示前以(1, 1)作为左上角,(i, j)作为右下角构成的子矩阵所具有的矩形个数。 递推的时候,基于简单的容斥原理思想,不难发现:dp(i,j) = dp(i-1, j) + dp(i, j-1) - dp(i-1, j-1) + 用(i, j)作为右下角的子矩形个数 递推式的前三项的运算得到的是不用(i, j)作为右下角的子矩形个数,而最后一项则需要稍微复杂一些的计算得到。

luke2834的专栏 1413

【分析】AGC005 Tree Restoring

分析: 非常简单的水题 根据树的直径的性质(每个点的最远点为直径的某一端点) 1、min{ai}=⌊max{ai}+12⌋min\{a_i\}=\lfloor \frac {max\{a_i\}+1} {2}\rfloormin{ai​}=⌊2max{ai​}+1​⌋ 2、除了min{ai}min\{a_i\}min{ai​},其余所有数必须出现至少2次。 3、当max{ai}max\{a_i\}...

氧化钠的博客 445

【hihocoder】Font Size(微软2016.4校招笔试题)

题意:给出一些段落,每个段落有一些字,一页有w列,h行,求最大字体大小是多少? 解题思路:二分font size大小。由于w 和 h限定,所以font size最大为min(w, h) 易错点:首先应该枚举出行数,然后判断每页可以放多少行,注意,字不能跨页。 #include #include #include #include #include using namespace

小do在努力 1505

Object Contour Detection with a Fully Convolutional Encoder-Decoder Network

CVPR 2016 使用 CNN 网络进行 物体轮廓提取Object Contour Detection with a Fully Convolutional Encoder-Decoder Network我们将轮廓检测问题看做一个图像二值标记问题。 We formulate contour detection as a binary image labeling problem where

cv_family_z的博客 4656
上一篇: Java内存区域与内存溢出异常——对象
下一篇: Error Code: 1290. The MySQL server is running with the --secure-file-priv op
大浪中航行
博客等级 码龄12年 46粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值