优化
Lawrence_121
千里之行,始于足下
展开
-
k倍区间 (抽屉原理)
转自:https://www.cnblogs.com/tyty-Somnuspoppy/p/8454521.html给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间。 你能求出数列中总共有多少个K倍区间吗? 输入-----第一行包含两个整数N和K。(1 &l...转载 2018-04-23 06:58:59 · 403 阅读 · 0 评论 -
分巧克力-------二分查找
儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有N块巧克力,其中第i块是Hi Wi的方格组成的长方形。 为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足: 1. 形状是正方形,边长是整数 2. 大小相同 例如一块6x5的巧克力可以切出6块2x2的巧克力或者2块3x3的巧克力。...原创 2018-11-05 18:46:36 · 208 阅读 · 0 评论 -
深度搜索之基本款
思路:从1号节点出发开始遍历。如果遍历结束时所有visited[]数组的值全都是true,那么就说明整个图是连通的,否则就不是。#include <iostream>#include <vector>using namespace std;int m, n;vector<int> g[100001];bool visited[100001]...原创 2018-11-10 15:55:10 · 132 阅读 · 0 评论 -
k倍区间
给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间。你能求出数列中总共有多少个K倍区间吗?输入-----第一行包含两个整数N和K。(1 <= N, K <= 100000)以下N行每行包含一个整数Ai。(1 <= Ai <= ...原创 2018-06-18 09:49:27 · 174 阅读 · 0 评论 -
偶像的条件
/*描述小Hi的学校正面临着废校的大危机。面对学校的危机,小Hi同学们决定从ABC三个班中各挑出一名同学成为偶像。成为偶像团体的条件之一,就是3名团员之间的身高差越小越好。已知ABC三个班同学的身高分别是A1..AN, B1..BM 和 C1..CL。请你从中选出3名同学Ai, Bj, Ck使得D=|Ai-Bj|+|Bj-Ck|+|Ck-Ai|最小。输入第一行包含3个整数,N,...原创 2018-06-17 10:14:47 · 387 阅读 · 0 评论 -
小Hi和小Ho的礼物
/* 描述 某人有N袋金币,其中第i袋内金币的数量是Ai。现在他决定选出2袋金币送给小Hi,再选2袋金币送给小Ho,同时使得小Hi和小Ho得到的金币总数相等。 他想知道一共有多少种不同的选择方法。 具体来说,有多少种下标四元组(i, j, p, q)满足i, j, p, q两两不同,并且i < j, p < q, Ai + Aj = Ap + Aq。 ...原创 2018-06-08 17:03:57 · 922 阅读 · 0 评论 -
四平方和问题优化:
四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和。如果把0包括进去,就正好可以表示为4个数的平方和。比如:5 = 0^2 + 0^2 + 1^2 + 2^27 = 1^2 + 1^2 + 1^2 + 2^2(^符号表示乘方的意思)对于一个给定的正整数,可能存在多种平方和的表示法。要求你对4个数排序:0 <= a <= b <=...原创 2018-06-08 11:03:10 · 596 阅读 · 0 评论 -
一面砖墙
/*小Hi的学校的教学楼前有一面砖墙。这面墙由N层砖砌成,其中从上到下第i层包含Ci块高度相同但宽度不同的砖。例如下图所示的这面墙,由3层砖砌成。其中第1层包含3块砖,从左到右宽度依次是6、4和3;第2层包含4块砖,从左到右依次宽度依次是4、4、2和3;第3层包含3块砖,从左到右宽度依次是5、6和2。+------------+| 6 | 4 |3 |+------------+...原创 2018-06-06 21:17:26 · 970 阅读 · 0 评论 -
在n个元素的数组中,找到差值为k的数字对去重后的个数
/* 在n个元素的数组中,找到差值为k的数字对去重后的个数 思路: 双重循环枚举对,然后把一对数放在set容器去重,最后输出set的大小 缺点: 当数据很大时,时间复杂度会很高*/#include <iostream>#include <set>using namespace std;set <pair<i...原创 2018-06-06 20:58:28 · 840 阅读 · 1 评论 -
N个整数中,在所有大于等于K的两个数的差中,找出最小的差(双指针优化)
先介绍一下暴力枚举,有的时候我们要对一个数组进行i和j的双重循环枚举: 当i=0时,j要从下标1遍历到5。时间复杂度为O(N^2)双指针的思路是什么呢?就是j下标并不需要从i+1开始重新向后枚举一遍,而是随着i向后移动,j也向后移动。 从图中我们可以看到j一直是往右走,不会出现往左移动,当然前提的保证数组是有序的,这样的时间复杂度为O(N)/* 给定N个整数A1,A2....原创 2018-06-12 11:34:21 · 1153 阅读 · 0 评论 -
平方十位数
/* 标题:平方十位数 由0~9这10个数字不重复、不遗漏,可以组成很多10位数字。 这其中也有很多恰好是平方数(是某个数的平方)。 比如:1026753849,就是其中最小的一个平方数。 请你找出其中最大的一个平方数是多少? 思路1: 1.枚举答案 X[9876543210,1026753849] 2.判断是不是恰好0-9十个数字 ...原创 2018-06-04 19:55:02 · 1174 阅读 · 0 评论 -
深度搜索之(加强版)序号
在之前基本款代码里使用visited数组来区分顶点,也就是visited[x]==true表示x顶点已经访问过,visited[x]==false表示还没访问过x顶点。加强版中使用”颜色”来区分顶点,除此之外还给每个顶点都打上一个时间戳。 一开始所有顶点都是白色的,白色代表顶点还没有被访问过。当我们第一次遍历到一个顶点x时,会把顶点x染成灰色...原创 2018-11-12 10:49:59 · 209 阅读 · 0 评论