摘要:
map可以动态进行插入删除等操作,但其常数太高了。 如果只用一个有序数组来存储的话,那么可以提供更好的查询复杂度的常数,同时在构建的时候由于不需要保存额外的信息所以非常节约内存:需要小心的是这个map只能找到第一个重复的元素,如果需要进行覆盖操作的话,一般还是得使用BST去做。当然也可以get之后对 阅读全文
摘要:
https://codeforces.com/contest/1854/problem/B 看了官方题解才大概懂的。 先设想一个前提,如果要求你最后开了恰好x张牌,并且x=n的,只是没有那么多牌开了,导致白白损失了开牌次数。 为了统一这一种情况,可以在牌堆后面补上若干个为值为0的虚拟的牌,和上面的问 阅读全文
摘要:
最近打了一次 Codeforces ,发现有很多小 bug 其实可以用随机数据 + assert 就能找出来的。而且也能验证一些猜想或者打表。每次都写这个东西太耗时间了。现在临时写一个后面慢慢完善。 ```cpp namespace RandomGenerator { const int MAXN 阅读全文
摘要:
**出处:** Educational Codeforces Round 152 **链接:** https://codeforces.com/problemset/problem/1849/E **题目大意:** TODO(先去看原题吧) **解题思路:** PS:这里的解题思路跟标准答案不太一样 阅读全文
摘要:
**出处:** Codeforces Round 887 **链接:** https://codeforces.com/problemset/problem/1852/B **题目大意:** 给定一个包含 $n$ 个非负整数的频次序列 $f$ 。 构造任意一个等长的整数序列 $b$ ,要求 ① $b 阅读全文
摘要:
**出处:** Codeforces Round 887 **链接:** https://codeforces.com/problemset/problem/1852/A **题目大意:** 给定一个包含 $n$ 个正整数的表示删除位置的严格升序序列 $p$ ,以及另外一个连续正整数的被删除的无穷序 阅读全文
摘要:
把一个数组的元素,从左到右插入笛卡尔树,可以用栈O(n)地构建出来。笛卡尔树上的节点满足堆的性质(小根堆就是一个节点小于其两个子节点的权值)。所以用这个方式扫描出的笛卡尔树,一棵子树就是对应一段连续的区间,而子树的根节点就是这段区间的最值(小根堆就是最小值)。 以最大矩形面积的小根堆为例: 从根节点 阅读全文
摘要:
手写二分在涉及负数的时候,处理得不好容易导致死循环,比如下面这个例子: 对于任意的 \(x_1<x_2\) ,若 \(check(x_1)\) 为真,则 \(check(x_2)\) 也为真(真区间在右边)时: ll findFirst (ll L, ll R) { while (L < R) { 阅读全文
该文被密码保护。 阅读全文