树
Gank_Wind
I AK IOI
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
“访问“美术馆
前言 今天学习了树形DP,用这道练练手 传送门 初拿到题有些棘手,因为不知道如何表示状态,再仔细一推,发现与树形背包相似,所以我们设dp[now][k] 表示以now为根结点时用了time分钟能获得的最大画数 如果now是展室,设s为now的画数,k为选取的画数,那么dp[now][5k]=∑k=1sdp[now][5∗k−5]\sum_{k=1}^s{dp[now][5*k-5 ]}∑k=1sdp[now][5∗k−5] 其中,time+5k<=m 即: for(int i=1;i<=a[原创 2020-10-04 22:14:12 · 233 阅读 · 0 评论 -
洛谷P5057简单题 题解
前言 这是我A的第一道省选题! 可它的难度是普及/提高- 传送门 题目大意:给定一个初始为0的序列,可以让某一段区间的数字反转,也可以询问某个点的值 学过树状数组的同学可能看出来了,这是一道树状数组区间修改,单点查询的变式,还没有学过的同学可以看看这篇博客树状数组 路人:你这不是骗阅读量吗 我:略略略略略略略略略略 但是要怎么反转一个数的值呢?用异或(这个符号:^) 异或的作用是当两个数值不同时为1,否则都为0 如: 0^0=0 0^1=1 1^0=1 1^1=0 不难看出,当0异或1时为1,1异或1时为0原创 2020-08-07 20:40:52 · 393 阅读 · 1 评论 -
初涉树状数组
前言 仍然是一种数据结构,实用性在线段树之下(一点点),难度在线段树以下。 什么是树状数组? 全称为Binary Indexed Tree (BIT),是一种能以O(lognlog_nlogn)的时间复杂度解决区间修改或查询问题的数据结构 一个树状数组如下图所示 如图,我们可以看出每一个BIT数组的元素的叶节点个数就等于此数二进制下 的最低位的1的位置,设这个位置为lowbit(x),则可以用x&-x来得到这个数 例如:lowbit(22)=2 22的二进制原码011010,正数的补码等于它的原创 2020-07-27 21:07:47 · 376 阅读 · 1 评论
分享