摘要:
同时输入两个整数: a,b=map(int,input().split()) 阅读全文
摘要:
题目链接 题目 给定一个长度为 n 的整数序列 a1,a2,…,an。 我们可以对该序列进行修改操作,每次操作选中其中一个元素,并使其增加 1。 现在,请你计算要使得序列中的元素各不相同,至少需要进行多少次操作。 输入格式 第一行包含整数 n。 第二行包含 n 个整数 a1,a2,…,an。 输出格 阅读全文
摘要:
题意 给定n个集合,以及一个k,求有多少对集合满足> = k, 数据量N最大为1e5。 思路 算法:状态压缩, 把每一个集合都压缩成一个数字。 因为数据量太大,考虑压缩数据量。 又因为每个集合最多是1-10 数据最多有$2^{10}$ 种情况 根据抽屉原理,所以可以将数据压缩到$2^{10}$ 又因 阅读全文
摘要:
原文1 原文1 算法作用 判断一个数是否是素数 算法依据 费马小定理 如果P是素数,且整数a不是p的倍数有: $$a^{p-1}\equiv 1 \pmod P$$ 费马定理只是n是素数的必要条件。即费马定理不成立,n一定是合数;费马定理成立,n可能是素数。 点击查看证明 性质 1:$p-1$个整数 阅读全文
摘要:
概念 图的生成树 它的一棵含有所有顶点的无环连通子图。 特点: 有n个顶点一定有,n-1条边。 生成树是图的极小连通子图 (去掉一条边则非连通)。 分类: 深度优先生成树 广度优先生成树 最小生成树: 对于加权图(网) 的生成树中边的权重之和最小的生成树。 最小生成树可能不唯一 最小生成树作用: 修 阅读全文
摘要:
题目 坑点 题目输入的时候会有重边。比如说: 2 2 1 2 1 1 2 2 答案应该是1。 题解 就是jd最短路模板题,不多说 代码1:临界矩阵 使用临界矩阵,注意判断重边 #include <bits/stdc++.h> using namespace std; typedef long lon 阅读全文
摘要:
题意: 有一个农夫要把一个木板钜成几块给定长度的小木板,每次锯都要收取一定费用,这个费用就是当前锯的这个木版的长度 给定木板的个数n,每个要求的小木板的长度。求最小费用。 提示: 以 3 8 8 5为例: 先从无限长的木板上锯下长度为 21 的木板,花费 21 再从长度为21的木板上锯下长度为5的木 阅读全文
摘要:
基础概念 ** 哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。** 结点的权值: 将树中结点赋给一个含有某种含义的数值。记为:Wi(i=1,2,...n) 路径长度: 等于路径上的结点数减1。 结点的带权路径长度: 从根结点到该结点的路径长度与该结点的权值的乘积。记为:Li(i=1,2,. 阅读全文
摘要:
题目 Description 在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是——(1).每个节点中包含有一个关键值 (2).任意一个节点的左子树(如果存在的话)的关键值小于该节点的关键值 (3).任意一个节点的右子树(如果存在的话)的关键值大于该节点的关键值。现给定一组数据,请你对这组 阅读全文
摘要:
概念 相同点: set和multiset会根据特定的排序原则将元素排序。 插入一个数,删除一个数都能够在O(logn)的时间内完成。 两者不同之处在于 multisets允许元素重复,而set不允许重复。 常用操作 变动性操作 c.insert(elem) 插入一个elem副本,返回新元素位置,无论 阅读全文