摘要:
F - Jealous Two 题目大意: 给出 n 个点 (ai,bi) ,问满足下列条件的 (i,j) 有多少对: 1≤i,j≤n ai≥aj && bi≤bj 思路: 典型的二维偏序问题。 阅读全文
摘要:
E - Range Sums 题目大意: 给定一些区间的和,判断是否可以在其中选择一些区间,使得可以通过这些区间的和算出 1 到 n 的区间和。 思路: 考虑将 ai 看成点,对于 [l,r] 的区间和,相当于建一条 l−1 到 r 的边。那么要想算出 1 阅读全文
摘要:
E - Edge Deletion 题目大意: 给出 n(n≤300) 个节点的无向图联通图,问最多可以删除多少条边,使得删除后的图,对于任意两个节点 u 、v 其最短路都没有发生改变。 思路: 赛时以为是求 n 遍最短路,标记所有最短路上的边,然后剩下的就 阅读全文
摘要:
P1966 火柴排队 题目大意: 求使两列数字相差距离最小的交换次数。 思路: 要想使得距离最小,必须让 a 序列的第 k 大值与 b 序列的第 k 大值处在相同的位置上。 值域是 0≤height≤231−1 ,考虑离散化获得第 \(k 阅读全文
摘要:
SP3267 D-query 题目大意: 给出长度为 n 的序列,q 次询问,每次为区间 [l,r] 有多少不同的数字。 思路: 显然可以用莫队解决,考虑带 log 的做法。 对于一个区间 [l,r] 来说,区间内若有重复出现的数,那么他上一次出现的位置除了第一次 阅读全文
摘要:
D - New Year Concert 题目大意: 给出一个序列 a。 对于一个序列 b,如果其中存在一个区间 [L,R],满足区间 gcd 等于区间长度 R−L+1,则认为这个序列是不好的。 每次修改可以将任意一个数改成任意正整数。 现求对序列 阅读全文
摘要:
单调栈主要用于解决 Next Greater Element 问题,即找左边/右边第一个比自己小/大的元素(位置)。 以下是对四种问题的实现。 #include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdi 阅读全文
摘要:
F - Swap and Sort 题目大意: 给出一个 permutation,并给出 m 组关系 (ai,bi) ,每次操作可以交换 Pai,Pbi,问能否在 5e5 次操作之内将 permutation 变为升序序列,若能则输出交换次数和交换步骤 阅读全文
摘要:
E - Skiing 题目大意: n 个点每个点有一个点权,依据点权的大小关系确定 m 条边权,求最长路。 思路: 关于SPFA,他死了。 很明显是求带负权的最长路,赛后有数据毙掉SPFA,考虑如何转化边权使得可以用 dijkstra 求解。 我们将点权看作势能,加入到最短路的求解中 阅读全文
摘要:
Parenthesis Checking 题目大意: 给出一个括号串,q 次以下两种操作: 输入 1 l r,交换第 l-th 和 r-th 的字符 输出 2 l r ,查询区间 [l,r] 子串是否是合法括号序列。 思路: 令 ( 为 1,) 为 −1。 阅读全文