您现在的位置是:主页 > news > 海南网站制作/新闻类软文

海南网站制作/新闻类软文

admin2025/5/25 11:56:06news

简介海南网站制作,新闻类软文,政府网站建设和管理总结,织梦模板安装详细教程bzoj1483: [HNOI2009]梦幻布丁 每个颜色建一颗线段树,改色就是暴力合并两个颜色的线段树,维护连续区间个数即可。 p.s 也可以链表合并做 2212: [Poi2011]Tree Rotations 从叶子节点向上,计算swap(lchild,rchild)swap(lchild,rchild)swap(l…

海南网站制作,新闻类软文,政府网站建设和管理总结,织梦模板安装详细教程bzoj1483: [HNOI2009]梦幻布丁 每个颜色建一颗线段树,改色就是暴力合并两个颜色的线段树,维护连续区间个数即可。 p.s 也可以链表合并做 2212: [Poi2011]Tree Rotations 从叶子节点向上,计算swap(lchild,rchild)swap(lchild,rchild)swap(l…

bzoj1483: [HNOI2009]梦幻布丁

每个颜色建一颗线段树,改色就是暴力合并两个颜色的线段树,维护连续区间个数即可。

p.s 也可以链表合并做


2212: [Poi2011]Tree Rotations

从叶子节点向上,计算swap(lchild,rchild)swap(lchild,rchild)swap(lchild,rchild)后的逆序对个数和原来的逆序对个数,贪心换/不换。

计算逆序对个数可以线段树以权值为下标处理

p.s 也可以splaysplaysplayO(nlog⁡2n)O(n\log ^2 n)O(nlog2n)


BestCoder Round #52 (div.1) 3.Victor and Proposition

建图连边求SCC,设第iii个SCC大小为为cnticnt_icntians=∑(cnti2)ans=\sum{cnt_i\choose 2}ans=(2cnti)

问题似乎是深度差不超过did_idi而不是标号(其实也没什么区别,下面就按深度来)

线段树优化连边:
对于每个点的子树维护以深度为下标的线段树,iiixix_ixi的线段树[dep[xi],dep[xi]+di][dep[x_i],dep[x_i]+d_i][dep[xi],dep[xi]+di]连边。

至于每个点的线段树:可以对叶子结点都建立一颗,每次线段树合并上去即可。


SPOJ COT6

没有找到原题…

题意:
称有根树的一条路径为直链当且仅当路径上任意两点都存在祖孙关系。
现在给定一颗顶点带权的有根树,要求把它划分成若干直链,使得每条直链的权和的平方和最小。
每个顶点的权都是整数,保证任意直链的权和都在intintint范围内,答案不超过1e161e161e16

口胡题解(???):

记录每个点到根的点权和wiw_iwi

考虑选出根到结点xxx的直链后将树划分成了若干森林(根到xxx的路径上的若干兄弟结点子树&xxx的所有儿子结点子树),故设dp[i]dp[i]dp[i]表示iii子树的最优值,sum[i]=∑j∈sonidpjsum[i]=\sum\limits_{j\in son_i}dp_jsum[i]=jsonidpjg[i][j]g[i][j]g[i][j]表示iii子树中去掉i→ji\to jij路径的点后的森林的最优值。

为方便表示,设belxbel_xbelx表示当iii为根时,结点xxxbelxbel_xbelx的子树内(belxbel_xbelxiii的儿子结点)。

转移:
g[i][x]=g[belx][x]+sum[i]−dp[belx]g[i][x]=g[bel_x][x]+sum[i]-dp[bel_x]g[i][x]=g[belx][x]+sum[i]dp[belx]
dp[i]=min(g[i][x]+(wx−wfai)2)dp[i]=min(g[i][x]+(w_x-w_{fa_i})^2)dp[i]=min(g[i][x]+(wxwfai)2)

拆分系数:dp[i]=wfai2+min(−2wfaiwx+g[i][x]+wx2)dp[i]=w_{fa_i}^2+min(-2w_{fa_i}w_x+g[i][x]+w_x^2)dp[i]=wfai2+min(2wfaiwx+g[i][x]+wx2)

考虑对于所有xxx,表示成平面上(wx,g[i][x]+wx2)(w_x,g[i][x]+w_x^2)(wx,g[i][x]+wx2)的点,维护下凸壳,斜率为2wfai2w_{fa_i}2wfai的直线与下凸壳切线的截距就是dpidp_idpi

于是问题转化成了对于每个点维护一些点的下凸壳,每次将所有点整体向上平移一定距离,并与兄弟结点的凸壳合并。

BSTBSTBST启发式合并可以O(nlog⁡2n)O(n\log ^2n)O(nlog2n)处理。

但这里探讨一下线段树合并的做法:

线段树下标为离散化后xxx坐标。

同一个位置的合并对yyymin⁡\minmin即可,而对于两段x轴上射影不相交的下凸壳((l,mid)&(mid+1,r)(l,mid)\& (mid+1,r)(l,mid)&(mid+1,r)),维护叶子结点的双向链表和相邻点的向量,线段树每个结点记录范围内凸壳上最左和最右的点,合并中间即可。

复杂度O(nlog⁡n)O(n\log n)O(nlogn)


SPOJ COT7

同找不到原题…

题意:
有根树每个点有两个权c和w,仍然是直链划分,最小化w和的最小平方和。
划分出的直链c的和必须在给定范围[L,R]内。
保证任意直链的c和与w和都是int范围内的整数

口胡题解(???):

比6多了一维的限制。
同样维护点到根的ccc的和tit_iti
大概是把tit_iti离散化之后在线段树上多套一维吧。。。
咕咕咕


SPOJ AE5A2

SAMSAMSAM+线段树合并把每个结点的rightrightright集合求出来。

节点iii的线段树中维护相邻两个出现位置之间的最大值disidis_idisi(线段树节点维护最左最右点),贡献为max(0,mxi−disi+1)max(0,mx_i-dis_i+1)max(0,mxidisi+1)