ICode9

精准搜索请尝试: 精确搜索
  • 八皇后问题(递归算法)2021-03-14 17:57:06

    想必八皇后问题,学过C++的老哥都已经有所了解了: 题目是:在一个8*8的棋盘上,放置8个皇后,使他们分别在不同行不同列不同对角线,问:有多少种情况,并求出每种情况。 其实,这道题最简单的方法就是递归调用了,而递归也就是不断地调用自身,直到终止条件,也就是下面代码中的if(i==8);至此,一种情况

  • 刷题之二叉树之字形变换2021-03-12 18:04:01

    题目描述:给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)。 例如:给定的二叉树是{3,9,20,#,#,15,7},该二叉树之字形层序遍历的结果是 [ [3], [20,9], [15,7] ] 解题思路:二叉树的层序遍历要用队列,二叉树的前中后序遍历要用堆栈,当然也可以用

  • 牛客竞赛第六场 贪吃蛇 BFS解法与DFS解法 迷宫问题2021-03-12 13:57:43

    贪吃蛇 迷宫问题 链接[牛客网] ( https://ac.nowcoder.com/acm/contest/9986/I ) 题目描述 无限增长的贪吃蛇小游戏: 在一个n*m的迷宫中,有一条小蛇,地图中有很多围墙,猥琐的出题者用“#”表示,而可以走的路用“.”表示,小蛇他随机出生在一个点上,出生点表示为“S”,他想抵达的终点表

  • 求二叉树宽度2021-03-11 19:34:23

    题目 一个二叉树采用二叉链表存储,设计一个函数计算这个二叉树的宽度 解题思路 采用层次遍历,将每一个结点的信息存储在数组中,结点的信息包括这个结点的层数,以及结点的左右子树,数据类型(为char型字符),然后对这个数组进行遍历,层号数目最多的即为该二叉树最大宽度处的层号,然

  • On Average They're Purple 构造2021-03-09 15:33:59

    On Average They're Purple 构造 题目大意: 定义 \("color \,change"\) 表示两条边有一个公共节点,颜色不一样。 给你一张图,Alice 可以给图上的边上色,红色或者是蓝色,Alice 上色完毕之后,Bob可以选择一条路从1开始到n,他可以选择任意一条路,当时要求减少 \("color \,change"\) 的次数

  • 【题解】力扣995. K 连续位的最小翻转次数2021-03-08 18:34:23

    995. K 连续位的最小翻转次数 题目来源 995. K 连续位的最小翻转次数 思路 方法一、 差分思想 用差分思想来计算当前数字需要翻转的次数。开一个差分数组\(diff[A.length+1]\)来维护,多开1位,减少溢出判断 A的翻转次数为差分数组\(d[i]\)的累加和 当需要翻转时,只改变了\(diff[i]\)

  • 数据结构专题-05 二叉树22021-03-05 19:58:28

    example https://pintia.cn/problem-sets/994805342720868352/problems/994805365537882112 #include <iostream> #include <queue> #define maxSize 10 using namespace std; typedef struct BTNode { int left = -1; int right = -1; }BTNode; void arr2BT

  • Codeforces 1272F. Two Bracket Sequences(BFS+DP+路径记忆)2021-03-04 22:03:43

    Codeforces Round #605 (Div. 3) 题解全文见: https://blog.csdn.net/qq_43461168/article/details/114377042 F. Two Bracket Sequences 题意:给出两个括号串,求一个最短的括号串,使得这两个串都是他的子序列。 思路:参考官方题解。BFS+DP。用dp[i][j][d]表示包含s1的前i个,s2的

  • 513. 找树左下角的值2021-03-02 15:01:46

    给定一个二叉树,在树的最后一行找到最左边的值。 题解:使用层次遍历 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} *

  • 「USACO 2021.1 Platinum」Sum of Distances2021-03-02 12:32:59

    「USACO 2021.1 Platinum」Sum of Distances 设在\(G_i\)中\(j_i\)点可行的距离集合为\(D_{j_i}\) 注意到一个点的\((j_1,j_2,\ldots,j_k)\)的\(dis\)可以用如下方式确定 \(\displaystyle dis(j_1,j_2,\ldots,j_k)=\min\{\bigcap D_{j_i}\}\) 而\(D_{j_i}\)有一个简单的描述方法:

  • DFS/BFS+二分学习笔记2021-02-28 09:33:25

    DFS 介绍:深度优先搜索是搜索的手段之一,它从某个状态开始,不断的转移状态直至无法转移,然后不断回到上一个状态,深度优先搜索从最开始的状态出发,遍历所有可以达到的状态.由此可以对所有的状态进行操作,或列举出所有的状态; 例题讲解: 问题: Due to recent rains, water ha

  • [CF545E] Paths and Trees - 最短路2021-02-26 14:36:20

    [CF545E] Paths and Trees - 最短路 Description 给定一张带正权的无向图和一个源点,求边权和最小的最短路径树。 Solution 跑最短路的时候,转移时尽量让当前边的边权最小 记录一下前驱,最后连出来就是答案 #include <bits/stdc++.h> using namespace std; #define int long long co

  • leetcode116. 填充每个节点的下一个右侧节点指针2021-02-21 09:33:23

    题目 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NUL

  • 运输问题(费用流,网络流24题)2021-02-18 19:32:35

    题意 有 \(m\) 个仓库和 \(n\) 个零售商店。第 \(i\) 个仓库有 \(a_i\) 个单位的货物;第 \(j\) 个零售商店需要 \(b_j\) 个单位的货物。货物供需平衡,即\(\sum_{i = 1}^m a_i = \sum_{j=1}^nb_j\)。 从第 \(i\) 个仓库运送每单位货物到第 \(j\) 个零售商店的费用为 \(c_{ij}\)。 对

  • 分配问题(费用流,二分图最优匹配)2021-02-18 11:01:05

    题意 有 \(n\) 件工作要分配给 \(n\) 个人做。 第 \(i\) 个人做第 \(j\) 件工作产生的效益为 \(c_{ij}\)。 试设计一个将 \(n\) 件工作分配给 \(n\) 个人做的分配方案。 对于给定的 \(n\) 件工作和 \(n\) 个人,计算最优分配方案和最差分配方案。 思路 二分图最优匹配模板题 设立虚

  • 有线电视网络(最小割)2021-02-18 09:32:19

    题意 给定一张无向图,求最少去掉多少个点,可以使图不连通。点数\(N \leq 50\) 思路 这里引用李煜东《算法竞赛进阶指南》给出的方法。 若无向图不连通,则图中必有两个点不连通,但这两个点是未知的。因此可以枚举源点\(S\)和汇点\(T\),然后求去掉多少个点可以使得\(S\)和\(T\)不连通。答

  • AcWing 148. 合并果子(贪心 + 二叉堆 + Huffman树)2021-02-17 18:31:16

    题目链接 在一个果园里,达达已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。 达达决定把所有的果子合成一堆。 每一次合并,达达可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。 可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。 达达在合并果

  • 最优标号(最小割,位运算)2021-02-16 18:02:08

    题意 思路 首先分析一下边权是如何计算的,边权等于两点的异或值,由于异或是按位计算,不同位之间是独立,因此我们可以单独看一位,只要每一位的答案最小,然后将这些位的答案拼起来,就是最终的答案。 每一位的数值非\(0\)即\(1\),因此可以划分成两个集合。对于已经知道点权的点,如果是\(0\),就

  • 猪(最大流,建图)2021-02-15 20:02:09

    题意 思路 这道题的建图是这样的,每个顾客作为流网络中的点。并设立虚拟源点\(S\)和虚拟汇点\(T\)。 对于一个顾客,考察每个他能开启的猪圈,如果该猪圈之前没用过,则源点\(S\)向他连容量是该猪圈起始猪数的边。如果该猪圈之前用过,则从上一次用这个猪圈的顾客向他连一条容量是\(\infty

  • 企鹅游行(最大流,拆点,枚举)2021-02-15 17:33:14

    题意 思路 将企鹅个数看作流量。 考虑转移方式,如果两块浮冰之间距离在企鹅跳跃距离以内,那么这两块浮冰之间就是可以互相转移的,因此可以互相连容量是\(\infty\)的边。 由于每块浮冰都有跳跃次数限制,因此考虑拆点,拆成入点和出点,入点向出点连容量大小等于跳跃次数限制的边。 设置虚

  • 餐饮(最大流,拆点,三分图)2021-02-15 16:34:59

    题意 有\(n\)头奶牛,每头奶牛都有喜欢的食品和饮料。每头牛只能吃一种食品、喝一种饮料,每种食品、饮料都只能使用\(1\)次。 问最多能让多少头牛得到自己喜欢的食品、饮料。 思路 因为是奶牛匹配食品、奶牛匹配饮料,因此将奶牛放在中间。 设置源点\(S\),向每款食品连容量是\(1\)的边,原

  • 上下界可行流2021-02-14 20:34:40

    无源汇上下界可行流 模型描述 在流网络中,每条边的流量范围不再是\([0, c_i]\),而是\([down_i, up_i]\),同时还要满足流量守恒。求一个可行流。 建模 我们要想办法转变为一般的最大流问题。 考虑将容量上界和下界分别减去\(down_i\),即可行流需满足\(0 \leq f'_i \leq up_i - down_i\)

  • 圆桌问题(最大流,二分图,网络流24题)2021-02-14 12:01:12

    题意 \(m\)个单位,每个单位有\(r_i\)个代表。\(n\)个桌子,每张桌子最多可容纳\(c_i\)个人。 同一张桌子不能有两个代表是来自同一个单位的。 求是否能有符合要求的排座方案。 思路 二分图裸题。从数量关系入手。 建立超级源点\(S\)和\(T\),从\(S\)向每个单位连容量是\(r_i\)的边,从每

  • 可持久化可并堆优化k短路2021-02-13 12:57:08

    问题 对于带权有向图,定义路径的长度为经过的边的权值之和。两条路径不同当且仅当经过边的顺序不同。给一个带权有向图 G G G 以及起点和终点 s

  • 剑指 Offer 37. 序列化二叉树(前序遍历,后序遍历,层次遍历)2021-02-12 21:33:20

    2021年02月12日 周五 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】 本文目录 1. 问题简介2. 题解2.1 前序遍历(或后序遍历)2.2 层序遍历 参考文献 1. 问题简介 剑指 Offer 37. 序列化二叉树 2. 题解 2.1 前序遍历(或后序遍历) 前序遍历在反序列化时应用递归比较简单,后序遍

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有