博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CF 293E Close Vertices——点分治
阅读量:6802 次
发布时间:2019-06-26

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

题目:

仍旧是点分治。用容斥,w的限制用排序+两个指针解决, l 的限制就用树状数组。有0的话就都+1,相对大小不变。

切勿每次memset!!!会T得不行。add(sta[ l ].len)即可,但要判一下(l==r)以防不测。(真的有那种数据!)

最后注意树状数组的范围是L(即L+1),不是n。不然可以尝试:

2 10 12

1 5

#include
#include
#include
#include
#define ll long longusing namespace std;const int N=1e5+5;int n,L,W,hd[N],xnt,to[N<<1],nxt[N<<1],w[N<<1];int mn,rt,f[N],l,r,siz[N],lm;ll ans;bool vis[N];struct Sta{ int w,len;Sta(int w=0,int l=0):w(w),len(l) {} bool operator< (const Sta &b)const {
return w==b.w?len
W||pl>L)return; sta[++r]=Sta(pw,pl);add(sta[r].len,1); for(int i=hd[cr],v;i;i=nxt[i]) if(!vis[v=to[i]]&&v!=fa) dfs(v,cr,pw+w[i],pl+1);}ll calc(int cr,int pw,int pl){ l=1;r=0;dfs(cr,0,pw,pl); sort(sta+l,sta+r+1);///// printf("l=%d r=%d\n",l,r);// for(int i=l;i<=r;i++)printf("sta[%d].w=%d .len=%d\n",i,sta[i].w,sta[i].len); ll ret=0; while(l
W)add(sta[r--].len,-1); else ret+=query(L-sta[l].len)-(sta[l].len<=L-sta[l].len),// printf("l=%d r=%d query(%d)=%d\n"// ,l,r,L-sta[l].len,query(L-sta[l].len)), add(sta[l++].len,-1); if(l==r)add(sta[l].len,-1);// memset(f,0,sizeof f);///TLE!!!!! return ret;}void solve(int cr,int s){// printf("cr=%d\n",cr); vis[cr]=1;ans+=calc(cr,0,0);// printf("cr=%d ans=%lld\n",cr,ans); for(int i=hd[cr],v;i;i=nxt[i]) if(!vis[v=to[i]]) { ans-=calc(v,w[i],1);// printf("(cr=%d ans=%lld)(v=%d)\n",cr,ans,v); int ts=(siz[cr]>siz[v]?siz[v]:s-siz[cr]); mn=N;getrt(v,0,ts);solve(rt,ts); }}int main(){ scanf("%d%d%d",&n,&L,&W);lm=L+1; for(int i=2,y,z;i<=n;i++) { scanf("%d%d",&y,&z);add(i,y,z); } mn=N;getrt(1,0,n);solve(rt,n); printf("%I64d\n",ans); return 0;}

 

转载于:https://www.cnblogs.com/Narh/p/9483699.html

你可能感兴趣的文章
STL:std::shared_ptr大致原理.
查看>>
高并发学习笔记(八)
查看>>
第四章 项目管理一般知识
查看>>
Python 调用cobbler API 学习笔记
查看>>
php安装常见错误解决
查看>>
eNsp下载地址(官网)
查看>>
raspberrypi的相关网址
查看>>
python urllib & urllib2
查看>>
DirectX 最终用户运行时 Web 安装程序
查看>>
悠然乱弹:开源中国GIT中Java分类下TOP10项目的活动情况分析
查看>>
BaseDao
查看>>
JSTL标签用法:<c:choose><c:forEach><c:if>
查看>>
【结构型】- 组合模式
查看>>
Linux必会原理之文件删除的原理
查看>>
Rsync介绍及配置
查看>>
编程的那些事儿
查看>>
应用于ASP文件上传漏洞的0×00截断***
查看>>
Rubygems的国内镜像站点
查看>>
TypeScript基础入门之模块解析(三)
查看>>
Maven学习八之pom.xml简介以及客户端下载包的流程
查看>>