首页 > TAG信息列表 > ecnt

HDU5593 ZYB's Tree

求 \(n\) 个点的树上对于每个点距离小于 \(k\) 的点的数量(边权均为 \(1\) )。 \(n\leq 5\times 10^5,k\leq 10\) 。 设 \(f[u][i]\) 表示距离 \(u\) 点 \(i\) 距离以内并且在子树内的点,那么在 \(DFS\) 时可以用 \(O(nk)\) 的时间处理 \(f[u][i]=\sum f[v][i-1]\) ,其中 \(v\) 是 \(u

[SDOI2013] 森林(主席树+启发式合并)

传送门 description 给一个森林,每个点有权值。在线(每次每个变量xor lastans) 操作如下: Q x y k:查询x到y的路径上第k小的权值(保证x到y至少k个点) L x y:将x和y连边。 solution 从Q和L分别可以猜测需要用到主席树和lct。 主席树是我一直不太熟的数据结构,作用可以维护一段历史版

初三前半学期日志

日志 二月二十八日: ​ 归并 & 二分: ​ 性质:1.对于正排列中的一个序列a[],以i为前半部分的下标,j为后半部分的下标,则a[i]严格大于等于a[mid + 1]到a[j - 1]的所有数字 ​ 2.对于正排列中的一个序列a[],

[WC2018]通道

luogu传送门 这是我写过最难写的之一,写到AC的总时间有8h。另外Racheal,byebye~嘿嘿 Description \(n\)个点,给三棵树,问\(x\)道\(y\)在三棵树上的路径权值和最大。 Solution 第一棵树上边分治,边权为\(w\),划分为点集S和T。令\(d1_i\)为\(i\)在T1中到边的距离。 同时令\(d_2,d_3\)分

【雅礼集训 2017 Day2】棋盘游戏

loj 6033 description 给一个\(n*m\)的棋盘,'.'为可通行,'#'为障碍。Alice选择一个起始点,Bob先手从该点往四个方向走一步,Alice再走,不能走走过的点,谁不能动谁就输了。 问Alice选择哪些出发点能赢。 solution 棋盘黑白染色 分类后建二分图 1.Alice选择关键匹配点(所有的最大匹配都包含

[NOI2017] 游戏

题意: 思路:其实很水就二进制枚举一下x是'A'还是'a'即可 不过做题的时候我u->v(选u就会选v)我没有连v'->u,理论上图是含盖必要逻辑的,但是我们要的是含盖所有逻辑,因为要保持2-SAT图的对称性,这是很多问题的前提。 code: #include<bits/stdc++.h> using namespace std; const int N=1

[WC2011]最大XOR和路径

我们首先给出结论: 我们随便找一颗生成树 把单元环拉进线性基。 单元环定义为:仅由一条非树边构成的环。 我们可以证明任意大环一定都一个或多个环的点集异或。 读者可以自己画图证明一下。 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using n

[考试总结]ZROI-21-NOIP-CSP7连-DAY6 总结

#T1 聚会 #题意简述 给定一个长度为 \(n(n\leq5\times10^5)\) 的 01 串,一个位置 \(x\) 的价值为 \(x\) 到离它最近 1 的距离,问价值和。多组数据。 #大体思路 从两个方向分别扫一遍即可。 #Code #define ll long long const int N = 5e5; const ll INF = 1e12; char s[N]; int t,

数据结构介绍——链式前向星

  来源:链式前向星是ssfz神牛Malash创造的(至少Baidu上没有搜到)名词,或许这种数据结构有其他更加正规易懂的名字,但我还是没有搜到。(有一个资料称之为加上next数组前向星,但这个名字实在不好) 该数据结构可能是Jason911神牛或其他神牛发明的。 用途:用于解决图表示困难的问题,如果说邻

ZOJ3229 Shoot the Bullet

嘟嘟嘟 有源有汇上下界网络流之最大流。 这题建图其实不难,从\(s\)向每一天连容量为\([0, D]\)的边,每一天向对应的女孩连容量为\([L, R]\)的边,每一个女孩向汇点连容量为\([G, INF]\)的边。 然后转换成上下界网络流的图:建立附加源附加汇\(S, T\),计算每一个点的出入度之差后连边。这

2月1日 图论

终于来到了传说中的图论,第一天就被虐的死去活来,究其原因是因为曾经的一些东西如dp,bfs理解的不是很透,代码写不出来,尤其是递推这块非常不熟练,图论的有些东西就很不好,后续会继续在csdn上总结一下dp和bfs 今日主要内容:1、图的基本定义等(这个在网上都有,不多说了) 2、存图 3、图的

2020寒假 Day-1

A - Artful Paintings  Gym - 102394A  题意:给定数组长度 n, $m1$ 个[l,r]的染色的个数要>=$k_i$, $m2$ 个区间$[l,r]$区间外的个数要<= $k_i$,求最小区间染色数。 做出前缀和: 对于条件一:$s[r]-s[l-1]>=k_i$ 对于条件二:$s[l-1]+s[n]-s[r]>=k_i$ 考虑第一个条件转化为差分约束,第二

POJ 2449 Remmarguts' Date

传送门 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <queue> using namespace std; typedef long long ll; typedef pair<int, int> p; const int maxn(1e3 + 10); const int maxm(2e5 + 10)

洛谷 P2868 [USACO07DEC]Sightseeing Cows G

传送门 同 AcWing 361 观光奶牛 #include <bits/stdc++.h> using namespace std; using ll = long long; using p = pair<int, int>; const double pi(acos(-1)); const int inf(0x3f3f3f3f); const int mod(1e9 + 7); const int maxn(1e3 + 10); const int maxm(5e3 + 1

P2505 [HAOI2012]道路 最短路树+拓扑排序

题意: 给定一张\(n\)个点,\(m\)条边的有向图,求每条边被多少最短路经过 范围&性质:\(1\le n\le 1500,1\le m\le 5000\) 分析: 枚举起点,对于每一个起点,建一颗最短路径树(准确来说是一个DAG),然后枚举边计算贡献,由乘法原理得,一个边会被\(cnt1[frm]\times cnt2[to]\)条路径经过,其中\(cnt1[frm

Topcoder SRM568 Div1 DisjointSemicircles (二分图染色)

Topcoder SRM568 Div1 DisjointSemicircles (二分图染色) 题意: 给定数轴上排列的\(2n\)个点,每个点需要找到另一个点和它匹配,并且以他们为直径两端,向上或者向下作一个半圆 有一些点已经匹配好了,要求判断是否存在一个合法的方案,满足所有的半圆不相交 思路: 枚举已经确定的匹配半圆

Firing POJ - 2987 最大权闭合子图

最大权闭合子图:一张图,一些点权值为正,一些点权值为负,选了一些点必须选择器后继节点,问权值最大的子图。 考虑最小割做法: 源点向点权为正的点连边,点权为负的点向汇点连边,其他点两两连边流量为inf,求最小割为答案。 设  点权为正的点与源点连边表示选择这个点 设  点权为负的点与源点

题解 [ABC155F] Perils in Parallel

include <bits/stdc++.h> define N 200005 using namespace std; int n, m; int head[N], nex[N << 1], to[N << 1], eid[N << 1], ecnt; int p[N], s[N]; struct light { int pos, state; }lig[N]; bool cmpLight(const light &lhs, const light

【CSP模拟赛】益智游戏(最短路&拓扑排序)

题目描述   小P和小R在玩一款益智游戏。游戏在一个正权有向图上进行。 小P 控制的角色要从A 点走最短路到B 点,小R 控制的角色要从C 点走最短路到D 点。 一个玩家每回合可以有两种选择,移动到一个相邻节点或者休息一回合。 假如在某一时刻,小P 和小R 在相同的节点上,那么可以得到一次