ICode9

精准搜索请尝试: 精确搜索
  • 算法提高课 第二章 搜索之DFS2022-08-18 17:00:34

    一、DFS之连通性模型 1112. 迷宫 #include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N = 110; int T,n; char g[N][N]; int sx,sy,ex,ey; int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1}; bool st[N][N],f; void d

  • [复习#2022-8-17]基础搜索(1)2022-08-17 18:33:52

    DFS (来自OIWIKI)在搜索算法中,该词常常指利用递归函数方便地实现暴力枚举的算法 那我们可以尝试一下: 先写出递归: int xxx(int x,......) { if(边界到了) { ...... } else return xxx(x+1,......); } 再把else部分改成暴力 int xxx(int x,......) { if(

  • [AcWing 1118] 分成互质组2022-08-17 18:03:21

    DFS 点击查看代码 #include<bits/stdc++.h> using namespace std; typedef long long LL; const int N = 50 + 10; int n; int a[N]; int len, ans = 1e9; vector<int> g[N]; // 判断数字y能否放到第k组 bool inline check(int k, int y) { for (auto& x : g[k])

  • 搜索细节2022-08-17 17:00:52

    #include<iostream> #include<math.h> using namespace std; int x[20],n,k; bool isprime(int n){ int s=sqrt(double(n)); for(int i=2;i<=s;i++){ if(n%i==0)return false; } return true; } int rule(int choose_left_num,int alr

  • leetcode131-分割回文串2022-08-17 13:31:38

    分割回文串 dp+回溯 先通过dp记录子字符串是否为回文串,dp[i][j]表示从i开始到j结束的字符串是否为回文串。注意,i的遍历要从后往前。 然后从0开始进行dfs。在dfs中,找出所有以k为起始字符的回文子串,然后加入路径中,继续进行dfs,直到k == n为止 class Solution { List<List<Strin

  • *Codeforces Round #766 (Div. 2) C. Not Assigning(dfs)2022-08-16 21:33:38

    https://codeforces.com/contest/1627/problem/C 给你一个n个顶点的树,顶点从1到n,边从1到n-1。树是没有圈的连通无向图。你必须给树的每条边分配整数权重,这样得到的图就是一个素数树。 素数树是指由一条或两条边组成的每条路的重量都是素数的树。一条路径不应该访问任何顶点两次。

  • 【复习】搜索2022-08-16 13:30:54

    Cleaning Robot 数独游戏 城市距离 Bloxorz I 部落卫队 Weather Forecast 生日蛋糕 Best Sequence Children of the Candy Corn Paid Roads Description 给出一张 \(n\) 个点 \(m\) 条边的有向图。对于每条边 \((a, b)\),如果之前经过 \(c\) 点,那么费用为 \(p\),否则为 \(r\)。求 \(

  • luoguP3521 [POI2011]ROT-Tree Rotations【线段树】2022-08-15 01:31:16

    你要写热,就不能只写热。 要写酷暑,写骄阳,写他人耳闻便生恐的炙烤和炎灼。 要写白日出门一刻便肤色黝黑,背心透彻。 写求雨心切,写出行伞遮。 写夜晚不停的风扇和蝉聒。 写鸡蛋落地便熟,流水转眼耗涸。 再写千家万户空调响,西瓜冰可乐。 直至最后,才猛然起身,把浑身上下的黏腻腻,涓涓水冲

  • CF 1600~1800 思维题泛做2022-08-13 20:33:35

    CF 1592C Bakry and Partitioning 给定一棵 \(n\) 个节点,每个节点有点权的树,最多拆成 \(k\) 个连通块,问是否有方案使得所有联通块的异或和相等。 \(n,k \le 10^5,a_i \le 10^9\) \(\color{Blue}{1700}\) 对于异或,存在重要性质 \(x\, \text{xor}\, x = 0\)。 设所有数的异或和

  • dfs序 括号序 欧拉序 树上莫队 虚树建立 傻傻分不清2022-08-13 18:33:56

    括号序 进加一次,出加一次,显然最后得到的序列只有 \(2n\) 个点。 void dfs(int x) { in[x]=++tot; for(y) dfs(y); out[x]=++tot; } 显然我们希求将树上路径表示为区间,然后用莫队抑或是其它数据结构维护。 对于 \(y\in T_x\) 的情况就是上图,我们发现只要取 \([in_x,in_y]\)

  • DFS记忆化搜索--Divider & Conquer + Hashmap(数字三角形)2022-08-13 12:34:17

    记忆化搜索是DP的一种实现方式,等价于动态规划 一个经典的例子:数字三角形 给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如

  • CF1580E Tree Calendar2022-08-11 16:02:44

    前言 被这道题虐暴了…… 正文 题目大意:有一棵 \(n\) 个节点,以 \(1\) 为根的树,你求出它的 dfs 序 \((a_1,...,a_n)\),每次操作可以: 选择最小的 \((a_u,a_v)\),满足 \(u\) 与 \(v\) 有有向边相连且 \(a_u<a_v\),并交换 \(a_u,a_v\)。 现在知道 \(k\) 次操作以后的 \(a_i\),请求出 \(k

  • CF525D Arthur and Walls2022-08-11 16:01:05

    https://www.luogu.com.cn/problem/CF525D搜索,DFS染色黄色题 思路 贪心+DFSDFS染色,算法其实很好想,考虑哪些*∗点是必须被替换的: 通过观察,我们发现,一个*点要被替换,当且仅当有一个包含它的2×2的矩阵中除它之外全是..点(当我们已经将其他需要替换的*∗点替换掉时) 证明: 当一个*点联

  • LeetCode130 被围绕的区域(dfs)2022-08-11 13:02:28

    LeetCode130 被围绕的区域 class Solution: def solve(self, board: List[List[str]]) -> None: """ Do not return anything, modify board in-place instead. """ m, n = len(board), len(board[0])

  • 天下第一2022-08-10 23:04:32

    P5635 【CSGRound1】天下第一 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 误区:第一次记录用的数组开三层,分别表示x,y,和第几回合的最终答案(分别代表谁赢),但空间始终过大了 第三层可以不用,因为对于某两个连续的回合(1,2     3,4)只可能有一个能赢,所以完全不需要第三层 对于平局的

  • P2014 [CTSC1997] 选课 -树形dp2022-08-10 22:34:32

            #include <bits/stdc++.h> #define debug(x) std::cerr << "[" << __LINE__ << "]: " << #x << " = " << x << "\n" using i64 = long long; const int N = 300 + 5;

  • 快速求树中某个节点的k级祖先2022-08-10 21:35:13

    问题如题目所示。 方法有很多,本文说三种: 树上倍增/LCA魔改 O(n logn) 预处理得到fa数组,倍增向上跳跃,求祖先即可。 int fa[N][21],dep[N]; void dfs_lca(int u,int father){ dep[u]=dep[father]+1; fa[u][0]=father; for(int i=1;(1<<i)<=dep[u];i++) fa[u][i]

  • 倍增,DFS序,欧拉序和树的一些知识2022-08-10 20:32:29

    倍增 定义 倍增法,顾名思义就是翻倍. 它能够使线性的处理转化为对数级的处理,大大地优化时间复杂度 这个方法在很多算法中均有应用,其中最常用的是 RMQ 问题和求LCA,无修改的路径信息。 路径最小值 注意:路径上的信息需要可以合并,例如求最值 const int N = 201000; const int LOGN =

  • 1103. Integer Factorization (30)-PAT甲级真题(dfs深度优先)2022-08-08 22:04:42

    The K-P factorization of a positive integer N is to write N as the sum of the P-th power of K positive integers. You are supposed to write a program to find the K-P factorization of N for any positive integers N, K and P. Input Specification: Each input f

  • Cow Picnic S2022-08-07 21:03:24

    P2853 [USACO06DEC]Cow Picnic S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 以每一头牛为起点开始一遍dfs,每路过一个点那么当前的点nums值+1 所有点中nums值为牛的总次数的点代表可以 每次dfs时注意要将vis数组清空 // 2 4 4 // 2 // 3 // 1 2 // 1 4 // 2 3 // 3 4 // htt

  • 构造题与欧拉回路2022-08-07 15:00:49

    欧拉回路与欧拉路径 (有向图/无向图的)欧拉路径是一条路径,满足其经过所有边恰好一次。欧拉回路是起点和终点相同的一条欧拉路径。欧拉通路是起点和终点不同的一条欧拉路径。 有向图存在欧拉回路:将边看成无向边后图联通,且所有点入度均等于出度。 有向图存在欧拉通路:将边看成无向边

  • LeetCode 90 Subsets II 回溯2022-08-07 05:00:09

    Given an integer array nums that may contain duplicates, return all possible subsets (the power set). The solution set must not contain duplicate subsets. Return the solution in any order. Solution 如何处理相同的子集:先把 \(vector\) \(sort\) 一下,然后在 \(ans\)

  • ABC 263.C - Monotonically Increasing(dfs)2022-08-06 23:31:31

    递归实现组合型枚举 Acwing原题:https://www.acwing.com/activity/content/19/ 从 1∼n 这 n 个整数中随机选出 m 个,输出所有可能的选择方案。 输入格式 两个整数 n,m ,在同一行用空格隔开。 输出格式 按照从小到大的顺序输出所有方案,每行 1 个。 首先,同一行内的数升序排列,相邻

  • 目录2022-08-06 20:07:30

    一:基础算法 快速排序(求第k小的数) 归并排序(逆序对数量) 高精度 前缀和&差分 双指针 贪心 递推 递归 二分 倍增 位运算 二:数据结构 链表 单调栈 单调队列 哈夫曼树 堆 ST表 并查集 树状数组 线段树 字典树(trie树) 哈希表 笛卡尔树 基环树 平衡树 三:搜索 简单DFS 简单BFS Flood Fill 剪

  • 2021 ecfinal (ICPC Asia East Continent Final)2022-08-04 03:00:22

    链接:2021 ICPC Asia East Continent Final 三题铁,四题罚时少银,罚时多铜 A. DFS Order 以1为根求树上每个点的最小dfs序和最大dfs序,一个点的最小dfs序是该点深度,用\(cnt_i\)表示以\(i\)这个点为根的树上点的个数,一个点的最大dfs序是\(n+1-cnt_i\)。 E. Prof. Pang and Poker 三个人

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

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

ICode9版权所有