上一页 1 ··· 9 10 11 12 13 14 下一页
摘要: 题目翻译 题解 容易想到$O(n^2)$的暴力,也就是对于每个区间依次枚举与之有重叠的区间。但是时间复杂度只允许在$O(nlogn)$及以内,因此需要考虑优化。 若使两个区间$i,j$重叠,只需满足$r_j\ge l_i$且$l_j\le r_i $,当然$i,j$可以互换,但为了不重复计数令$i$ 阅读全文
posted @ 2021-01-01 18:32 violet_holmes 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题解 容易想到,因为选出的m个数与在原序列中的顺序无关,所以可以将$a$序列排序,然后找到每一个满足最大值与最小值的差$\le k$的区间,排列组合选出$m$个数即可。具体实现的问题有两个:找到区间与排列组合。 找到区间:进一步分析可得,我们并不需要这个区间的左右端点,只要知道其中元素的个 阅读全文
posted @ 2021-01-01 18:30 violet_holmes 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题解 将题意简化,对于$i$满足$1\le i\le n$,设$b_j=a_j$到$a_{j+i-1}\(的最小值\)(1\le j\le n-i+1)$,我们需要判断$b$序列是否为$n-i+1$的全排列。因为枚举每一个$j$的时间已经是$O(n^2)$,而此题时间复杂度需要在$O(nl 阅读全文
posted @ 2021-01-01 18:29 violet_holmes 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题解 博弈论问题。必胜状态(对于先手的),也就是所有一步可以到达的点中至少有一个为必败的点;而必败点则是所有一步可达的点全部为必胜的点。 因为必败点上面或右面的店一定是必胜点,所以必败点与必胜点不在一条对角线上,也就是说一条对角线上的点都是必败点或必胜点。所以只需检查过原点的对角线最靠近圆 阅读全文
posted @ 2021-01-01 18:27 violet_holmes 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题解 什么时候可以执行操作:若想将$a_i$取出到$b$数组中,则$a_$与$a_{i+1}$中一定有一项没有出现在$b$数组接下来的元素中,因为要将其删除。 如何统计答案:假设$a_i=b_j$,对于每一个$b_j$有两种可能方案,删除$a_$或$a_{i+1}$。易证,在两种方案都可执 阅读全文
posted @ 2021-01-01 18:26 violet_holmes 阅读(55) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题解 为了计算面积,需将三角形中与网格平行的边作为三角形的底。显然底越长面积越大,因此对于点$A$,可以将满足$AB$与网格平行且距离最长的$B$的数值改为与$A$一样。而另一个顶点为满足高最长,一定是$d$数值可以到达的最上、最下、最左或最右的格点,预处理即可。 AC代码 #includ 阅读全文
posted @ 2021-01-01 18:24 violet_holmes 阅读(70) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题解 可以发现,如果$a_i>x$且不对$a_i$执行操作,$a_{i+1}-a_n$便无法执行操作。这个性质可以保证下述方法的正确性与最优性: 找到第一个满足$a_$之后序列单调不降的$pos$,依次对所有$1\le i\le pos$且$a_i>x$的元素将$x$与$a_i$互换。因为 阅读全文
posted @ 2020-12-20 10:58 violet_holmes 阅读(64) 评论(1) 推荐(1) 编辑
摘要: 题目链接 题解 LCS就是经典的dp问题,所以看到这道题时觉得大概与LCS差不多,只是多加一些条件罢了。 LCS的转移方程:\(dp[i][j]= \begin{cases} max(dp[i-1][j],dp[i][j-1]) \quad a[i]!=a[j] \\ dp[i-1][j-1]+1 阅读全文
posted @ 2020-12-20 10:56 violet_holmes 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题解 由题易得,当$p<q$或$p%q\not=0$时$x=p$。 其他情况:先使$x=p$ 将$p$分解为$k_1^\cdot k_2^\cdot k_3^...\cdot k_m^$,若将$k$中任意一个满足$k_i^|p$的$k_i$,使$x$中$k_i$的幂数$\le n_i$,则 阅读全文
posted @ 2020-12-20 10:54 violet_holmes 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 题解 由题意得,每一个节点仅经过一条边可以到达的节点一定是递增的。因此可以将bfs序列分成若干个递增序列,然后模拟建树。 AC代码 #include<bits/stdc++.h> using namespace std; const int N=2e5+10; int a[N],len[N]; in 阅读全文
posted @ 2020-12-20 10:49 violet_holmes 阅读(46) 评论(0) 推荐(0) 编辑
上一页 1 ··· 9 10 11 12 13 14 下一页