![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树
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 · 117 阅读 · 0 评论 -
洛谷P5057简单题 题解
前言这是我A的第一道省选题!可它的难度是普及/提高-传送门题目大意:给定一个初始为0的序列,可以让某一段区间的数字反转,也可以询问某个点的值学过树状数组的同学可能看出来了,这是一道树状数组区间修改,单点查询的变式,还没有学过的同学可以看看这篇博客树状数组路人:你这不是骗阅读量吗我:略略略略略略略略略略但是要怎么反转一个数的值呢?用异或(这个符号:^)异或的作用是当两个数值不同时为1,否则都为0如:0^0=00^1=11^0=11^1=0不难看出,当0异或1时为1,1异或1时为0原创 2020-08-07 20:40:52 · 240 阅读 · 1 评论 -
初涉树状数组
前言仍然是一种数据结构,实用性在线段树之下(一点点),难度在线段树以下。什么是树状数组?全称为Binary Indexed Tree (BIT),是一种能以O(lognlog_nlogn)的时间复杂度解决区间修改或查询问题的数据结构一个树状数组如下图所示如图,我们可以看出每一个BIT数组的元素的叶节点个数就等于此数二进制下的最低位的1的位置,设这个位置为lowbit(x),则可以用x&-x来得到这个数例如:lowbit(22)=222的二进制原码011010,正数的补码等于它的原创 2020-07-27 21:07:47 · 267 阅读 · 1 评论