摘要:题意 你被要求编写一个数据结构,支援以下操作: 1. 插入一个数 2. 所有数同时加一个数 3. 所有数同时减一个数,同时如果有数小于一个值,那么这个数应该被删除。 4. 查找第k大数 5. 统计被删除的数的总数 题解 看到有插入,有删除,加减还都很方便,自然地想到使用平衡树实现。 我选用了spla
阅读全文
摘要:题目大意 你被要求编写一个数据结构,支援以下操作,操作在线。 1. 插入一个元素 2. 查询一个元素与之前插入元素的最小差值。 题解 一道模板题。我是写了一个pre和succ函数水过的。1A,比较高兴。 代码 include include const int maxn = 40000; int c
阅读全文
摘要:题目 你需要写一种数据结构支援以下操作。 1. 插入元素。 2. 删除元素。 3. 查询元素的排名。 4. 查询第k小的元素。 5. 查询元素前趋。 6. 查询元素后继。 题解 BBST裸题。 代码
阅读全文
摘要:题目大意 给一个1到N的排列$A_i$,询问是否存在$p_i$,$i =3$,使得$A_{p_1}, A_{p_2}, ... ,A_{p_len}$是一个等差序列。 题解 显然,我们只需要找到$P_1, P_2, P_3$,使得其为等差数列即可。 考察等差数列的定义,不难得出: $$2 P_2 =
阅读全文
摘要:题意 你应当编写一个数据结构,支持以下操作: 1. 反转一个区间 题解 我们把在数组中的位置当作权值,这样原序列就在这种权值意义下有序,我们考虑使用splay维护。 对于操作rev[l,r],我们首先把l 1 splay 到根,再把r+1 splay 到根的右子树的根,那么根的右子树的左子树就是区间
阅读全文
摘要:题目 这天天气不错,hzhwcmhf神犇给VFleaKing出了一道题: 给你一个长度为N的字符串S,求有多少个不同的长度为L的子串。 子串的定义是S[l]、S[l + 1]、… S[r]这样连续的一段。 两个字符串被认为是不同的当且仅当某个位置上的字符不同。 VFleaKing一看觉得这不是Has
阅读全文
摘要:题意 请你写一个数据结构,支持: 1. 子序列同加 2. 子序列同乘 3. 统计子序列和 题目 线段树裸题,但对于我这种初学者还是非常难写。 我们维护两个标记,一个是在这个节点上作过的所有乘法操作,一个是加法操作,始终保持乘法优先级在前,这就说明,如果原来已经有了加法,那么我们需要把加法让位,即把加
阅读全文
摘要:题目大意 "传送门" 题解 我国古代有一句俗话。 骗分出奇迹,乱搞最神奇! 这句话在这道题上得到了鲜明的体现。 我的方法就是魔改版线段树,乱搞搞一下,首先借鉴了黄学长的建树方法,直接用一个节点维护年份的区间,但是这样就带来了问题,就是在查询的时候非常难以操作。经过不断的乱搞,我终于把正确的操作方式搞
阅读全文
摘要:题目 略 题解 直接套黄学长模板。 "Orz" 代码 include using namespace std; define ll long long define inf 1000000000 define n (65536 2 + 1) char ch[5]; int read() { int
阅读全文
摘要:题目大意 题解 "出题人博客" 代码 include using namespace std; const int M = 10001000; int phi[M]; int Phi(int x) { int i, ret = x; for (i = 2; i i = 1; } return ret
阅读全文
摘要:题目 现有一个传动系统,包含了N个组合齿轮和M个链条。每一个链条连接了两个组合齿轮u和v,并提供了一个传动比x : y。即如果只考虑这两个组合齿轮,编号为u的齿轮转动x圈,编号为v的齿轮会转动y圈。传动比为正表示若编号 为u的齿轮顺时针转动,则编号为v的齿轮也顺时针转动。传动比为负表示若编号为u的齿
阅读全文
摘要:题解 给定一张图,支持删点和询问连通块个数 按操作顺序处理的话要在删除点的同时维护图的形态(即图具体的连边情况),这是几乎不可做的 我们发现,这道题可以先读入操作,把没删的点的边先连上,然后再倒序处理操作 这样的话从删点变成了加点,而且只要维护连通块的数量,用并查集可以快速的解决这个问题 代码 in
阅读全文
摘要:题解 目标就是 $$Maximize\ \lambda = \frac{X Y}{k}$$ 按照分数规划的一般规律, 构造: $$g(\lambda) = \lambda k + Y X$$ 由于总流量不变,我们考虑转移流量。 注意到,对于每条边,我们如果增加其容量则会增加(b[i]+d[i]+la
阅读全文
摘要:水题。不多说什么。 include using namespace std; const int maxn = 10010; const int maxk = 15; int n, m, k, s, t; struct edge { int to, value; }; struct state {
阅读全文
摘要:题目大意 我们考虑最简单的旅行问题吧: 现在这个大陆上有 N 个城市,M 条双向的 道路。城市编号为 1~N,我们在 1 号城市,需要到 N 号城市,怎样才能最快地 到达呢? 这不就是最短路问题吗?我们都知道可以用 Dijkstra、Bellman Ford、 Floyd Warshall等算法来解
阅读全文
摘要:题目大意: 一个由自然数组成的数列按下式定义: 对于i k: ai = c1ai 1 + c2ai 2 + ... + ckai k 其中bj和 cj (1 define ll long long define ull unsigned long long using namespace std;
阅读全文
摘要:题目大意 求 $$\sum_{i = 1}^{N!} [gcd(i, M!) = 1]$$ 题解 显然,题目就是求 $$N!(1 \frac{1}{p_1})(1 \frac{1}{p_2})...$$ 即 $$N!\prod(p_i 1)(\prod p_i)^{ 1}$$ 预处理一下,都是线性复
阅读全文
摘要:题目大意 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi。我们希望从中选择一些软件安装到一台磁盘容量为M计算机上,使得这些软件的价值尽可能大(即Vi的和最大)。 但是现在有个问题:软件之间存在依赖关系,即软件i只有在安装了软件j(包括软件j的直接或间接依赖)的情况下
阅读全文
摘要:题目 "传送门" 题解 第一次一遍就AC一道bzoj上的题,虽然是一道水题。。。 我们做一边最短路,求出每个点的dist,然后再做一次类似spfa的操作,求出每个点是否可以用于建图。 在新图上拆点跑一边dinic就好辣。 代码 include include include include incl
阅读全文
摘要:题目大意 题目又丑又长我就不贴了,说一下大意,有n种菜,m个评委,每一个评委又有两种喜好,每种菜有满汉两种做法,只能选一种。判断是否存在一种方案使得所有评委至少喜欢一种菜品。输入包含多组数据。 题解 显然是2 SAT,注意两种不同做法的菜也要连边。 代码 include using namespac
阅读全文
摘要:题目 "传送门" 题解 这个题是一个经典的分数规划问题。 把题目形式化地表示,就是 $$Minimize\ \lambda = \frac{\sum W_{i, i+1}}{k}$$ 整理一下,就是 $$\lambda k = \sum W_{i, i+1}$$ 定义新的函数 $$g(\lambda
阅读全文
摘要:题目大意 给定序列A,序列中的每一项Ai有删除代价Bi和附加属性Ci。请删除若 干项,使得4的最长上升子序列长度减少至少1,且付出的代价之和最小,并输出方案。 如果有多种方案,请输出将删去项的附加属性排序之后,字典序最小的一种。 题解 首先我们很容易用一个$\Theta (n^2)$的算法求出对于每
阅读全文
摘要:题目 "传送门" 题解 建立s和t,然后s向1连下限0上限inf费用0的边,除1外所有节点向t连下限0上限inf费用0的边,对于每条边下限为1上限为inf费用为经过费用,然后我们只有做上下界网络流构出新图,跑最小费用可行流即可。 至于建立新图,我是这样建立的(如图) 另外推荐一篇文章: "Menci
阅读全文
摘要:这个题太恶心了。。。并不想继续做了。。。 本代码在bzoj上TLE! 大致说一下思路: 建立ST,首先由S连边(S,u,a)a代表学文的分数,连向T(u,T,b)b表示学理的分数,这样构造出了两个人独立的分数。 然后考虑联合分数,对于相邻的两个点xy,看下图(盗个图: 设xy都学文的分数为w1,都学
阅读全文
摘要:题目 "传送门" 题解 很容易建立模型,如果两个点不能匹配,那么连一条边,那么问题就转化为了求一个图上的最大点权独立集。 而我们可以知道: 最大点权独立集+最小点权覆盖集=总权值。 同时最小点权覆盖在一般图上是np的,但是在二分图上就是可解的。 利用一系列数学性质,可以证明A[i]与A[j]奇偶性不
阅读全文
摘要:题目大意: "传送门" 题解: 很容易建模,把每一个工作人员拆成两个点,由第一个点向第二个点连S+1条边即可。 这水题没什么难度,主要是longlong卡的丧心病狂。。。 代码 include define ll long long using namespace std; const ll max
阅读全文
摘要:题目大意: "传送门" 题解: 本题和(POJ3686)[http://poj.org/problem?id=3686]一题一模一样,而且还是数据缩小以后的弱化版QAQ,《挑战程序设计竞赛》一书中有详细解答,我写一下大致的解法。 我们把每个维修员拆成n个点,由每个车子向每个维修员连接n条边,分别代表
阅读全文
摘要:题目大意: 给定一个有向图,求能够被其他所有点访问到的点的个数。 题解: 首先,这个题我在洛谷上AC了,但是bzoj上WA,不知道为什么。 说一下解法。 首先,我们进行scc分解,可以知道, 1. 如果一个点满足条件,那么这个点所在的scc中的所有点都满足条件。 2. 至多只有一个scc满足条件。
阅读全文
摘要:题目大意 求 $$\sum_{i = 0}^{n 1}\sum_{j=0}^{m 1} max((i\ xor\ j)\ \ k,\ 0)\ mod\ p$$ 题解 首先,开始并没有看出来这是数位dp。 后来发现可以一位一位的处理,每一位可以从前一位推出,所以可以考虑数位dp。 我们把要统计的数变为
阅读全文
摘要:题目 求[a,b]中的windy数个数。 windy数指的是任意相邻两个数位上的数至少相差2的数,比如135是,134不是。 题解 感觉这个题比刚才做的那个简单多了。。。这个才真的应该是数位dp入门题嘛。 方程就是 $$f[i][j] = \sum f[i 1][k]$$ 随便搞一搞就好辣。 代码
阅读全文
摘要:题目: (传送门)[http://www.lydsy.com/JudgeOnline/problem.php?id=1833] 题解: 第一次接触数位dp,真的是恶心。 首先翻阅了很多很多一维dp,因为要处理前缀0,所以根本搞不懂。 查询了dalaolidaxin的博客,又查阅了资料: "初探数位d
阅读全文
摘要:题目描述 "传送门" 题解: 这个题真的是巨坑,经过了6个WA,2个TLE,1个RE后才终于搞出来,中间都有点放弃希望了。。。 主要是一定要注意longlong! 下面开始说明题解。 朴素的想法是: 如果两个数字可以匹配,那么连一条边,那么问题就转化成了一个图的最大边匹配。 然而,一般图的最大边匹配
阅读全文
摘要:题目描述: 给定一个平面图,求最小割。 题解: 本题是一道经典题. "周冬Orz的论文" 是很好的研究资料。 这道题点太多,所以直接跑dinic无疑会超时。 我们观察原图,发现原图是一个平面图。 什么是平面图呢?平面图就是可以画在平面上,边没有交错的图。 平面图有几个很吼的性质: 1. 欧拉定理(欧
阅读全文
摘要:题目大意 "传送门" 题解 显然是二分图匹配。 用一些方法建图就好了。 要注意的是: 本题有多组数据!!! 初始化一定要注意!!! 代码
阅读全文
摘要:题目大意 求两两互不同构的含n个点的简单图有多少种。 简单图是关联一对顶点的无向边不多于一条的不含自环的图。 a图与b图被认为是同构的是指a图的顶点经过一定的重新标号以后,a图的顶点集和边集能完全与b图一一对应。 题解 这个题是学习了Polya定理和群论以后的练手题,但是推了好久并没有推出来。。。。
阅读全文
摘要:题意 给定a, b, c, d, k,求出: $$\sum_{i=a}^b\sum_{j=c}^d[gcd(i, j) = k]$$ 题解 为方便表述,我们设 $$calc(\alpha, \beta) = \sum_{i=1}^{\alpha}\sum_{j=1}^{\beta}[gcd(i, j
阅读全文
摘要:感受 第一次参加CF的rating比赛,感觉还是非常exciting,前18分钟把AB切掉之后一直在考虑C题,结果最后还是没有想出来Orz "传送门" A 比较水的模拟,就是计算:$\frac{z}{lcm(a,b)}$ include define ll long long using names
阅读全文
摘要:题目 给定两个区间[1, b], [1, d],统计数对的个数(x, y)满足: 1. $x \in [1, b]$, $y \in [1, d]$ ; 2. $gcd(x, y) = k$ "HDU1695" 题解 我们观察式子$gcd(x,y)=k$ 很显然,$gcd(x/k, y/k) = 1
阅读全文
摘要:题意: 给定n个数,从中选取m个数,使得$\sum | n$。本题使用Special Judge. 题解: 既然使用special judge,我们可以直接构造答案。 首先构造在mod N剩余系下的前缀和。 $$sum_i = (a_i + sum_{i 1}) mod n$$ 剩余系N的完系中显然
阅读全文