该文被密码保护。 阅读全文
posted @ 2019-07-13 20:51 Al_Ca 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 3331: [BeiJing2013]压力 LCA+树上差分,和之前类似的题差不多,就是多了个v-dcc缩点,唯一要注意的就是判断是否是割点,对于不是割点的点,如果他是起点或重点,ans++,和差分没有关系,对于割点,则需要用到差分,注意割点与非割点的答案要分开存储,否则会死的。 另外要注意的是数组 阅读全文
posted @ 2019-07-13 20:50 Al_Ca 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 2208: [Jsoi2010]连通数 对于原图建反图,考虑到有环,tarjan缩点,就得到一张有向无环图,用bitset记录能到某scc的点(原图点),跑拓扑将bitset或(|)下去就可以了,最后答案为∑(bitset中1的个数*scc的大小)。开始考虑错了: 1 for(int i=1;i<= 阅读全文
posted @ 2019-07-13 20:42 Al_Ca 阅读(104) 评论(0) 推荐(0) 编辑
摘要: [POI2008]BLO 一开始没看懂样例,连去掉的点都算…… 显然如果i不是割点,那么ans[i]=(n-1)*2, 如果i是割点,ans[i]=将i去掉后生成的联通块大小两两相乘的和加上i本身,但这样并不好算,换一种思路,在求割点时记录搜索树中以x为根的子树大小, (式子太长不想打了……) 阅读全文
posted @ 2019-07-13 20:34 Al_Ca 阅读(150) 评论(0) 推荐(0) 编辑
摘要: int dfn[MAXN],low[MAXN],num,root; int stack[MAXN],top,cnt; bool iscut[MAXN]; int new_id[MAXN],c[MAXN]; vector dcc[MAXN]; void tarjan(int x) { dfn[x]=low[x]=++num; stack[++top]=x; if(x==ro... 阅读全文
posted @ 2019-07-13 19:51 Al_Ca 阅读(252) 评论(0) 推荐(0) 编辑
摘要: int dfn[MAXN],low[MAXN],cnt; bool isbridge[MAXN]; void tarjan(int x,int edg) { low[x]=dfn[x]=++cnt; for(int i=f(x);i;i=n(i)) if(!dfn[v(i)]) { tarjan(v(i),i); low[x]=mi... 阅读全文
posted @ 2019-07-13 16:39 Al_Ca 阅读(277) 评论(0) 推荐(0) 编辑
摘要: int dfn[MAXN],low[MAXN],cnt; void tarjan(int x,int edg) { low[x]=dfn[x]=++cnt; for(int i=f(x);i;i=n(i)) if(!dfn[v(i)]) { tarjan(v(i),i); low[x]=min(low[x],low[v(i)]); ... 阅读全文
posted @ 2019-07-13 16:18 Al_Ca 阅读(196) 评论(0) 推荐(0) 编辑
摘要: int dfn[MAXN],low[MAXN],cnt,root; bool iscut[MAXN]; void tarjan(int x) { dfn[x]=low[x]=++cnt; int flag=0; for(int i=f(x);i;i=n(i)) if(!dfn[v(i)]) { ta 阅读全文
posted @ 2019-07-13 15:56 Al_Ca 阅读(144) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2019-07-13 06:27 Al_Ca 阅读(6) 评论(0) 推荐(0) 编辑
摘要: NOIP2016天天爱跑步 这题一看显然lca+树上差分,但是因为有w的限制不能直接加,所以考虑权值线段树合并, 每个选手的起点终点对于不同的节点的影响是不同的,这就非常麻烦了,但是可以发现无论如何他的深度是固定的,而对于一个节点i,能使他+1有如下两种情况: 1.dep[x]=dep[i]-w[i 阅读全文
posted @ 2019-07-13 06:25 Al_Ca 阅读(143) 评论(0) 推荐(0) 编辑
摘要: bzoj1003 物流运输 设cost[i][j]为第i天到第j天,不经过这些天关闭的所有港口(指在这一段时间不是每天都能过)的最短路, 设f[i]为前i天最短路,则f[i]=min(f[i] , f[j]+cost[j+1][i]*(i-j)+k) 因为对第一天多加了一个k,最后减去即可。 #in 阅读全文
posted @ 2019-07-13 06:12 Al_Ca 阅读(121) 评论(0) 推荐(1) 编辑
ヾ(≧O≦)〃嗷~