01 2021 档案
摘要:AcWing 1227.分巧克力 题解 使用整数二分,判定应该向哪边分,最后就是答案 #include <bits/stdc++.h> using namespace std; const int N = 100010; int n, k; vector<pair<int,int>> a; int
阅读全文
摘要:双指针算法 常见问题分类 对于一个序列,用两个指针维护一段区间 对于两个序列,维护某种次序,比如归并排序中合并两个有序序列的操作 双指针算法主要是为了降低程序的时间复杂度,这个算法主要是在实际的问题中要灵活的应用,没有什么模板。 常见问题 AcWing 799.最长连续不重复子序列 AcWing 8
阅读全文
摘要:AcWing 680.剪绳子 原题链接 解题思路 因为要求的是能够满足m条数量的最大绳子的裁剪长度,所以找出数组中的最大值r,使其在0~r中使用浮点数二分,看分成的绳子的数量是否符合要求,如果分成的绳子的数量大于m,则表示绳子还能再分长,令l=mid,反之则令r=mid。最后符合某一精度的两个端点l
阅读全文
摘要:前缀和差分 一维前缀和 主要的作用是可以快速的求出数组中任意一段区间的和 核心代码 S[i] = a[1] + a[2] + ... a[i]//S是前缀和数组,下边从1开始,方便边界的计算 a[l] + ... + a[r] = S[r] - S[l - 1] 题目链接 二维前缀和 类似于一维前缀
阅读全文
摘要:AcWing 788.逆序对的数量 原题链接 思路 暴力的思路 暴力是最容易想到的思路,但是时间复杂度有点高,当数组中数比较多的时候一般会超时 代码如下: ll res = 0; for(int i = 0; i < n; ++ i){ for(int j = i + 1; j < n; ++ j)
阅读全文

浙公网安备 33010602011771号