摘要: 2024.1.18 杭州电子科技大学2023华为杯编程竞赛 解题思路 首先可以知道,我们任意选一点为根 root 往下递归异或就可以得到 f [ i ](root 到 i 的路径异或值 ),那么 l 到 r 的路径异或值可以由 f [ l ] ^ f [ r ]得出 那么如何计算答案呢,就是用 f 阅读全文
posted @ 2024-01-18 13:56 modemingzi 阅读(86) 评论(0) 推荐(0)
摘要: 2024.1.9 cf Hello 2024 1919D 解题思路 这题理解一下就是,找出数组中每一个比左数或右数大1的数,从大到小(体现优先队列)删除(体现链表),对访问过的数打个标记(vis),最后数组里的数要么被打过标记,要么是0. 代码 #include<bits/stdc++.h> usi 阅读全文
posted @ 2024-01-09 22:24 modemingzi 阅读(15) 评论(0) 推荐(0)
摘要: 2023.12.13 cf1904D2 解题思路 首先,a[i]大于b[i]时肯定不行,等于就满足了,直接过掉 其次,要想使得a[i]等于b[i],就要在a[i]左右找最近的j使得a[j]=b[i](最近的最优,可证) k是i和j中间的一个数,想要满足题意,要满足以下两个条件(a[j]=b[i]) 阅读全文
posted @ 2023-12-13 12:57 modemingzi 阅读(25) 评论(0) 推荐(0)
摘要: 主要应用倍增思想预处理:O(nlogn) 查询:O(1)f[i][j]是以i为起点,长度为2j的区间中的最大值(一个点一个单位长度,不是一条线段)区间终点:i+2j-1<=n区间长度的指数k=log2(r-l+1),只有当r-l+1为2n-1时是恰好分割,其他时候有重叠,但问题不大 代码 #incl 阅读全文
posted @ 2023-12-12 18:37 modemingzi 阅读(45) 评论(0) 推荐(0)
摘要: 扩欧代码(时间复杂度O(logn)) 求ax+by=gcd(a,b)的一组整数解 int gcd(int a,int b) { if(b==0)return a; return gcd(b,a%b); } int exgcd(int a,int b,int &x,int &y) { if(b==0) 阅读全文
posted @ 2023-12-10 18:08 modemingzi 阅读(49) 评论(0) 推荐(0)
摘要: 2023.12.7 1903D1 解题思路 题目一眼long long,所以从大到小迭代每一个位(262到20) 因为要与&起来最大,尽量把高位的0在不超过步数的情况下整成1,所以如果第i位是0,就把ai增加到下一位变成1 只有能走到最后的i是答案的二进制第i位为1,直接加在ans上 代码 #inc 阅读全文
posted @ 2023-12-07 23:49 modemingzi 阅读(11) 评论(0) 推荐(0)
摘要: 2023.12.7 cf 1907E 解题思路 首先明确,如果这三个数加起来发生了进位,那么必然不是好数(一个位换下一个位总和会有损失) 然后,结果n的每一位就可以拆成几个1,或者说几个小球,用两个隔板往小球的空隙插(注意因为0也有可能,所以小球两边也可插,可插空隙个数为num+2) 然后就可以直接 阅读全文
posted @ 2023-12-07 22:53 modemingzi 阅读(26) 评论(0) 推荐(0)
摘要: 2023.12.6 cf1902B 二分 一般来讲我们会在以下情况用到二分: 求单调函数的零点 求最小值的最大,或最大值的最小 很难直接算出答案,但是很好判定答案合不合法 二分答案和二分查找差不多,就是check函数内是贪心dp之类的东西 当用二分控制精度时,以r-l>eps为循环条件,return 阅读全文
posted @ 2023-12-06 20:15 modemingzi 阅读(19) 评论(0) 推荐(0)
摘要: 2023.12.5 cf 1902E 字典树的功能 根据字典树的概念,我们可以发现:字典树的本质是把很多字符串拆成单个字符的形式,以树的方式存储起来。所以我们说字典树维护的是”字典“。那么根据这个最基本的性质,我们可以由此延伸出字典树的很多妙用。简单总结起来大体如下: 1、维护字符串集合(即字典)。 阅读全文
posted @ 2023-12-05 21:45 modemingzi 阅读(186) 评论(0) 推荐(0)
摘要: 2023.12.2 cf 1903C 解题思路(听说是个常见的形式) a:第一个部分 b:第二个部分 c:第三个部分 本题1*a+2*b+3*c......这种形式可以拆成 a+b+c+...... 加上 b+c+...... 加上 c+...... 由以上看出可以构造后缀和 再证明贪心: 当a*n 阅读全文
posted @ 2023-12-02 22:07 modemingzi 阅读(13) 评论(0) 推荐(0)