返回顶部

随笔分类 -  Codeforces

上一页 1 ··· 9 10 11 12 13 14 15 下一页
摘要:题意:有一排座位,要求每人之间隔$k$个座位坐,$1$代表已做,$0$代表空座,问最多能坐几人. 题解:我们分别从前和从后跑个前缀和,将已经有人坐的周围的位置标记,然后遍历求每一段连续的$0$,对于每一段最多能坐$\lceil len/(k+1) \rceil$,求个和就可. 代码: #includ 阅读全文
posted @ 2020-06-19 12:07 _Kolibri 阅读(207) 评论(0) 推荐(0)
摘要:题意:有长度为$n$的数组$a$,要求构造一个相同长度的数组$b$,使得${b_{1},b_{2},....b_}$集合中没有出现过的最小的数是$a_$. 题解:完全可以按照题意直接构造,但是比较麻烦,这里我们先标记原数组中的数,然后将原数组中没出现过的数存进$b$中($a$中出现的数在$b$中不能 阅读全文
posted @ 2020-06-15 01:19 _Kolibri 阅读(123) 评论(0) 推荐(0)
摘要:题意:有一长度为$n$的数组,求一子序列,要求子序列中两两差的绝对值最大,并且子序列尽可能短. 题解:将数组看成坐标轴上的点,其实就是求每个单调区间的端点,用差分数组来判断单调性. 代码: #include <iostream> #include <cstdio> #include <cstring 阅读全文
posted @ 2020-06-15 01:07 _Kolibri 阅读(93) 评论(0) 推荐(0)
摘要:题意:有一个长度为$n$的数组,找一段最长子数组,使得其元素和为$x$,如果存在,输出子数组的长度,否则输出$-1$. 题解:这题我们要从元素和$sum$来考虑,首先,如果原数组的所有元素都被$x$整除,那么条件不成立. ​ 假如原数组的$sum$不被$x$整除,那么长度就为$n$,如果被$x$整除 阅读全文
posted @ 2020-06-15 00:59 _Kolibri 阅读(139) 评论(0) 推荐(0)
摘要:题意:有$n$组数,对于每组数,问是否能找到两个因子$d_{1},d{2}$,使得$gcd(d_{1}+d_{2},a_=1)\(,如果有,输出它们,否则输出\)-1$. 题解:对于这题,首先我们要推两个gcd的公式: ​ 1) $gcd(a,b)=gcd(a+b,b) $. ​ 2) 若$gcd( 阅读全文
posted @ 2020-06-12 21:47 _Kolibri 阅读(219) 评论(0) 推荐(0)
摘要:题意:有一个$n$x$m$的矩阵,从$(1,1)\(出发走到\)(n,m)\(,问最少修改多少个数,使得所有路径上的数对应相等(e.g:\)(1,2)\(和\)(n-1,m)\(或\)(2,1)\(和\)(n,m-1)$). 题解:我们将二维的点的坐标转化为一维的步数(到$(1,1)$的路径),统计 阅读全文
posted @ 2020-06-12 20:57 _Kolibri 阅读(158) 评论(0) 推荐(0)
摘要:题意:有长为$n$的排列,其中$x$位置上的数为$1$,其余位置全为$0$,询问$m$次,每次询问一个区间,在这个区间内可以交换任意两个位置上的数,问$1$最后出现在不同位置的次数. 题解:维护区间即可,如果某个区间包含了$1$,更新最大的答案区间,(每次更新后说明这整个区间都能取到$1$). 代码 阅读全文
posted @ 2020-06-12 19:01 _Kolibri 阅读(146) 评论(0) 推荐(0)
摘要:题意:你有$a$个树枝和$b$个钻石,$2$个树枝和$1$个钻石能造一个铁铲,$1$个树枝和$2$个钻石能造一把剑,问最多能造多少铲子和剑. 题解:如果$a\le b$,若$b\ge 2a$,那么一直取$b$即可,否则就要两两轮流减,即$(a+b)/3$,取个min即可. 代码: #include 阅读全文
posted @ 2020-06-12 18:54 _Kolibri 阅读(226) 评论(0) 推荐(0)
摘要:题意:一共有$n$个房子,你需要访问$k$次,每次访问的距离是$|x-y|$,每次都不能停留,问是否能使访问的总距离为$s$,若能,输出$YES$和每次访问的房屋,反正输出$NO$. 题解:最优解一定是让每次访问的距离为$s/k$,然后将余数$s\ mod\ k$平均分配到前s%k的房屋中,之后每次 阅读全文
posted @ 2020-06-11 11:16 _Kolibri 阅读(133) 评论(0) 推荐(0)
摘要:题意:有两个字符串$S$和$T$,判断$T$是否能由$S$通过交换某位置的相邻字符得到,如果满足,输出交换次数及每次交换的位置,否则输出$-1$. 题解:首先判断不满足的情况,只有当两个字符串中出现的字母次数不同时不满足条件,用桶判断一下即可.然后我们再来看有解的情况,我们对$T$的每个字符标上序号 阅读全文
posted @ 2020-06-11 11:03 _Kolibri 阅读(160) 评论(0) 推荐(0)
摘要:题意:有$n$个点,$m$条边,现在要给这些点赋值,,每次只能赋给某一点的四周(所连边)的最小没出现过的值.如果不能按照所给的数赋值,输出$-1$,否则输出赋值顺序. 题解:我们用$pair$记录最后一行所给的数和位置,不难想,每次肯定是赋最小的数,所以我们对其排序,然后遍历取位置,看这个位置周围能 阅读全文
posted @ 2020-06-10 17:45 _Kolibri 阅读(169) 评论(0) 推荐(0)
摘要:题意:有一个正整数$n$,要求写出所有$1$~$n$的二进制数,统计相邻的两个二进制同位置上不同数的个数. 题解:打表找规律,不难发现: ​ $00000$ ​ $00001$ ​ $00010$ ​ $00011$ ​ $00100$ ​ $00101$ ​ 当最低位时,每次都变换,由低位向高位, 阅读全文
posted @ 2020-06-10 15:16 _Kolibri 阅读(114) 评论(0) 推荐(0)
摘要:题意:建一颗以$1$为根结点的树,询问$q$次,每次询问一个结点,问该结点的第$k$个子结点,如果不存在则输出$-1$. 题解:该题数据范围较大,需要采用dfs预处理的方法,我们从结点$1$开始向下找,$ans$数组记录的是,第$x$次查找时的结点,$path$表示某个结点所需的查找次数,$siz$ 阅读全文
posted @ 2020-06-04 18:53 _Kolibri 阅读(132) 评论(0) 推荐(0)
摘要:题意:给你两个长度相同的字符串$a$和$b$,你可以将相同位置上的$a$和$b$的字符交换,也可以将$a$或$b$中某个位置和对应的回文位置上的字符交换,这些操作是不统计的,你可以将$a$的某个字符替换,操作数+1,然后可以执行上文的操作,问最少操作多少次,使得$a$和$b$相等. 题解:我们只对$ 阅读全文
posted @ 2020-06-04 13:54 _Kolibri 阅读(191) 评论(0) 推荐(0)
摘要:题意:给你一棵树,每次可以去掉叶节点的一条边,Ayush先开始,每回合轮流来,问谁可以第一个把$x$点去掉. 题解:首先如果$x$的入度为$1$,就可以直接拿掉,还需要特判一下入度为$0$的情况,否则,仔细想一想,因为每次都不想让对方赢,所以摘到最后,一定会出现$x$连的都是叶结点的情况,所以此时我 阅读全文
posted @ 2020-06-04 13:43 _Kolibri 阅读(149) 评论(0) 推荐(0)
摘要:题意:给你一个只含有$0$和$1$的字符串,每次操作可以将$0$改成$1$或$1$改成$0$,问最少操作多少次,使得子序列中不含有$010$和$101$. 题解:仔细想一想不难发现,构造后的字符串要么全是$1$和$0$,要么就是$000....111$和$111...000$,我们对$0$求一个前缀 阅读全文
posted @ 2020-06-04 13:23 _Kolibri 阅读(169) 评论(0) 推荐(0)
摘要:题意:给你一个数组,求有多少子数组的中位数等于$m$.(若元素个数为偶数,取中间靠左的为中位数). 题解:由中位数的定义我们知道:若数组中$<m$的数有$x$个,$>m$的数有$y$个,只有$x=y$或$y-x$=1时,中位数才能取到$m$,记$m$在原数组的位置为$pos$. ​ 于是,我们先遍历 阅读全文
posted @ 2020-05-29 00:25 _Kolibri 阅读(107) 评论(0) 推荐(0)
摘要:题意:给你一个巨长无比的数,你可以将这个数划成任意多个部分,求这些部分中最多有多少个能被$3$整除. 题解:首先我们遍历累加每个位置的数字,如果某一位数或者累加和能被$3$整除(基础知识,不会就去百度),那这就是一部分,再来,我们可以发现一个部分最长只有$3$个数字. 证:当我这个部分有$3$个数字 阅读全文
posted @ 2020-05-29 00:02 _Kolibri 阅读(139) 评论(0) 推荐(0)
摘要:题意:给你一组全是$2^d\ (d\ge0)\(的数,询问q次,每次询问一个数,问这个数是否能够由原数组中的数相加得到,如果能,输出最少用多少个数,否则输出\)-1$. 题解:首先贪心得出结论:如果情况成立,那么最少的情况一定是优先用数组中大的数,然后我们用桶记录数组数的个数,从$inf$开始枚举, 阅读全文
posted @ 2020-05-27 14:40 _Kolibri 阅读(152) 评论(0) 推荐(0)
摘要:题意:一年有$n$个月,每月有$d_$天,找出连续的$x$天,使得这$x$天的日期总和最大,任意一年都能选. 题解:首先要先贪心,得到:连续的$x$天的最后一天一定是某个月的最后一天,我们先预处理两个前缀和,分别记录连续的天数和总日期数,然后枚举,二分找出一个区间,得出这个区间的总日期数再加上区间最 阅读全文
posted @ 2020-05-27 14:23 _Kolibri 阅读(213) 评论(0) 推荐(0)

上一页 1 ··· 9 10 11 12 13 14 15 下一页