02 2019 档案
摘要:题目传送门 题解: 我门可以用枚举26个字符的情况,然后取大。 现在我们先讨论a的情况: 那么当 a 的个数为0的时候, a 的个数只有在1种情况下才会被更新: 新加入的串中有连续的a, 我们取中间最大的。 然后当 a 的个数不为1的时候, a的个数更新方式有2种: 1. 新加入的串全为a, 那么就
阅读全文
摘要:题目传送门 先把 = 的人用并查集合并在一起。 然后 < > 的建边, 跑一遍 toposort 之后就好了。 入度为0点的值肯定为1, 然后就是因为这个是按照时间线走过来的,所以一个点的最小值,就是在入队的那一刻确定的, 即入度为0的时候,值就是现在的值+1。 注意就是不要同一个点入队多次。 代码
阅读全文
摘要:题目传送门 显然可以发现: 我们sort之后,把奇数位的先按顺序拿出来,然后再把偶数位的按照反顺序拿出来,这样就可以保证答案最小。 代码: /* code by: zstu wxk time: 2019/02/24 */ #include<bits/stdc++.h> using namespace
阅读全文
摘要:题目传送门 题解: 先观察蚂蚁相撞, 可以发现, 如果我们将相撞的2个蚂蚁互换位置的话,蚂蚁相当于没有碰撞体积,直接穿过去了。所以我们可以直接计算出最终哪些位置上会有蚂蚁。 接下来就需要知道蚂蚁们的最终是走到哪个位置上。 需要先明白的是, 蚂蚁的相对位置是不会发生变化的,他的左边和右边的蚂蚁是不会发
阅读全文
摘要:题目传送门 题解总结起来其实很简单。 把所有的边双联通分量缩成一个点,然后建立好新边, 然后再从起点搜到终点就好了。 代码: /* code by: zstu wxk time: 2019/02/23 */ #include<bits/stdc++.h> using namespace std; #
阅读全文
摘要:题目传送门 题解: 可以将所有线段按照左端点优先小,其次右端点优先大进行排序。 然后对于第 i 条线段来说, 那么第 i+1 n 的线段左端点都一定在第i条线段的右边, 接下来就需要知道 i+1 n 中的这些线段有多少条的右端点是在第 i 条线段的右端点的左边。 可以通过一个树状数组来维护一个右端点
阅读全文
摘要:题目传送门 题解: 如果正着连边,可以发现最困难的点是ti不好处理。 所以我们连反边,然后将ti转换成前面有n-ti+1架飞机起飞了作为限制条件。 对于第一问,直接toposort 然后反着输出求出的结果。 对于第二问,我们则枚举每个架飞机,然后在toposort的时候不把这个点入队,直到队列为空的
阅读全文
摘要:题目传送门 操作就是询问某个点的值, 然后就是对一条路径上的值全部修改。 最基本的树刨题目了。 树刨的思想: 1. 对于每个点找到他的重儿子。 void dfs1(int o, int u){ sz[u] = 1; for(int i = head[u]; ~i; i = nt[i]){ int v
阅读全文
摘要:题目传送门 题解: 先用题目给定的dfs方式得到dfs序,记录下出入的dfs序。 很明显可以得知的是,以u为根的子树的dfs序在 in[u] - out[u] 的范围之内。 将每个询问先全部存到对应的节点上。 然后我们以1为root,先求出每个叶子节点到1的距离。 对1的询问查询更新完答案之后。 (
阅读全文
摘要:题目传送门 题解: 首先根据观察,很容易发的是: x != (1<<k) - 1 时候 答案就是, 将x二进制下再最高位后的0都变成1。 然后就是考虑 x == (1<<k) - 1的时候 同样根据观察可以得到 b ^ x = x - b, b&x = b 所以就是将x拆成2个数, 然后这2个数的g
阅读全文
摘要:题目传送门 题意: 这个题目真的是最近遇到的最难读。 有一个长度n的字符串,每一位字符都代表的是该种种类的敌人。 现在如果一个序列合法的话,就是同一种种类的敌人都在字符串的左半边或者右半边。 现在有q次询问,现在问你将 s[x] 和 s[y] 的敌人都放在同一边的合法方案数是多少。 题解: 首先如果
阅读全文
摘要:题目传送门 题解: 首先要处理出每个时间点会选择哪一个线段。 对于这个问题,可以用multiset去维护信息。 当时间线开始的时候,往mutiset里面插入这个信息,当时间线结束的时候,删除这个信息。 每次只要取出最大位就好了。 然后,就是状态转移,注意的就是只有转移进来过的状态才能转移出去。 代码
阅读全文
摘要:题目传送门 题解: 枚举 r 的位置。 线段树每个叶子节点存的是对应的位置到当前位置的价值。 每次往右边移动一个r的话,那么改变的信息有2个信息: 1. sum(a-ci) 2.gap(l, r) 对于第一个东西,我们直接对[1,r]区间内的所有值都加上a-ci就好了。 对于第2个修改的值,首先要明
阅读全文
摘要:题目传送门 题解: 需要注意到的是 每个offer都获益都是会随着时间的增加而渐少(或不变)。 所以我们可以知道,最多在第n个月的时候这个人会买车离开。 solve1:最优2分图匹配 我们可以把每个月都和每个offer建边。 val[i][j]代表的是离开前倒数第i个月获取了第j个月的offer,
阅读全文

浙公网安备 33010602011771号