随笔分类 -  做题总结

摘要:[ABC372D] Buildings 思路 正着做不方便,倒着用单调栈做一遍就行了。 代码 #include<iostream> using namespace std; inline int read(){register int x = 0, f = 1;register char c = g 阅读全文
posted @ 2024-10-12 16:55 bryce_yyds 阅读(35) 评论(0) 推荐(0)
摘要:Secret Santa 思路 这是一个需要深思熟虑的贪心,总之还算有点复杂。 首先,如果一个数不在它自己数值的下标上,就可以填进去,将剩下的还未填的数记录下来,此时情况如下(样例1,第一组): 当前:2 1 _ 剩余:3 然后将剩余的数的那个数组反过来,即从大到小排序,填满空位,这样可能会有冲突, 阅读全文
posted @ 2024-09-28 21:42 bryce_yyds 阅读(18) 评论(0) 推荐(0)
摘要:Close Vertices 思路 很明显,这是一道点分治题目,但有两个限制条件,考虑将两个条件排序起来,双指针找第一个条件,树状数组维护第二个条件,但是同一个子树内不能重复统计,所以将答案减去每个子树内的答案。 代码 #include<iostream> #include<algorithm> # 阅读全文
posted @ 2024-08-20 15:54 bryce_yyds 阅读(17) 评论(0) 推荐(0)
摘要:P1020 [NOIP1999 提高组] 导弹拦截 思路 设 \(dp_i\) 表示前 \(i\) 个数,最长不降子序列的长度,我们知道枚举求法的时间复杂度为 \(O(n^2)\),这是不能接受的,所以考虑二分。 设 \(f_i\) 表示所有最长不降子序列长度为 \(i\)中,它的结尾中最大的数。 阅读全文
posted @ 2024-06-29 17:02 bryce_yyds 阅读(16) 评论(0) 推荐(0)
摘要:P2146 [NOI2015] 软件包管理器 思路分析 树链剖分板子,每次安装时,将 \(1\) 到 \(x\) 的链变为 \(1\),卸载时,将 \(x\) 的子树变为 \(0\)。 代码 #include<iostream> using namespace std; inline int rea 阅读全文
posted @ 2024-02-17 14:09 bryce_yyds 阅读(16) 评论(0) 推荐(0)