概述 前面算法系列文章有写过分治算法基本原理和实践,对于分治算法主要是理解递归的过程。二分法是分治算法的一种,相比分治算法会简单很多,因为少了递归的存在。 在计算机科学中,二分查找算法(英语:binary search algorithm),也称折半搜索算法(英语:half-interval sea ...
分类:
其他好文 时间:
2021-07-26 16:54:02
阅读次数:
0
算法方向分析 对于这题 \(\le 1000000\) 的数据规模显然只允许我们用一重循环。 最长,可见这是道最值问题。 最值问题可以用贪心,DP,二分…… 这道题我们用 DP 来做。 构建状态 首先,我们需要构建状态,状态的构建不是唯一的,受最长上升子序列的影响,我是这样构建的:令 \(f_i\) ...
分类:
其他好文 时间:
2021-07-19 16:39:33
阅读次数:
0
这个题很明显的二分枚举,但是还有一个前缀和有点坑人。 这题题其实点不多,就两个关键点。 二分的判断 可以看到:在W取0时,所有的区间内的矿石都可以选上,而在W大于最大的质量时,所有的矿石都选不上。 然后简单算一下就发现:W越大,矿石选的越少,W越小,矿石选的越多。 所以,随着W增大,Y值减小。 所以 ...
分类:
其他好文 时间:
2021-07-19 16:34:37
阅读次数:
0
前言: 冒泡,选择:使用了普通双指针法 插入,快速,归并:使用了二分法,递归 冒泡排序 原理:不断比较相邻两个数得大小,把较大的数交换到靠后的位置 def bubbleSort(iList): '''冒泡排序 ''' if len(iList) <= 1: return iList for i in ...
分类:
编程语言 时间:
2021-07-16 17:32:50
阅读次数:
0
数据结构 Java 数据结构 List List 都有序; 线程不安全; 有长度; 内部持有 modCount 记录修改次数 ArrayList 默认长度为10、超出长度时进行扩容(0.5倍),最大长度 2 的 31 次方 -8, 超出会OOM; 特点: 查快删改慢 LinkedList 双向链表, ...
分类:
其他好文 时间:
2021-07-12 18:04:31
阅读次数:
0
题目大意: 有电器和配套的插座,以及每种无限个的装换插头 问:最少多少电器用不上电? 画画图,可以知道是一个二分图,中间结点需要用传递闭包优化掉 Floyd+匈牙利算法(二分图匹配) 1 #include<map> 2 #include<cmath> 3 #include<queue> 4 #inc ...
分类:
其他好文 时间:
2021-07-02 15:43:27
阅读次数:
0
P3438 [POI2006]ZAB-Frogs 给出一个不一样的解法。不需要用到斜率优化等高级算法。 下文记 \(n=w_x,m=w_y\)。 首先,答案显然满足可二分性,因此二分答案 \(d\in [0,nm]\) 确定距离的平方。 这样我们将题目转化为:求起点到终点之间是否有一条路径使得任何一 ...
分类:
其他好文 时间:
2021-07-01 17:28:49
阅读次数:
0
?常见基本排序 选择排序 ? 基本思路:从第一位开始标记,每次选出最小数字与标记位交换 代码实现: private static void selectSort(int[] arr) { if(arr == null || arr.length < 2){ return; } for (int i ...
分类:
编程语言 时间:
2021-06-30 17:58:34
阅读次数:
0
简单题,我秒了。 把$k=n*m-k$,等于询问$k$小值。 考虑二分,二分答案$md$,考虑判定是否存在一种方案使得$k$小值$\leq md$ 事实上就是判定是否存在一个选数方案使得$\leq md$的数数量$\geq k$。 题目中一行一列最多只能选择一个数,用$1$流量限制。 考虑二分图。把 ...
分类:
其他好文 时间:
2021-06-30 17:58:01
阅读次数:
0
二分 求一个序列的最长上升子序列个数。 本程序采用边读边处理 + 二分法。 ll f[maxn], ans = 1; //注意答案个数初始化为1 int main() { ll n = read(); for (int i = 1; i <= n; ++i) { int x = read(); if ...
分类:
其他好文 时间:
2021-06-29 15:59:12
阅读次数:
0