代码源每日一题
div1||div2
lamentropetion
---
展开
-
【代码源每日一题div2 】简单的异或问题
所以,想在0~2^m-1里通过xor运算获得一个数a,就只用(2^m-1)和(2^m-1-a)进行xor运算即可,但这里要求的是最多能选多少数,我们可以把所有的数(除了目标a)都选上,真正有用的只有(2^m-1)和(2^m-1-a),至于其他的数经过运算后都会变成0.所以k能取到的最大值就是2^m-1。比如m=3时,一共是0 1 2 3 4 5 6 7,八个数,我们把他们首位组成一对,一共是4对:{0,7}{1,6}{2,5}{3,4}。原创 2023-08-05 16:58:03 · 147 阅读 · 0 评论 -
【DP】代码源每日一题div2 一个大整数
可以发现,这道题本质上是让我们把这个唯一分解分成三个集合:一个是不选,一个是放集合1,一个是放集合2。放集合1或放集合2:是不是还应该决定该放多少进去,因此需要乘个ci。注意到了线性结构和三个决策,就应该想到线性DP....设dp[i]为1到 i 的互质因子对的个数。不选的话,dp[i]+=dp[i-1]因此转移方程就写好了。原创 2023-06-16 16:54:15 · 46 阅读 · 0 评论 -
【sorting+并查集】代码源每日一题div2 psort
这道题中,用并查集染色,建完图之后,只需要去判一个连通块里的元素是不是恰好是那几个不同位置的元素即可。固定距离交换元素,用并查集即可。原创 2023-06-15 17:23:34 · 46 阅读 · 0 评论 -
【枚举+数学】代码源每日一题div2 数学
那么只需要分开枚举即可,然后求一下最大值*次大值 和 次大值*最大值 的 最大值。也就是说我们要枚举(N+1)*N/2的因子,其实就是找出它的最大因子。注意到还有个条件我们没有利用:数列是1~N的。那么就是(k1+k2)*K=sum。这意味着sum=(N+1)*N/2。因此只需要枚举sum的因子即可。说明不能直接枚举,怎么办呢。所以K是sum的一个因子。但是注意数据范围:1e9。原创 2023-06-15 16:52:55 · 381 阅读 · 0 评论 -
【小DS】代码源每日一题div2 上帝的集合
还有一个操作:插入一个数,这个对最小值的影响是什么呢?这个优先队列就解决了,但是麻烦的是询问的时候,我们并没有对其加上add,因此在插入的时候要减去在这个数加入之前的add。那么可以加一个维护的东西:加一个变量add,维护我们对这个集合一共加的值,输出的时候加上add即可。首先看我们需要维护的是什么,是集合中最小的数,这个用优先队列就可以轻松维护。然后去看修改操作对需要维护的东西的影响,全体加上x,那么最小值就+x。原创 2023-06-15 15:22:06 · 38 阅读 · 0 评论 -
【二分+ST表】代码源每日一题div2 最长同余子数组
在check时,如果一个区间的gcd不为1,说明就是合法的,如果不存在这样的区间,那么就是不合法的。注意到,长度越长,越不能同余,因此我们去二分这个长度,然后去check。原创 2023-06-15 13:40:41 · 82 阅读 · 0 评论 -
【二分】代码源每日一题div2 三段式
有个细节就是,第三个指针一定要比第一个指针大至少2,不然三段中间那段就不见了,这个可以用全是0的特殊情况来考虑。注意到,如果能分成三段,那么第一个指针的前缀和一定是sum/3,第三个指针的后缀和一定是sum/3。因此可以把这些指针放到两个数组里,然后因为第三个指针一定要大于第一个指针,因此需要二分。显然,每一段的和是确定的,且如果sum不是3的倍数,就无解,输出0。可以发现很特殊的地方是,它只有三段,因此这个就是突破口。然后,问题就是,如何统计三段和为定值的方案数。其实就是统计前后指针个数。原创 2023-06-14 22:53:01 · 43 阅读 · 0 评论 -
【贪心】代码源每日一题div2 背包
然后考虑中间情况,前面的一些都是加起来<w/2的,然后如果突然加了一个物品,然后sum>w了,那么这个物品就是>w/2的,那么直接选这个物品就可以了,总体积就是>w/2,否则就不选这个物品,那么又变成第一种情况,如果选一个物品之后sum>w/2,那么就是YES。正解是把数组从大到小排个序,能选就选,看最后是不是>=w/2即可。如果每个物品都是>w,那么就是NO,我们不去考虑这种物品。因此NO的情况一定就是第一种或者情况,其他情况全是YES。如果所有物品加起来都<w/2,那么就是NO。原创 2023-06-14 20:25:31 · 32 阅读 · 0 评论 -
【贪心+权值线段树】代码源每日一题div1 双端队列
还有为了防止线段树越界,要和1取max,和N取min。手摸几个样例可以发现,不管怎么放,最小贡献是确定的。遍历数组,直接算两种决策的逆序对数的最小值就行了。因此可以直接计算最小贡献。原创 2023-06-12 00:28:33 · 120 阅读 · 1 评论 -
【简单DP】代码源每日一题div2 树
每操作一个结点都会产生Out[u]的贡献,Out[u]表示结点u的出度,然后问你贡献为K的最小操作次数。一开始很自然的去想树形DP。后来发现,根本不能转移呀。原创 2023-06-11 23:24:25 · 39 阅读 · 0 评论 -
【离线+抽象并查集】代码源每日一题div1 数字替换
注意到,如果直接模拟,复杂度高的原因是,操作2会重新遍历所有数,然后修改,从而变成n^2。如果倒着做,那就变成了,先把数字替换,再去插到左边,然后倒序输出就可以了。那么,如何替换数字呢,用并查集维护。所以,离线是为了避免这种情况。这样,我们就解决了复杂度问题。原创 2023-06-11 20:29:23 · 58 阅读 · 0 评论 -
【单调栈】代码源每日一题div1 字典序最小
为什么是这样,如果后面没有这个数,说明就不满足每个数出现一次的条件了。枚举ai,当栈里的元素大于ai时且该位置后面还有这个数时弹出。因为是字典序最小,所以要尽可能是[1,2,3,....N]所以我们需要维护每个数出现的最后一个位置。考虑用单调栈维护这个子序列。原创 2023-06-08 12:29:19 · 45 阅读 · 0 评论 -
【GCD枚举因子+环上问题】代码源每日一题div1 最大公约数
这个又是典中典的东西,直接求个前缀和%x就好了,看看mp[pre[i]%x]的最大值就是最多能分成几段,然后记录答案即可。还有一个很显然的点我没有想到:如果一个序列能分成多段,那么自然可以分成更少段,因此答案数组需要求个后缀最大值。要让GCD(sum1,sum2,sum3,....sumk)最大,惯用套路,令其为K,那就是让K最大。事实上都不需要枚举,因为你一段区间和%x为0了,头尾相接%x也一定是0了。还有环的条件,我想的是倍增数组之后O(N)枚举区间,但是这样肯定T。所以很自然想到了枚举sum的因子。原创 2023-06-11 15:48:43 · 54 阅读 · 0 评论 -
一类trick【鸽巢原理】
同样的道理,可以给后缀和模2019,如果两个位置模2019的结果相同,那么中间那个数就一定是2019的倍数,所以可以直接map计数。如果两个位置的前缀和模N的结果相同,那么这两个位置之间的那个数模N就是0。给序列做个前缀和,同时模上N。原创 2023-06-11 10:14:55 · 31 阅读 · 0 评论 -
【状态设计优化DP】代码源每日一题div1 等差数列
设dp[i][j]为等差数列最后两项为aj,ai的最大长度,枚举ai,双指针j,k,当满足2*ai==aj+ak时转移。所以一开始设了个二维的DP,设dp[i][j]为,以ai结尾的,等差数列上一个元素为aj的最大长度。又想了一个dp[i][j]表示以ai结尾的,公差为j的等差数列的最大长度,但是这样存不下。注意到这是个三元组,所以很容易想到去枚举中间那个元素。因为是个等差数列,满足2*ai==aj+ak。一看这数据范围,就是个N^2的DP。但是这样的转移是N^3的,不行。总之,常规做法都不行。原创 2023-06-08 10:18:03 · 82 阅读 · 0 评论 -
【状压DP】代码源每日一题div1 环的数量
为什么还要多一维u,因为我们要判环,如果最后一个点和起点存在边,就将环计数(即考虑计算贡献)设dp[state][u]为:走过的点的状态为state,最后一个走的点是u。因为我们处理的是无向环,因此可以设编号最小的是起点。小数据,第一个想到暴力或状压处理。原创 2023-04-04 12:17:42 · 62 阅读 · 0 评论 -
【树上倍增】最小瓶颈生成树
树上倍增原创 2023-03-18 00:39:11 · 104 阅读 · 0 评论 -
【代码源每日一题】最长有趣子序列
DP原创 2023-03-10 00:50:15 · 83 阅读 · 2 评论 -
【代码源每日一题div1】树状数组 数数
树状数组原创 2023-03-09 15:12:12 · 92 阅读 · 0 评论 -
【代码源每日一题div1 二分答案】质区间长度
二分答案原创 2023-03-08 16:44:47 · 65 阅读 · 0 评论 -
【最坏贪心】代码源每日一题div1 排列 2023.02.03
贪心原创 2023-02-03 21:33:36 · 399 阅读 · 0 评论 -
【按位考虑DP】代码源每日一题div1 2023.02.02 与
按位考虑DP原创 2023-02-02 17:53:37 · 184 阅读 · 0 评论 -
代码源每日一题div1 DP 数组划分
dmy原创 2022-11-29 14:42:19 · 259 阅读 · 0 评论 -
代码源每日一题div1 贪心 线性筛 最小生成数
dmy原创 2022-11-28 15:01:54 · 105 阅读 · 0 评论 -
代码源每日一题div1 枚举倍数 优美!最长上升子序列
dmy原创 2022-11-28 14:50:58 · 94 阅读 · 0 评论 -
代码源每日一题div1 枚举倍数 平方计数
dmy原创 2022-11-28 09:41:50 · 257 阅读 · 0 评论 -
代码源每日一题div1 【哈希DP】 连续子序列
简单dp原创 2022-11-25 23:18:05 · 99 阅读 · 0 评论 -
代码源每日一题div1 并查集 区间和
并查集原创 2022-11-25 22:47:01 · 577 阅读 · 0 评论 -
代码源每日一题div2 吃糖果
每日一题原创 2022-09-21 11:11:21 · 301 阅读 · 0 评论 -
代码源每日一题div2 异或和
每日一题?每日一抄!原创 2022-09-21 00:36:20 · 127 阅读 · 0 评论 -
代码源每日一题div1 子串的最大差
div1原创 2022-09-16 18:48:30 · 249 阅读 · 0 评论 -
代码源每日一题div2 可重排列
菜菜菜原创 2022-09-01 22:59:57 · 126 阅读 · 0 评论 -
代码源每日一题div2 A-B 数对
水原创 2022-08-20 18:21:20 · 78 阅读 · 0 评论 -
代码源每日一题div2 分段求和
简单二分原创 2022-08-19 14:05:00 · 101 阅读 · 0 评论 -
代码源每日一题div2 巨大的牛棚
水原创 2022-08-18 15:33:22 · 195 阅读 · 0 评论 -
代码源每日一题div2 最喜欢数学了(高数除外)
水水水原创 2022-08-17 23:08:09 · 74 阅读 · 0 评论 -
代码源每日一题div2 最长公共子序列
难题原创 2022-08-16 00:58:32 · 153 阅读 · 0 评论 -
【BFS求最短路】代码源每日一题div2 最短路计数
BFS初级应用原创 2022-08-14 17:51:41 · 129 阅读 · 0 评论 -
【BFS最短路】代码源每日一题div2 BFS练习1
BFS求最短路原创 2022-08-13 21:53:49 · 146 阅读 · 0 评论