自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 牛客周赛77(CDEF)

考虑节点u,首先看它自己是不是关键节点,如果是那么cnt[u]初值为1,否则为0,因为他可以选自己,记dp[u]为子树u里面有多少个关键节点,那么cnt[u],还要加上他的所以儿子v的dp[v]两两相乘,这个也非常好算,直接边算dp边计数就可以了,cnt[u]+=2*dp[u]*dp[v],dp[u]+=dp[v],表示当前儿子于前面遍历到的所有节点的方案,再把这个儿子加到u里面,记得乘个2,这样可以保证不重不漏。按每一位考虑,假设当前考虑第i位,将所有在第i位上不为0的数用带权并查集合并就好了。

2025-01-19 20:59:10 212

原创 牛客周赛76(DEF)

贪心就好了,用堆来维护,每次取出最大的数,如果是偶数,并且有第一种操作的机会,那么就直接把它换成x/2,如果没有那就不可能再对它进行操作了,直接累加到答案里面就可以了,如果是奇数,那么就看有没有二操作,如果没有就没法对它进行操作了,累加到答案里面,否则就用一次机会将它减一就好了。显然如果k大于60直接输出1就好了,如果k==1直接输出n,设x为n的k分之一次方下取整,答案不是x就是x+1,c++可能会爆ll,用py就很好实现了(还是让ai转的py。

2025-01-12 21:00:08 318

原创 abc 388(DEG)

对于每个i维护一个b[i]表示,距离大于等于自身2倍的数的距离最少是bi,具体的说对于所有属于[i+b[i],n]的j满足a[j]>=2*a[i],然后用线段树去维护b数组的区间最大值,因为不涉及修改操作,所以用st表也是可行的,然后对于每一个查询l,r我们依然是二分答案,假如当前二分的长度是x,我们只需对[l,l+x-1]的b[i]数组查询最大值,表示对于这段区间来说,能和它匹配上的区间最近是多远,如果l+res<=r-x+1表面那个最近的可匹配区间在l,r的范围内,否则就不在。

2025-01-12 00:24:51 349

原创 单人训练O题

设ans[i]为包含0~i的路径有多少条,那么mex为i的路径就包含0~i-1但是不包含i,所以就是ans[i]-ans[i-1],所以把ans数组求出来就好了,我们按顺序加入每个节点,维护链的两个左右端点l,r然后每次ans[i]的答案就是s[l]*s[r],就是其子树的结点个数,加入点的时候维护一下l,r就行了,可以用lca或者是dfs序,我这里用的是lca。

2024-11-29 21:39:42 158

原创 牛客周赛 Round 50 E题解

【代码】牛客周赛 Round 50 E题解。

2024-07-09 16:12:57 363

原创 CF956(div2) EF题解

在考虑特殊球,假如我们把球被取出来的顺序当成一个排列,那么原本就是n-k个普通球的排列,而特殊球要随机的出现在n-k+1个空位当中,我们可以惊奇的发现特殊球的出现对普通球的归属并不影响,原本第奇数个普通球是Alice的,出现特殊球后第奇数个球仍然是Alice的,举个例子,第一个普通球是Alice的,第二个是Bob的,那么如果在他们中间出现任意多个特殊球,最后第二个球还是Bob的,所以特殊球对普通球所产生的贡献并不影响,因此可以单独考虑两者的贡献,普通球的贡献上面已经算过了接下来考虑特殊球的贡献。

2024-07-09 15:20:36 587

原创 div.3后三题题解

首先引入一个概念方便后续描述,就是对于一个连续的并且其中的某种颜色的灯只包含2个的区间称为封闭段,比如[1,1,2,2,3,3],为封闭段,而[1,2,3,4]不是,因为不是每种颜色都有两个,并且将不可被分成多个封闭段封闭段的称为最小封闭段,比如[1,1,2,2,3,3]就不是因为它可以分成[1,1],[2,2],[3,3]多个封闭段,但是[3,2,1,2,1,3]是最小封闭段。1,每个人都一定可以和不同分支的人组队,注意!他们也能和同样分支的人组队,只要不和上司组就行,为了描述的更加清楚,放一张图。

2023-12-22 21:28:13 543

原创 div.3前六题题解

第一眼看有点像分组背包,但后面发现比分组背包多了一个限制条件,所以没什么软用,还是得用状态压缩dp,f[i][j]表示第i天时,状态是j时的最大值,j用000到111的二进制数依次表示一个也没选到三个都选了,也就是0-7,状态转移方程f[i][j]=max(f[i-1][j],f[i-1][j-(1<<k)]+a[k][i]),k表示的是选哪一件事,因为一天只能选一件事,所以分别枚举,每个状态j,从三个里面取最大值,举个具体一点的例子,比如第i天选第2件事,且每件事都已经选了那么方程就是。

2023-12-22 18:27:14 463

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除