上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 68 下一页
摘要: 题目告诉我们偶数度数才能删除,我们观察hint,发现他们的叶子结点是放在最后删除的 这点启发了我们,为什么要把叶子结点放在最后删呢,因为他的度数一定是1,也就是必须父亲删了他才能删。 所以,当儿子的个数为偶数,一定是父节点删了才能删他。从这方面考虑过去,当儿子节点为奇数呢? 我们发现,除了根节点外, 阅读全文
posted @ 2020-09-27 14:52 朝暮不思 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 看到异或最大值,很容易想到01trie 现在的问题是多了几个约束条件。我们观察第一个条件,就是要求v的大小,这个很好维护,只需要维护最小值就行。 问题是第二个条件,第一步我们发现这个条件等价于x%k==0&&v%k==0. 简单的证明一下,首先如果一个数整除两个数的最大公约数,如果某一个数不是他的倍 阅读全文
posted @ 2020-09-27 11:45 朝暮不思 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 这个比赛读题时间过长,做题时间比较少,一直在机械的打代码,没有做到后面值得思考的题目,有点可惜 A题 树链剖分维护到根节点的答案即可 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=2e5+ 阅读全文
posted @ 2020-09-26 21:58 朝暮不思 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 数据范围是18,因此考虑使用状压dp表示状态 对于每个状态,可以是由很多种状态转移而来的,我们考虑i吃j的情况,更新所有状态 因为每次状态的减少都是因为一队鱼相遇产生。 #include<bits/stdc++.h> using namespace std; typedef long long ll 阅读全文
posted @ 2020-09-26 21:54 朝暮不思 阅读(132) 评论(0) 推荐(0) 编辑
摘要: A 贪心,找奇偶数分别最大 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=1e6+10; int a[30]; int b[30]; int main(){ ios::sync_with_ 阅读全文
posted @ 2020-09-26 09:44 朝暮不思 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 可以把式子进行拆分,拆分完后,我们关注的是两个整除后的关系以及两个余数之间的关系。 余数只要相减那么答案就是建议,否则答案不变。这是因为两个余数相减,除a[i]是不可能大于1的,但是可以小于0,因为是下取整,所以答案-1. 因此我们可以分三层维护这个答案。 现在的关键是如何快速维护这几个答案。因为a 阅读全文
posted @ 2020-09-26 09:36 朝暮不思 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 因为每个字符只会删除一次,因此删除的复杂度单点是O(1),对总复杂度没有影响 主要是考虑我们每次的l,r都是会根据之前删除的变化的,因此如果想知道真实的位置 其实可以使用树状数组+二分求取,对于删除,我们可以对每个字符维护一个set,这样就能够成功删除 #include<bits/stdc++.h> 阅读全文
posted @ 2020-09-24 22:01 朝暮不思 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 对于忍受程度越高的人,程度越低的能够做到,程度更高的人也能做到,因此我们按程度从大到小排序后,用优先队列维护 我们枚举每一天,将大于等于这天忍受程度都放进优先队列后,弹出小的直到满足要求 #include<bits/stdc++.h> using namespace std; const int N 阅读全文
posted @ 2020-09-24 18:56 朝暮不思 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 看上去比较像点分治的裸题,因此也考虑通过根节点的子图和不通过根节点的子图。 我们要维护的是,如何做到做完一个儿子后,另一个儿子可以使用前面的信息,这里可以使用bitset,题目只给了3000个点其实也提示了这一点 #include<bits/stdc++.h> using namespace std 阅读全文
posted @ 2020-09-23 20:56 朝暮不思 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 第一步,观察都所有a数组都要用到,因此先预处理a的答案 对于b数组来说,也是间隔正负,并且我们发现随着j的移动就是少了前面的多了后面的。 因此我们考虑使用前缀和来处理每一个j产生的答案。 我们发现b数组在之后是不会变化的,只有a数组会变化,因此我们只需要根据a数组找最接近他的b值即可 这就想到了二分 阅读全文
posted @ 2020-09-22 19:01 朝暮不思 阅读(179) 评论(0) 推荐(0) 编辑
上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 68 下一页