返回顶部

05 2021 档案

摘要:数列分块入门1-9 1. #6277. 数列分块入门 1 分析:分块基本操作,对于整块直接打上标记,询问的时候加上对应块的标记值即可. 代码: #include <bits/stdc++.h> #define ll long long #define fi first #define se seco 阅读全文
posted @ 2021-05-31 20:21 _Kolibri 阅读(78) 评论(0) 推荐(0)
摘要:题意:有一颗树,你需要从根节点开始bfs,将搜到的点按顺序放入栈中,给你一个序列,你需要判断这个序列是否是某一种栈的情况. 题解:存一下序列中每个值的位置,然后对于每个父亲结点,按照所存每个值的位置对儿子进行排序,最后跑bfs判断即可. 代码: #include <bits/stdc++.h> #d 阅读全文
posted @ 2021-05-25 18:00 _Kolibri 阅读(45) 评论(0) 推荐(0)
摘要:题意:有一颗树,每个结点都有一个取值范围$[L_i,R_i]$,答案为所有相邻点的绝对值之差之和,现在要你确定每个点的值,求最大答案. 题解:求相邻点的最大绝对值之差,那么肯定是取两个点的左端点和右端点最优,树形dp板子题. 代码: #include <bits/stdc++.h> #define 阅读全文
posted @ 2021-05-25 17:33 _Kolibri 阅读(138) 评论(0) 推荐(0)
摘要:题意:将$2n$个点两两相连形成$n$对,对于任意两个点对$A$和$B$,要求至少满足其中一条:1.$A$和$B$的某一个完全包含于另一个中 2.$A$和$B$的长度相等.问你一共有多少种方案. 题解:假设第一个区间的左端点为$1$,右端点为$x$,对$x$分两种情况来分析. 1.\(x> n\), 阅读全文
posted @ 2021-05-25 15:37 _Kolibri 阅读(258) 评论(0) 推荐(0)
摘要:题意:将$n$划分成小于$k$的正整数之和的方案数. 题解:设$dp[i]$为$i$的方案数,因为最小的能取的数是$k$,所以$dp[i]=dp[i-k]+dp[i-k-1]+...dp[0]$,这样转移过来,而$dp[i-1]=dp[i-k-1]+dp[i-k-2]+...+dp[0]$,所以可以 阅读全文
posted @ 2021-05-22 23:08 _Kolibri 阅读(117) 评论(0) 推荐(0)
摘要:题意:有$n$个数,选$k$个数使得它们的和最大,选完某个数后,其相邻两个数不能再选. 题解:将所有数放到大根堆里,用双向链表来存顺序关系,对于堆顶的$a_i$来说,我们如果选了它,$a_$和$a_{i+1}$就不能再选,但是$a_+a_{i+1}$可能比$a_i$大,我们先不管,先将$a_i$贡献 阅读全文
posted @ 2021-05-18 21:08 _Kolibri 阅读(108) 评论(0) 推荐(0)
摘要:题意:有$n$个座位,刚开始有$k\ (k\le \frac{2})$个人坐着,你可以让某个人$i$移动到空的座位$j$,花费$|i-j|$,问你最少花多少使得刚开始坐着人的位置全部空出来. 题解:首先想了一下,这题必然不能贪心,$0$对于某两个$1$来说距离相等的话,状态就不确定.那么就只能考虑d 阅读全文
posted @ 2021-05-18 13:34 _Kolibri 阅读(57) 评论(0) 推荐(0)
摘要:题意:在一维坐标轴上有很多小机器人,它们只能一直向左或者向右每次移动一个单位,在$x=0$和$x=m$处分别设有一道屏障,小机器人达到屏障后立刻掉头反向移动,如果有两个小机器人移动后在同一个单位,那么它们就会相撞爆炸,在移动的过程中相遇并不会爆炸,问你每个小机器人爆炸的时间,如果不会相撞爆炸,输出$ 阅读全文
posted @ 2021-05-18 11:45 _Kolibri 阅读(146) 评论(0) 推荐(0)
摘要:题意:你有$H$点体力和$S$点耐力,击杀一个怪物$i$需要消耗$h_i$点体力和$s_i$点耐力,当体力为$0$时你就gg了,但是如果你当前的耐力不够击杀怪物所需要的耐力时,你可以用你的体力来透支你不够的耐力,之后你的耐力变为$0$.问你最多能得到多少金币. 题解:假如耐力不能透支的话,那么就是二 阅读全文
posted @ 2021-05-13 19:59 _Kolibri 阅读(162) 评论(0) 推荐(0)
摘要:题意:有$n$个龙珠在坐标轴上,你每次可以询问一个坐标,返回给你距离你坐标最近的龙珠的距离的平方,当这个距离等于$0$时,说明找到一颗龙珠. 题解:这题主要有两个点: 1.首先询问$(0,0)$,可以确定一颗龙珠的距离 2.对于这个距离,我们枚举$x$的可能坐标,然后因为距离固定,可以得到$y$的坐 阅读全文
posted @ 2021-05-10 22:13 _Kolibri 阅读(597) 评论(0) 推荐(0)
摘要:题意:一个含有$k$个中子的原子,如果$k\le n$,那么它就直接爆炸释放$a_k$大小的能量,否则它会分裂成含有$i$个和$j$个中子的原子(\(i+j=k\)),然后继续分裂.给你$n$和$a_1,a_2,...,a_n$,询问$q$次,每次问你一个含有$k$个中子的原子分裂产生的最小能量. 阅读全文
posted @ 2021-05-10 21:58 _Kolibri 阅读(558) 评论(0) 推荐(0)
摘要:题意:有一长度为$n$的排列$p$,有两种询问,第一种可以询问$p$的两个不同为位置$i$和$j$和一个数$x$并返回$max(min(x,p_i),min(x+1,p_j))$,第二种返回$min(max(x,p_i),max(x+1,p_j))\(.要求你在\)\lfloor\frac{3*n} 阅读全文
posted @ 2021-05-10 21:40 _Kolibri 阅读(112) 评论(0) 推荐(0)
摘要:题意:你要连续$T$天去景点游玩(上午或者下午),有$n$个室内景点和$m$个室外景点,每个景点都有自己的值,对于同一个景点,每次重复参观,权值都要*\(0.6\).如果在下午参观室外景点那么景点的权值*\(0.8\).你至少有$k$天在下午游玩,问你能得到的最大权值是多少. 题解:对于*$0.6$ 阅读全文
posted @ 2021-05-07 11:52 _Kolibri 阅读(70) 评论(0) 推荐(0)
摘要:题意:RT 题解:可以自己在纸上画画看,对于位置$i$的数$a[i]$,假如它目前的逆序对数为$c[i]$,进行一次冒泡排序后,它前面最大的一个数必然会移动到它的后面去,所以可以推广到:冒泡排序$k$次后,逆序对个数变为$c[i]-k$.那么对某一状态的排列冒泡$k$次后,逆序对个数$\le k$的 阅读全文
posted @ 2021-05-07 11:35 _Kolibri 阅读(95) 评论(0) 推荐(0)
摘要:传送门 分析:对于给出的邻接矩阵,用并查集维护牧场,并求两点的距离,然后对所有点跑一个floyd(因为只有连通的点我们才求了距离,所以可以直接对所有点跑),对于一个牧场,我们可以求出它里面每个点到其他点的最远距离,以及牧场的直径,那么我们再去枚举任意两个点,如果它们不在一个集合内,那么可以得到这两个 阅读全文
posted @ 2021-05-01 16:22 _Kolibri 阅读(64) 评论(0) 推荐(0)
摘要:题意:有两个长度为$n$的数组$a$和$b$,你可以对$a$的子数组反转一次,问你$\sum_^a_i*b_i$的最大值. 题解:一眼区间dp的题目,对于长度为$len$的子区间$[l,r]\(,它可以从\)[l+1,r-1]$转移过来,那么我们设$dp[i][j]\(为子区间\)[i,j]$能得到 阅读全文
posted @ 2021-05-01 15:58 _Kolibri 阅读(44) 评论(0) 推荐(0)
摘要:题意:有一个长度为$n$的排列,A和B进行博弈,每次操作可以在当前数$a_i$的基础移动到另一个位置,但是新的位置上的数$a_j>a_i$且$|i-j|$ mod \(a_i\)=0.A先手,问你所有$[1,n]$的情况中,A从$i$开始的结局情况. 题解:因为$a_i$每次只能移动到比自己大的数的 阅读全文
posted @ 2021-05-01 15:49 _Kolibri 阅读(48) 评论(0) 推荐(0)
摘要:题意:给你$n$个数,每个数都有$3$~$5$个因数,问你将这$n$个数累乘后的因子数. 题解:对于求约数个数,很容易想到唯一分解定理:\(x=p_1^{a_1}*p_2^{a_2}*...p_k^{a_k}\),然后就能计算出因子数:\((a_1+1)*(a_2+1)*...(a_k+1)\).但 阅读全文
posted @ 2021-05-01 14:50 _Kolibri 阅读(58) 评论(0) 推荐(0)