
算法基础
文章平均质量分 78
递归与递推,位运算,分治,排序,优化枚举
繁凡さん
只想当个小透明,就图一乐^q^,希望可以做出一些微小的贡献(目前研究方向:自然语言处理、深度学习中的对抗攻击、元学习,欢迎大佬们来与我交流^0^)
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
0x02.基本算法 — 递推与递归
目录递推与递归分治模拟计算机实现递归相应习题:0.AcWing 92. 递归实现指数型枚举(递归/循环+位运算)1.AcWing 93. 递归实现组合型枚举2.AcWing 94. 递归实现排列型枚举 (全排列)3.AcWing 95. 费解的开关4.奇怪的汉诺塔 (n盘3柱)4.1奇怪的汉诺塔++(n盘m柱)5.POJ 1845 Sumdiv(AcWing 97. 约数之和)(数论)(分治)6....原创 2020-04-19 19:29:11 · 2042 阅读 · 0 评论 -
CF448C Painting Fence(分治递归/DFS)难度⭐⭐⭐
题目链接有n块连着的木板,每个木板的高度为hih_ihi,你需要把这n块木板上色,每次 上色你可以选择竖着刷完一块木板,或者横着刷一个高度单位的连续的木板(不能中 间空着的不能跳跃),问最少需要刷几次。(注意相当于有一个宽1的刷子,每次可以刷无限长但是宽度只有1)52 2 1 2 1322 22考虑横着涂一次的情况,那么有两个显而易见的事实。这次涂色长度必须尽可能大。...原创 2020-03-07 12:25:39 · 387 阅读 · 0 评论 -
【算法】分治算法
分治算法:一、基本概念二、基本思想及策略三、分治法使用场景五、分治法的复杂性分析六、可使用分治法求解的一些经典问题(1)二分搜索(2)大整数乘法(3)Strassen矩阵乘法(4)棋盘覆盖(5)合并排序(6)快速排序(7)线性时间选择(8)最接近点对问题(9)循环赛日程表(10)汉诺塔)一、基本概念在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题...原创 2020-02-09 20:19:27 · 787 阅读 · 0 评论 -
【分治】P1228 地毯填补问题(多联骨牌覆盖棋盘问题)(递归,分治)难度⭐⭐⭐
P1228 地毯填补问题离散上讲了这个问题,如下图初看这个问题,似乎无从下手,于是我们可以先考虑最简单的情况,既n = 2时0 0 0 1 这时,无论公主在哪个格子,我们都可以用一块毯子填满继续考虑n = 4的情况我们已经知道了解决2 * 2的格子中有一个障碍的情况如何解决,因此我们可以尝试构造这种情况首先,显然可以将4 * 4的盘面划分成4个2 * 2的小盘面,其中一块已经存在一...原创 2020-03-30 22:57:26 · 513 阅读 · 0 评论 -
0x05.基本算法 - 排序
离散化因为语言种类太多了,而实际用到的语言只有n+m种,实际上对答案产生影响的只有n种科学家会的语言。所以对n个科学家会的语言直接进行离散化,将语言压缩到n种就行了。重载一下运算符排序得最大值即可。#include<iostream>#include<bits/stdc++.h>#include<algorithm>#include<cstdio>#include<cstring>#include<queue>#inc.原创 2020-05-22 21:56:50 · 536 阅读 · 0 评论 -
解题报告 - 牛客练习赛63 C - 牛牛的揠苗助长(货仓选址+二分)
链接:https://ac.nowcoder.com/acm/contest/5531/C来源:牛客网题目描述牛牛有一块长度大小为n的菜园,他首先对这块菜园从1到n进行了编号,每一块地分别为1号、2号…n号菜地,然后他往每块菜地中都种下了一些水稻,一开始,第i块菜地中的水稻高度均为a[i]个单位。然后我们知道水稻的生长周期都是n天,也就是说每逢n天水稻就会长高一个单位。但是不巧的是整个菜园中每一块菜地的生长周期都错开了,具体来说,第1天的时候第1块菜地中的水稻长高一个单位,第2天的时候第2块菜地中的水原创 2020-05-30 10:36:18 · 366 阅读 · 0 评论 -
八大排序算法合集 (归并排序、交换排序、插入排序、选择排序......)
内部排序,外部排序若待排序记录都在内存中,称为内部排序;若待排序记录一部分在内存,一部分在外存,则称为外部排序。注:外部排序时,要将数据分批调入内存来排序,中间结果还要及时放入外存,显然外部排序要复杂得多。排序算法的稳定性根据相同元素排序前后的顺序是否改变来确定一、归并排序递归实现 - > 自上向下非递归排序 - > 自下向上时间复杂度:O(NlogN)O(NlogN)O(NlogN)先分再合/* 将序列对半拆分直到序列长度为1*/void MergeSort_UptoDo原创 2020-06-22 17:44:13 · 514 阅读 · 0 评论 -
【位运算】解题报告:luoguP4310 绝世好题(位运算优化DP)
绝世好题原创 2020-06-22 22:58:53 · 391 阅读 · 0 评论 -
0x01.基本算法 — 位运算
《算法竞赛进阶指南》学习笔记原创 2020-04-18 18:42:34 · 3612 阅读 · 1 评论 -
解题报告:简单瞎搞题(bitset的应用)
链接:https://ac.nowcoder.com/acm/contest/5556/E输入51 22 33 44 55 6输出26备注:1≤n,li,ri≤1001 ≤ n , l_i , r_i ≤ 1001≤n,li,ri≤100先点我了解bitset先试一个样例21 21 23把其中的bitset输出#include<iostre...原创 2020-05-05 20:58:19 · 537 阅读 · 1 评论 -
【树的直径】解题报告: luogu P3629 [APIO2010]巡逻(树的直径,位运算成对变换,思维)
题目链接:P3629 [APIO2010]巡逻首先看题,从1号结点开始,全部遍历并回到1号结点会恰好经过所有的边两次,这样总长度为 2∗(n−1)2*(n-1)2∗(n−1)。那么如果建立一条路以后,由题意可知新道路必须经过恰好一次,也只能经过一次,所以新路从x到y形成一个环,这样就可以用新路的权值1来代替老路径中从x到y的路径1次,也就是说从x到y之间的路径在建立了新路以后只需要再经过一次就行了。所以我们要求最短,肯定要把整棵树上的最长链也就是树的直径省掉答案最优。所以当k = 1 时,我们找到最原创 2020-06-13 17:59:59 · 339 阅读 · 0 评论 -
CF1397B Power Sequence(大胆枚举)
CF1397B Power Sequence(大胆枚举)注意根据本题题意序列可以排序,那么我们肯定是排序以后的序列最后求的值最小,所以先排序。本题看上去数据范围比较大,但是我们可以直接枚举c,因为c的范围是指数级增长到1e14,实际复杂度并不高。总时间复杂度为O(n×1e14n)O(n\times\sqrt[n]{1e14})O(n×n1e14), 而3≤n≤1e53\le n\le 1e53≤n≤1e5,可以稳过#include<cstdio>#include<algori原创 2020-09-08 16:19:37 · 487 阅读 · 0 评论 -
【牛客每日一题】 4.13 Xorto(前缀异或和,枚举优化/映射)
链接:https://ac.nowcoder.com/acm/problem/14247来源:牛客网题目描述给定一个长度为n的整数数组,问有多少对互不重叠的非空区间,使得两个区间内的数的异或和为0。输入描述:第一行一个数n表示数组长度;第二行n个整数表示数组;1<=n<=1000,0<=数组元素<100000。1<=n<=1000,0<=数组元素...原创 2020-04-14 23:30:47 · 441 阅读 · 0 评论 -
P2119 魔法阵(优化枚举,数学运算优化)难度⭐⭐⭐★
P2119 魔法阵%%%#include<iostream>#include<stdio.h>#include<string.h>#include<algorithm>#include<queue>#include<math.h>#define ls (p<<1)#define rs (p&...原创 2020-04-01 21:59:45 · 326 阅读 · 0 评论