博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces 980E The Number Games 贪心 倍增表
阅读量:4880 次
发布时间:2019-06-11

本文共 1458 字,大约阅读时间需要 4 分钟。

原文链接https://www.cnblogs.com/zhouzhendong/p/9074226.html

题意

  $\rm Codeforces$ 真是个令人伤心的地方。

  伤心的 $zzd$ 给你一个有 $n$ 个节点的树,编号为 $i$ 的节点权值为 $2^i$。

  让你砍掉其中 $k$ 个节点,使得剩余的所有节点都连通,并最大化剩余节点的权值和。输出方案。

  $n\leq 10^6$

题解

  伤心的 $zzd$ 再一次来到了令人伤心的 $\rm Codeforces$,并开心的 $9$ 分钟敲完并 $AC$ 了此题,并再一次伤心地发现这是在 $vp$ 结束后的第 $4$ 分钟。

  我们考虑选择一颗子树,使得剩余节点的权值和最大。

  显然我们可以贪心编号从大到小选择,能选就选。

  考虑当前选出的子树状态为 $S$,下一个决策为节点 $i$ ,那么,新增的节点数就是节点 $i$ 到 $S$ 的距离。

  只要新增之后不超出限制就可以了。

  这个东西可以预处理倍增表来快速搞定。

代码

#include 
using namespace std;const int N=1000005;struct gragh{ int cnt,y[N*2],nxt[N*2],fst[N]; void clear(){ cnt=0; memset(fst,0,sizeof fst); } void add(int a,int b){ y[++cnt]=b,nxt[cnt]=fst[a],fst[a]=cnt; }}g;int n,lim,depth[N],fa[N],anst[N][21];int vis[N],tot=0,ans[N];void dfs(int x,int pre){ fa[x]=anst[x][0]=pre; depth[x]=depth[pre]+1; for (int i=1;i<=20;i++) anst[x][i]=anst[anst[x][i-1]][i-1]; for (int i=g.fst[x];i;i=g.nxt[i]) if (g.y[i]!=pre) dfs(g.y[i],x);}int main(){ scanf("%d%d",&n,&lim); lim=n-lim; g.clear(); for (int i=1,a,b;i
=1;i--){ if (vis[i]) continue; int j=i; for (int k=20;k>=0;k--) if (!vis[anst[j][k]]) j=anst[j][k]; if (tot+depth[i]-depth[j]+1>lim) continue; tot+=depth[i]-depth[j]+1; vis[j]=1; for (int k=i;k!=j;k=fa[k]) vis[k]=1; } tot=0; for (int i=1;i<=n;i++) if (!vis[i]) ans[++tot]=i; for (int i=1;i<=tot;i++) printf("%d ",ans[i]); return 0;}

  

转载于:https://www.cnblogs.com/zhouzhendong/p/CF980E.html

你可能感兴趣的文章
Android开发学习一:环境搭建
查看>>
入门容易深入难
查看>>
20155228 你期望的师生关系是什么?
查看>>
unreal slate 创建 window
查看>>
《从零開始学Swift》学习笔记(Day 52)——Cocoa错误处理模式
查看>>
[Buzz Today]2013.02.12
查看>>
struts1学习笔记二
查看>>
c++
查看>>
计算100~200之间不能被3整除的数,continue使用范例
查看>>
计算三个数的平均值
查看>>
基于visual c++之windows核心编程代码分析(34)WinIo驱动级模拟按键的实现
查看>>
使用WSAIoctl获取AcceptEx函数指针 [转]
查看>>
【图论补完计划】poj 3613(Floyd 快速幂)
查看>>
JAX-RS -- Java API for RESTful Web Services
查看>>
Android Handler消息传递机制
查看>>
[BZOJ1572] WorkScheduling
查看>>
Struts2学习笔记1--Struts2简介
查看>>
Redis面试总结
查看>>
CSS3 2D转换
查看>>
sed详解
查看>>