随笔分类 -  思维题

摘要:题意 给出一个长为2n的序列,你需要设定一个数x,每一次你可以选择序列中的两个数a和b,满足a+b等于x,然后将ab从序列中去除,最后将x变为a和b较大的那个数。如果可以把序列全部消空,输出yes和最开始的x,然后输出每一步选择的两个数。否则输出no。 思路 我们可以知道的是每一步的两个数里面一定有 阅读全文
posted @ 2021-01-23 12:32 艾尔夏尔-Layton 阅读(60) 评论(0) 推荐(0) 编辑
摘要:传送门:http://codeforces.com/contest/1473/problem/C 题意 给定n、k,a数组为1 2 3...k-1,k,k-1,...k-(n-k),要求构造一个长度为k的排列(1到k每个数出现一次),同时b[i]=a[p[i]]。要求b里面的逆序对不多于a里面的逆序 阅读全文
posted @ 2021-01-19 12:02 艾尔夏尔-Layton 阅读(222) 评论(0) 推荐(0) 编辑
摘要:传送门:http://codeforces.com/contest/1467/problem/C 题意 给你三个背包(集合),分别有若干个数字,你可以进行任意次操作,每次选出两个不同背包各一个数字a和b,然后把b移除,把a的值变成a-b。要求在若干次操作之后,三个背包剩下唯一一个值,使该值最大。 思 阅读全文
posted @ 2021-01-12 22:58 艾尔夏尔-Layton 阅读(148) 评论(0) 推荐(0) 编辑
摘要:传送门:https://codeforces.ml/contest/1443/problem/B 题意 给你一串01字符串,你可以花费a引爆一串连续的1,或者花费b让一个0变成1。问引爆这串字符串的所有1需要多少花费。 思路 假设这串字符的1的联通块个数有num个,则他们之间0的联通块为num-1个 阅读全文
posted @ 2020-11-03 12:10 艾尔夏尔-Layton 阅读(214) 评论(0) 推荐(0) 编辑
摘要:传送门:https://vjudge.net/contest/374932#problem/C 题意 有n个小孩围成一个圈,老师给第一第二个人,再隔一个人给第四个,再隔两个给第7个,以此类推。老师有无限的糖果问n个人是否都能get到糖果。 思路 这题只有我们模拟打表,很容易看出来结论是:n是2的幂则 阅读全文
posted @ 2020-09-21 22:31 艾尔夏尔-Layton 阅读(225) 评论(0) 推荐(0) 编辑
摘要:题意 给你一颗树,要求构造最少的链,这些链覆盖该树的所有边,输出链数和每一条链的两个端点。 思路 我们很容易想到,这些链的两端应该是叶子节点,设叶子节点个个数为s,那么我们可以构造出s/2的链,使所有边被覆盖,那么现在难点就在,如果让构造的两个端点不是兄弟,例如 如果我们选择(4,5),(6,7)那 阅读全文
posted @ 2020-07-15 22:59 艾尔夏尔-Layton 阅读(149) 评论(0) 推荐(0) 编辑
摘要:题意 给你一个n,要求给出两个整数a和b,使得a+b=n且lcm(a,b)最小。 思路 结论:答案是k和n-k,k为n的最大真因子。 证明:假设a<=b,则lcm>=b,取最小则自然是lcm==b,lcm>b,最小的就是2b,2b>n故舍去,所以我们要构造lcm=b的解。 lcm=b故a整除b,则b 阅读全文
posted @ 2020-07-14 12:55 艾尔夏尔-Layton 阅读(337) 评论(2) 推荐(0) 编辑
摘要:题意 给你一个长度为n的序列,值在0到n之间,你每次都可以指定任意一个位置,使这个位置的值变成当前的mex,要求使整个序列变得非递减的,问输出每次操作的下标。答案可任意。 思路 我们考虑如何讲序列变成1 2 ... n这样一个特定的序列,这样就满足了题意的非递减。 我们将a[i]!=i的下标称之为失 阅读全文
posted @ 2020-07-11 10:25 艾尔夏尔-Layton 阅读(296) 评论(0) 推荐(0) 编辑
摘要:题意 给你n个数字,要求把它们分成k组,每组w[i]个,ans为每组的最小值加最大值的总和。 思路 很容易看出,如果一组只有一个人,那么把尽可能较大的分给他,最小值和最大值都会大,ans也会大,所有我们先把大的数分给那些只有一个人的组。 考虑剩下的情况,现在每组的最大值都是确认的(较大的每组一个), 阅读全文
posted @ 2020-06-25 11:25 艾尔夏尔-Layton 阅读(223) 评论(0) 推荐(0) 编辑
摘要:传送门:https://codeforces.ml/contest/1330/problem/B 题意 给出一个长为n的序列,要求把它分成两部分,两部分均为一个连续的自然数列,问能有几种分法,给出分出来的两部分序列长度。 思路 设这个序列最大值为ma,那么必定有一部分的长度为ma,因为是自然数列数应 阅读全文
posted @ 2020-04-06 18:37 艾尔夏尔-Layton 阅读(444) 评论(0) 推荐(1) 编辑
摘要:传送门:https://codeforces.ml/problemset/problem/235/A 题意: 给你一个数字n,要求在n以内找到三个数,使它们的lcm最大,输出最大的lcm。 思路: lcm(n,m)=n*m/gcd(n,m),我们还能知道一个小定理那就是设lcm(n,m)=k则k一定 阅读全文
posted @ 2020-03-21 20:39 艾尔夏尔-Layton 阅读(166) 评论(0) 推荐(0) 编辑
摘要:传送门:https://codeforces.ml/contest/1326/problem/C 题意: 给你一个长度为n的序列,要求分成k份,使每一份中的max值和最大,输出最大的和和分组的方法数。 思路: 和一定就是最大的k个数的和了,那么难点就在分法,设前k大的数分别为a1,a2,...ak, 阅读全文
posted @ 2020-03-20 16:30 艾尔夏尔-Layton 阅读(413) 评论(1) 推荐(2) 编辑
摘要:传送门:https://codeforces.ml/problemset/problem/735/D 题意: 当你的收入是x时,你要交x最大的因子(除了x)的数额的税,现在你有一个数字n,试图把n分成几部分收入,每一部分都要交税,试图让总税收最小。 科普: 哥德巴赫猜想——任一大于2的偶数都可写成两 阅读全文
posted @ 2020-03-19 18:03 艾尔夏尔-Layton 阅读(204) 评论(0) 推荐(0) 编辑
摘要:传送门:https://codeforces.ml/contest/1325/problem/C 题意: 给你一个n个节点n-1条边的无向图,要求你要给每条边赋值,取值在0到n-2之间,要求给出一种构造方式,使每两对节点之间简单路径的边值组成的序列的mex值之和最小。 思路: 对于一条链来说(所以节 阅读全文
posted @ 2020-03-16 14:14 艾尔夏尔-Layton 阅读(157) 评论(0) 推荐(0) 编辑
摘要:传送门:https://codeforces.ml/contest/1325/problem/D 题意:给你两个整数u和v,需要你构造一个最短的序列,使他们的异或和是u,和是v,输出序列长度和序列的每个数,若构造不出来输出-1。 思路:当u>v的时候显然没有解,因为u对应的二进制位已经比v大了。 当 阅读全文
posted @ 2020-03-15 15:00 艾尔夏尔-Layton 阅读(510) 评论(1) 推荐(0) 编辑
摘要:题目描述 牛牛有一个n*m的迷宫,对于迷宫中的每个格子都为'R','D','B'三种类型之一,'R'表示处于当前的格子时只能往右边走'D'表示处于当前的格子时只能往下边走,而'B'表示向右向下均可以走。 我们认为迷宫最左上角的坐标为(1,1),迷宫右下角的坐标为(n,m),除了每个格子有向右移动以及 阅读全文
posted @ 2020-02-10 15:03 艾尔夏尔-Layton 阅读(261) 评论(0) 推荐(0) 编辑
摘要:题意:给你一个2×n的矩阵,起点在左上,终点在右下,可以移动到本格相邻的格子里,给你q个时间点,每个时间点会有一个格子的状态发生变化,格子状态分为可走和不可走,一开始所以格子都是可走的,要求输出每个时间点能不能从起点走到终点。 思路:对任意格子来说,设它的坐标为x,y,对于他的另一行的三个坐标3-x 阅读全文
posted @ 2020-01-21 22:27 艾尔夏尔-Layton 阅读(281) 评论(0) 推荐(0) 编辑
摘要:题意:一个序列有一些数是缺失的,长度为n元素为1到n不重样,要求将缺失的数填进去并尽可能让相邻的两个数奇偶性相同,输出最小的相邻奇偶性不同的数对的数目。 思路:维护还可以填多少个奇数和偶数的数目,如果 奇 0...0 奇,类似这种区间,如果里面能填相同性质的数并且填满的话,就优先填这些,然后数目-长 阅读全文
posted @ 2020-01-06 20:58 艾尔夏尔-Layton 阅读(159) 评论(0) 推荐(0) 编辑
摘要:题意:n个串,每个串的长度为k,串只含有SET三种字母,如果有三个串符合每个位置的字母都不同或者每个位置的字母都相同,那他们就是符合条件的一组,要求统计有多少组符合题意。n(1e3) k(30)。 思路:如果暴力枚举就是n3方会T,用map把每个串的序号存下来,通过枚举两个串,构造出第三个符合条件的 阅读全文
posted @ 2020-01-06 15:35 艾尔夏尔-Layton 阅读(269) 评论(0) 推荐(0) 编辑
摘要:题意:给定一个长度为n的序列,计算得他们的和是S,异或和是P,你可以往序列中加入三个数,最后令S==2*P成立。 思路1:因为一个数异或上自己就是0,则先加一个P,则变成 S+P 和 0 ,再加一个 S+P,因为0异或任何数=任何数,所以就变成了2*(S+P)和S+P,满足题意。 思路2:若S<2P 阅读全文
posted @ 2019-12-31 11:35 艾尔夏尔-Layton 阅读(159) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示