随笔分类 -  c++算法

c++算法
摘要:二进制状态压缩 取出整数n在二进制表示下的第k位: (n>>k)&1 取出整数n在二进制下的第0~k-1位 n&((1<<k)-1) 对整数n在二进制表示下的第k位赋值为1 n|(1<<k) 对整数n在二进制表示下的第k位赋值0 n&(~(1<<K)) 阅读全文
posted @ 2022-07-27 16:33 Aska0 阅读(26) 评论(0) 推荐(0) 编辑
摘要:区间dp 概述 顾名思义:区间dp就是在区间上进行动态规划,求解一段区间上的最优解。主要是通过合并小区间的 最优解进而得出整个大区间上最优解的dp算法。 核心思路 既然让我求解在一个区间上的最优解,那么我把这个区间分割成一个个小区间,求解每个小区间的最优解,再合并小区间得到大区间即可。所以在代码实现 阅读全文
posted @ 2022-07-27 16:31 Aska0 阅读(20) 评论(0) 推荐(0) 编辑
摘要:一、建树与维护 1、由于二叉树的自身特性,对于每个父亲节点的编号 i,他的两个儿子的编号分别是 2i 和 2i+1,所以我们考虑写两个 O(1) 的取儿子函数: inline int ls(int p){return p<<1;}//左儿子 inline int rs(int p){return p 阅读全文
posted @ 2022-07-27 14:44 Aska0 阅读(37) 评论(0) 推荐(0) 编辑
摘要:树形dp以及树形背包 树形dp 样题: 没有上司的舞会 https://www.luogu.com.cn/problem/P1352 题目描述 某大学有 n 个职员,编号为 1n。 他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。 现在 阅读全文
posted @ 2022-07-27 14:32 Aska0 阅读(123) 评论(0) 推荐(0) 编辑
摘要:树的直径 题目描述 树中两点间的不重复经过的边和点道路称为两点的路径,路径的长度(路径上所经边的长度和)称为两点的距离。圆的直径是一个圆的最长的一条弦,而树的直径是树中两点间最长的路径。通常用一个无序点对(x,y)表示一棵树的直径。 现在输入一个有n个结点的树,结点编号为1到n,假设结点1为根。试求 阅读全文
posted @ 2022-07-27 14:29 Aska0 阅读(121) 评论(0) 推荐(0) 编辑
摘要:## 快读 #define gc getchar inline ll read(){ ll a=0;int f=0;char p=gc(); while(!isdigit(p)){f|=p=='-';p=gc();} while(isdigit(p)){a=(a<<3)+(a<<1)+(p^48); 阅读全文
posted @ 2022-07-27 14:20 Aska0 阅读(60) 评论(0) 推荐(0) 编辑
摘要:简述 什么是树状数组呢,顾名思义就是树一样的数组,本质就是用数组模拟树形结构。 树状数组有什么用呢,树状数组可以实现单点更新,单点查询,区间查询和区间更新,维护的东西和线段树可以类比的,就是满足区间加法性质的属性,例如最值,和,gcd等。 树状数组可以干的东西线段树也能干,但线段树干的东西树状数组不 阅读全文
posted @ 2022-07-27 14:08 Aska0 阅读(54) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示