- 博客(20)
- 收藏
- 关注
原创 C++算法之二分与前缀和(2)
如果相等, 则就要加上, 关键在于for循环里面的顺序, 首先要先加上cnt[a[i] % k ]的数量, 也就是除自己以外, 前面和自己余数相同的个数, 然后再进行。对于余数非0的数而言,他的结果一定是从0加到总数减1,对于余数是0本身的数,他自身就可以作为一个结果,因此要初始化为1,首先要知道一个定理, r % k 的余数 与 l % k 的余数相等, 那么( r - l) % k == 0。此题和上面一题不一样的是,原来(x,y)为格子,而这里为点,所以在枚举长度为R的正方行的时候公式将改成。
2024-01-25 20:40:30
751
原创 C++算法之二分与前缀和(1)
因为当只剩下两个数的时候,L=R-1,M=(L+R)/2=L,当M在红色区域的时候,L=M因此会无限循环下去!因为N最大取5e6,那我们一个数的循环就是约等于2220,所有我们只能枚举两个数,不然会超时!存在一个边界,边界的一边不满足条件,边界的另一边满足条件。如果初始E0能过成立,那当E1>E0的时候,也会成立。即从这个建筑开始,后面的能量都将。[L,M-1]和[M,R],不会有小于0的情况出现。
2024-01-22 23:56:40
2094
原创 AcWing 5400. 蜗牛
②f(i,1):第一次走到竹竿纵坐标位置为b[i]①f(i,0):第一次走到竹竿纵坐标位置为0。原题链接AcWing 5400. 蜗牛。
2024-01-19 15:53:27
402
1
原创 AcWing 5308. 公路
可采用逆向的思维,先把需要的油欠着,再在前面已经经过的站中最便宜的站进行加油。原题链接AcWing 5308. 公路。
2024-01-16 21:40:17
395
1
原创 C++算法之递归与递推(1)
很重要,我们从1~n依次考虑每个数选或不选,记得要考虑每次递归结束和恢复现场。执行是前序遍历,回溯是后序遍历,和栈的思想相同,先进后出。种情况,每个方案长度是n,所以时间复杂度为。,因为从1~n,每个数有两种情况就有。首先我们看数据量n=15,①依次枚举每个数放哪个位置。
2024-01-16 17:15:15
1325
1
原创 空间限制的计算
1byte(字节)=8bite(位)int 4byte 32位char 1byte 8位long long 8byte 64位float 4byte 32位double 8byte 64位64MB==
2024-01-16 16:06:36
386
1
原创 AcWing 5307. 小苹果
先进行时间复杂度的计算,每次拿的个数为ceil(n/3),所以近似计算。原题链接AcWing 5307. 小苹果。
2024-01-15 22:46:30
396
原创 AcWing 5407. 管道
假如说在t时刻满足题目要求,那么比t大的时刻也一定满足要求,故具有单调性,此时可以想到用。对于每次二分的结果可以算出每个阀门所覆盖的范围,然后再进行区间合并。,因为在check()函数中需要将所有区间重新排序。原题链接AcWing 5407. 管道。二分的范围:最坏情况就是在时间S=,最好当然是1,所以二分的区间是[
2024-01-14 18:16:22
413
1
原创 AcWing 803. 区间合并
对pair进行排序,pair的sort排序默认会以第一个数据的大小进行排序,然后用vector来存新的区间,然后对下一个区间(与已经合并的区间没有任何关联)继续进行以上操作。原题链接:AcWing 803. 区间合并。①按左端点对区间进行排序。②对区间进行扫描合并区间(
2024-01-14 12:53:45
619
1
原创 AcWing 4966. 填充
思路:将分成两类,一是S1和S2可以配对,二是S1和S2无法配对(S1和S2分别对应的第一个字符和第二个字符),猜想左边一定有最优解即可。
2024-01-13 16:10:29
546
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人