当前位置: 首页 > news >正文

设计网站属于什么专业河南网站建设推广运营

设计网站属于什么专业,河南网站建设推广运营,网络营销常用工具,抖音代运营怎么取消来自题解 CF600E 【Lomsat gelral】#xff1a; 先简单说一下启发式合并吧 这道题我们可以遍历整棵树#xff0c;并用一个数组ap#xff08;appear#xff09;记录每种颜色出现几次 但是每做完一棵子树就需要清空ap#xff0c;以免对其兄弟造成影响。 而这样做它的祖先时就…来自题解 CF600E 【Lomsat gelral】 先简单说一下启发式合并吧 这道题我们可以遍历整棵树并用一个数组apappear记录每种颜色出现几次 但是每做完一棵子树就需要清空ap以免对其兄弟造成影响。 而这样做它的祖先时就要把它重新搜一遍浪费时间 但是我们发现对于每个节点v最后一棵子树是不用清空的因为做完那棵子树后可 以把其结果直接加入v的答案中。 选哪棵子树呢当然是所含节点最多的一棵咯我们称之为“重儿子” 其实感觉这样快不了多少……但是它竟然是nlogn的 觉得这里对于启发式合并的思路讲得好 做一做模板题洛谷 Lomsat gelral 整体思路就是用cnt数组记录子树中颜色出现的次数但是计算完一棵子树需要清空最后计算重儿子的子树不需要清空 #include bits/stdc.h using namespace std;typedef long long ll; const int N 100005;int sz[N], big[N], col[N], cnt[N];//子树大小重儿子颜色颜色出现的次数 ll ans[N]; vectorint g[N]; ll ma, sum;void dfs0(int x, int fa)//预处理算出重儿子 {sz[x] 1, big[x] 0;for (auto y : g[x]){if (y fa) continue;dfs0(y, x);if (sz[y] sz[big[x]]) big[x] y;sz[x] sz[y];} } void change(int x, int fa, int v, int nt) //v 1递归计算整颗子树除了重儿子的影响并更新ma和sum //v -1消除子树对于cnt数组的影响 //nt是不能走的点即最初调用时的x的重儿子不用的时候置0 {cnt[col[x]] v;if (cnt[col[x]] ma) ma cnt[col[x]], sum col[x];else if (cnt[col[x]] ma) sum col[x];for (auto y: g[x]){if (y fa || y nt) continue;change(y, x, v, nt);} } void dfs(int x, int fa, bool keep) {for (auto y : g[x])//计算轻儿子的ans并消除对cnt的影响 {if (y fa || y big[x]) continue;dfs(y, x, false);}if (big[x]) dfs(big[x], x, true);//计算重儿子的ans保留对cnt的影响 //计算x的ans不走重儿子因为走过了并且保留了cnt change(x, fa, 1, big[x]);ans[x] sum;if (keep false) //需要消除影响 {change(x, fa, -1, 0);//整颗子树都要消除注意nt不能填big[x]错了两次了呜ma sum 0;//change完要置0因为都要消除影响了之后有需要重新计算的地方 } }int main() { int n;cin n;for (int i 1; i n; i){cin col[i];}for (int i 1; i n; i){int x, y;cin x y;g[x].push_back(y);g[y].push_back(x);}dfs0(1, 0); // for (int i 1; i n; i) // cout big[i] ;ma sum 0;dfs(1, 0, true);for (int i 1; i n; i)cout ans[i] ;return 0;} 来到学启发式合并的初衷[蓝桥杯 2023 省 A] 颜色平衡树 就是加了一个桶来记录cnt的状况以此来维护子树上的最大值和最小值一棵子树最大值最小值即是平衡的 这种最值维护方法也是学到了思路来自P9233 直接在上题的代码上改 #include vector #include iostream #include cstdio using namespace std;typedef long long ll; const int N 200005;int col[N], cnt[N], sz[N], big[N], t[N];//t是记录cnt[col]的桶方便算最大值最小值 vectorint g[N];void dfs0(int x, int fa) {sz[x] 1;big[x] 0;for (auto y: g[x]){if (y fa) continue;dfs0(y, x);sz[x] sz[y];if (sz[y] sz[big[x]]) big[x] y;} }int ma, mi, res 0; void init() {ma 0, mi N; } void change(int x, int fa, int v, int nt) {//更新桶 t[cnt[col[x]]]--;cnt[col[x]] v;t[cnt[col[x]]];//更新最大值最小值 if (cnt[col[x]] ma) ma cnt[col[x]];if (cnt[col[x]] mi) mi cnt[col[x]];if (t[ma] 0) ma--;//cnt减的时候最大值可能退下来 if (t[mi] 0) mi;//cnt加的时候最小值可能涨 for (auto y : g[x]){if (y fa || y nt) continue;change(y, x, v, nt);} } void dfs(int x, int fa, bool keep) {for (auto y : g[x]){if (y fa || y big[x]) continue;dfs(y, x, false);}if (big[x]) dfs(big[x], x, true);change(x, fa, 1, big[x]);if (ma mi) res; if (keep false){change(x, fa, -1, 0);init();} }int main() {int n;cin n;for (int i 1; i n; i){int y;cin col[i] y;g[i].push_back(y);g[y].push_back(i);}dfs0(1, 0);init();dfs(1, 0, false);cout res endl;return 0; }先这样
http://www.zqtcl.cn/news/131485/

相关文章:

  • 深圳住房和城乡建设局网站阿里云学生免费服务器
  • 如何做的网站手机可以用吗绵阳优化网站排名
  • 营销网站建设大全wordpress wp_register
  • 公司做年审在哪个网站网络seo专员招聘
  • 宿州网站建设费用网站快速建设入门教程
  • 怎么自己做网站加盟网站建设意义模板
  • 网站开发怎样实现上传视频教程内容导购网站模板
  • 济南做网站建设的公司广告公司资质
  • 域名分类网站微擎 wordpress
  • 公司产品营销策划安徽seo
  • 网站 平均加载时间百度搜索竞价推广
  • 赛车网站开发淄博网站建设及托管
  • 过时的网站湖州公司网站建设
  • 环球设计网站网站建设的面试要求
  • 百度公司网站排名怎么做潮阳网站开发
  • 杨和网站建设国内外建筑设计网站
  • 北京知名网站建设公司wordpress4.0.x 下载
  • 锡盟网站建设做网站视频存储
  • 深圳博纳网站建设高端品牌护肤品排行榜
  • 百度爱采购优化排名软件宁波seo搜索平台推广专业
  • 门户网站的建设公司台山网站定制
  • 建设公司网站需要什么群辉nas怎么做网站
  • 广西自治区集约化网站建设要求坂田网站的建设
  • 网站后台不能编辑企业如何申请网站
  • 网站建设网站设计多少钱网站系统开发方式
  • 站长收录wordpress配置好后别人无法访问
  • 我国档案网站建设吉林网站建设制作
  • 手机网站底部导航网站视频链接怎么做
  • 企业门户网站属于什么层seo关键词排行优化教程
  • wordpress 演示站广东省南粤交通投资建设有限公司网站