博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 3460 Jc的宿舍
阅读量:6316 次
发布时间:2019-06-22

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

题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3460

题意:一棵树。每个节点住一个人,这个人打水的时间为Ti。每次查询一个路径。这个路径上的人都去一个水管前打水。总的最小等待时间。

思路:在树的DFS序中分块。

const int N=200005;struct node{	int x,y,lca,flag,id;	int t;};vector
b;vector
g[N];vector
> Q[N];int n,m,key,d[N];int S[N],id;int mp[N],pos[N][2];int get(int x){ if(S[x]!=x) S[x]=get(S[x]); return S[x];}int visit[N];void dfs(int u,int pre){ pos[u][0]=++id; mp[id]=u; int i; for(i=0;i
b.y; return a.y
rr) add(R--); while(L
ll) add(--L); if(b[i].flag) add(pos[b[i].lca][0]); ans[id][t]=Ans; if(b[i].flag) add(pos[b[i].lca][0]); }}int main(){ n=getInt(); m=getInt(); key=getInt(); int i; for(i=1;i<=n;i++) d[i]=getInt(),dp[i]=d[i]; sort(dp+1,dp+n+1); M=unique(dp+1,dp+n+1)-(dp+1); for(i=1;i<=n;i++) d[i]=lower_bound(dp+1,dp+M+1,d[i])-dp; int root; for(i=1;i<=n;i++) { int x=getInt(); if(!x) root=i; else g[x].pb(i),g[i].pb(x); } int cnt=0; for(i=1;i<=m;i++) { char op[5]; scanf("%s",op); if(op[0]=='C') root=getInt(); else { int x=getInt(); node a; a.x=x%n+1; a.y=root; a.id=i; a.t=0; b.pb(a); Q[a.x].pb(MP(a.y,cnt)),Q[a.y].pb(MP(a.x,cnt)); cnt++; a.x=(x+key)%n+1; a.y=root; a.id=i; a.t=1; b.pb(a); Q[a.x].pb(MP(a.y,cnt)),Q[a.y].pb(MP(a.x,cnt)); cnt++; } } for(i=1;i<=n;i++) S[i]=i; dfs(1,0); for(i=0;i
pos[b[i].y][0]) swap(b[i].x,b[i].y); b[i].x=pos[b[i].x][1]; b[i].y=pos[b[i].y][0]; b[i].flag=1; } clr(ans,-1); deal(); int last=0; for(i=1;i<=m;i++) if(ans[i][0]!=-1||ans[i][1]!=-1) { printf("%lld\n",ans[i][last&1]); last=ans[i][last&1]; }}

 

转载地址:http://mhkaa.baihongyu.com/

你可能感兴趣的文章
python数据分析画图体验
查看>>
军规15 确保集成和调用第三方APP
查看>>
Etcd和ZooKeeper,究竟谁在watch的功能表现更好?
查看>>
Shredding Company 碎纸机,dfs()枚举每一种情况,再加剪枝。
查看>>
命名空间和模块化编程 - C++快速入门39
查看>>
结构化程序设计03 - 零基础入门学习Delphi12
查看>>
今天才知道怎么插入代码!!!!!!!!!
查看>>
D2007在64位Win7出现 delphi 2007 assertion failure thread32.cpp 的解决办法
查看>>
STM32的TAMPER-RTC管脚作为Tamper的使用[转]
查看>>
[记]一个逐步“优化”的范例程序
查看>>
2012-01-09_2
查看>>
数学 - 线性代数导论 - #5 矩阵变换之置换与转置
查看>>
java数据结构:队列
查看>>
使用.NET进行高效率互联网敏捷开发的思考和探索【一、概述】
查看>>
切换默认Activity和Fragment的动画
查看>>
SSM练习——登录实现
查看>>
asp.net core 2.0 Microsoft.Extensions.Logging 文本文件日志扩展
查看>>
余光中_百度百科
查看>>
方法sessionjsp之监听器
查看>>
判断 网络是否通常,以及判断用户使用的网络类型,时2G\3G\还是wifi
查看>>