博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷4577 & LOJ2521:[FJOI2018]领导集团问题——题解
阅读量:6923 次
发布时间:2019-06-27

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

参考:

自己再说下另一种理解方法吧。

我们设f[i][j]为i的子树下找到的点集最小值为j的大小。

但不是很好统计,所以我们开f[i][j]表示j~INF的和即为原来的含义。

则我们合并其子树的时候,考虑加入i的w[i]时,其答案f[i][w[i]]还是没有问题的,但是对于比w[i]小的值就全大1了,所以我们找到第一个比w[i]小的w,将其--,之后统计即可。

(当然如果没有比其小的w,我们当然就不需要减啦!)

复杂度O(nlog^2n)只要评测机好点就能过。

#include#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;typedef long long ll;const int N=2e5+5;#define fi first#define se secondinline int read(){ int X=0,w=0;char ch=0; while(!isdigit(ch)){w|=ch=='-';ch=getchar();} while(isdigit(ch))X=(X<<3)+(X<<1)+(ch^48),ch=getchar(); return w?-X:X;}struct node{ int to,nxt;}e[N];int n,m,cnt,head[N],w[N],b[N];map
f[N];map
::iterator it;inline void add(int u,int v){ e[++cnt].to=v;e[cnt].nxt=head[u];head[u]=cnt;}inline void merge(int u,int v){ if(f[u].size()
fi]+=it->se; } f[v].clear();}void dfs(int u){ for(int i=head[u];i;i=e[i].nxt){ int v=e[i].to; dfs(v); merge(u,v); } it=f[u].begin(); if(it->fi>=w[u])return; it=f[u].lower_bound(w[u]);it--; if(it->se==1)f[u].erase(it); else it->se-=1;}inline void LSH(){ sort(b+1,b+m+1); m=unique(b+1,b+m+1)-b-1; for(int i=1;i<=n;i++) w[i]=lower_bound(b+1,b+m+1,w[i])-b;}int main(){ n=read(); for(int i=1;i<=n;i++)w[i]=b[++m]=read(); LSH(); for(int i=1;i<=n;i++)f[i][w[i]]=1; for(int v=2;v<=n;v++){ int u=read();add(u,v); } dfs(1); int ans=0; for(it=f[1].begin();it!=f[1].end();it++)ans+=it->se; printf("%d\n",ans); return 0;}

+++++++++++++++++++++++++++++++++++++++++++

 +本文作者:luyouqi233。               +

 +欢迎访问我的博客:+

+++++++++++++++++++++++++++++++++++++++++++

转载于:https://www.cnblogs.com/luyouqi233/p/9146396.html

你可能感兴趣的文章
What is Observer and Observable and when we used these?
查看>>
恢复spark挂掉的节点
查看>>
Overload和Override的区别 C++ Java
查看>>
查看mysqll账号信息
查看>>
failed to load the jni shared library jvm
查看>>
中国误区,你还抓?
查看>>
没有敢死队问题--约瑟夫变形
查看>>
C#使用ServiceController控制windows服务
查看>>
BZOJ2933 : [Poi1999]地图
查看>>
Dynamic Web Project 的学习笔记
查看>>
linux -- ubuntu搭建nodejs环境
查看>>
Grunt 之 watch 和 livereload
查看>>
关联A850刷机包 高级电源 时间中心 优化 ROOT 动力 美化 简化
查看>>
error while loading shared libraries: libevent-2.0.so.5解决办法
查看>>
linux定时器HZ和Jiffies
查看>>
MVC生成图片验证码,可指定位数
查看>>
HDU 5492 Find a path DP
查看>>
基于Task的异步模式--全面介绍
查看>>
IIS HTTPS 禁用不安全的SSL2.0
查看>>
转:sublime2 官方网址
查看>>