【《算法竞赛——从入门到进阶》随笔(1)】教程文章相关的互联网学习教程文章

《算法竞赛进阶指南》学习总结 #include<algorithm>【代码】

今天下午大致学完了进阶指南中algorithm头文件下的内容,在这里进行一个总结。 reverse翻转 顾名思义,reverse进行的操作就是翻转原来的顺序,理解非常简单,故不赘述。 操作样例: #include<bits/stdc++.h> using namespace std; vector<int>a; int b[233]; int main() {int na,nb;  //vector的实现scanf("%d",&na);for(int i=0;i<na;i++){int x;scanf("%d",&x);a.push_back(x);}reverse(a.begin(),a.end());for(int i=...

POJ1722 算法竞赛进阶指南 SUBSTRACT减操作【代码】

原题连接 题目描述 给定一个整数数组\(a_1,a_2,…,a_n\)。 定义数组第 i 位上的减操作:把\(a_i\)和\(a_{i+1}\)换成\(a_i - a_{i+1}\)。 用con(a,i)表示减操作,可以表示为: \[ con(a,i)=[a_1,a_2,…,a_{i-1},a_i-a_{i+1},a_{i+2},…,a_n] \] 长度为 n 的数组,经过 n-1 次减操作后,就可以得到一个整数t。 例如数组[12,10,4,3,5]经过如下操作可得到整数4: \[ con([12,10,4,3,5],2) = [12,6,3,5] \\ con([12,6,3,5] ,3) = [12,6,...

POJ1639 算法竞赛进阶指南 野餐规划【代码】【图】

题目描述 原题链接 一群小丑演员,以其出色的柔术表演,可以无限量的钻进同一辆汽车中,而闻名世界。 现在他们想要去公园玩耍,但是他们的经费非常紧缺。 他们将乘车前往公园,为了减少花费,他们决定选择一种合理的乘车方式,可以使得他们去往公园需要的所有汽车行驶的总公里数最少。 为此,他们愿意通过很多人挤在同一辆车的方式,来减少汽车行驶的总花销。 由此,他们可以很多人驾车到某一个兄弟的家里,然后所有人都钻进一辆车...

左神算法进阶班1_2判断两个树的结构是否相同【代码】

Promblem:   给定两个二叉树T1和T2,返回T1的某个子树结构是否与T2的结构相等。 Solution:   首相将两棵树进行序列化【切记加上分割符和空节点标记】,然后使用KMP算法进行两个字符串匹配,判断子树串是否属于原树串即可 Code:1 #pragma once2 #include <iostream>3 #include <string>4 5 using namespace std;6 7 struct Node8 {9 char c; 10 Node* lchild; 11 Node* rchild; 12 Node(char a) :c(a), lchild(...

教你学习大厂面试算法真题解析入门到进阶【图】

附Java/C/C++/机器学习/算法与数据结构/前端/安卓/Python/程序员必读书籍书单大全: 书单导航页(点击右侧 极客侠栈 即可打开个人博客):极客侠栈 ①【Java】学习之路吐血整理技术书从入门到进阶最全50+本(珍藏版) ②【算法数据结构+acm】从入门到进阶吐血整理书单50+本(珍藏版) ③【数据库】从入门到进阶必读18本技术书籍网盘吐血整理网盘(珍藏版) ④【Web前端】从HTML到JS到AJAX到HTTP从框架到全栈帮你走更少弯路(珍藏版) ...

《算法竞赛进阶指南》1.3链表

136. 邻值查找 给定一个长度为 n 的序列 A,A 中的数各不相同。对于 A 中的每一个数 Ai,求: min 1≤j<i |Ai?Aj| 以及令上式取到最小值的 j(记为 Pi)。若最小值点不唯一,则选择使 Aj较小的那个。 输入格式 第一行输入整数n,代表序列长度。 第二行输入n个整数A1…An,代表序列的具体数值,数值之间用空格隔开。 输出格式 输出共n-1行,每行输出两个整数,数值之间用空格隔开。 分别表示当i取2~n时,对应的min1≤j<i|Ai?Aj|和Pi的...

《算法竞赛进阶指南》0.5排序

103. 电影 莫斯科正在举办一个大型国际会议,有n个来自不同国家的科学家参会。 每个科学家都只懂得一种语言。 为了方便起见,我们把世界上的所有语言用1到109之间的整数编号。 在会议结束后,所有的科学家决定一起去看场电影放松一下。 他们去的电影院里一共有m部电影正在上映,每部电影的语音和字幕都采用不同的语言。 对于观影的科学家来说,如果能听懂电影的语音,他就会很开心;如果能看懂字幕,他就会比较开心;如果全都不懂,...

《算法竞赛进阶指南》0.4二分

102. 最佳牛围栏 农夫约翰的农场由N块田地组成,每块地里都有一定数量的牛,其数量不会少于1头,也不会超过2000头。 约翰希望用围栏将一部分连续的田地围起来,并使得围起来的区域内每块地包含的牛的数量的平均值达到最大。 围起区域内至少需要包含 F块地,其中 F会在输入中给出。 在给定条件下,计算围起区域内每块地包含的牛的数量的平均值可能的最大值是多少。 输入格式 第一行输入整数 N和 F,数据间用空格隔开。 接下来 N行,每...

基础算法——进阶sort与重载运算符【代码】

上次我们讲了桶排序与快速排序,上题:题目描述: 输入n个数,对它们由大到小进行排序后输出。输入描述: 第一行一个正整数n,表示有n个数。 第二行有n个不超过1000的正整数,中间用空格隔开。输出描述: 经排序后的数,中间用空格隔开。输入样例: 5 9 2 3 7 9输出样例: 9 9 7 3 2 其他说明: n<1000000。  我们之前学的sort只能对整数或小数进行排序,但如果我们相对结构体进行排序,sort是无法实现的,因为你没有告诉程序怎么...

进阶算法03【代码】【图】

给定一个数组,数组中有0,正数,负数,找到一个累加和为目标值的最长子数组,返回最长子数组的长度。int maxLength(int *arr, int len, int target) {if (!arr || len == 0)return 0;int sum = 0;int ret = 0;map<int, int> m; //first:子数组arr[0...second]的和,second:末尾下标m.insert(make_pair(0, -1));for (int i = 0; i < len; i++){sum += arr[i];auto it = m.find(sum - target);if (it != m.end())ret = max(...

蓝书(算法竞赛进阶指南)刷题记录——POJ1733 Parity game(带权并查集)【代码】

题目:POJ1733. 题目大意:给定nnn个区间[li,ri][l_i,r_i][li?,ri?]和aia_iai?,表示[li,ri][l_i,r_i][li?,ri?]的权值和为奇数或偶数,问到哪一个区间不矛盾,但它的下一个区间矛盾. 1≤n≤5?1031\leq n\leq 5*10^31≤n≤5?103. 容易想到前缀和,那么区间就变成了两个点li?1l_i-1li??1和rir_iri?上的信息. 考虑用带权并查集维护每个点的前缀和d[i]d[i]d[i],一个点iii的点权表示iii的前缀和异或iii的父亲的点权,即区间[fa[i]+1,i]...

[算法进阶0x10]基本数据结构C作业总结

t1-Supermarket 超市利润 题目大意 给定n个商品,每个商品有利润pi和过期时间di。每天只能卖一个商品,过期商品不能卖。求如何安排每天卖的商品可以使收益最大。 分析 一开始打了一个复杂度跑不满\(n^2\)的暴力发现T掉了,就换成了\(nlogn\)的算法,但是依旧是T掉了,而且T飞掉了,看到洛谷里有人发帖子说只能用cin才A掉了。 首先,很明显最优的是一直在卖东西,那么可以将所有的已经当前决定是卖掉的物品放入一个小根堆中。 我们先...

进阶-第49__深入聚合数据分析_percentiles百分比算法以及网站访问时延统计

需求:比如有一个网站,记录下了每次请求的访问的耗时,需要统计tp50,tp90,tp99 tp50:50%的请求的耗时最长在多长时间 tp90:90%的请求的耗时最长在多长时间 tp99:99%的请求的耗时最长在多长时间 建立mappingsPUT /website { "mappings": { "logs": { "properties": { "latency": {//响应时间 "type": "long" }, "province": {...

【读书笔记】《算法竞赛进阶指南》读书笔记——0x10基本数据结构【代码】

to do(perhaps never) CH1401 后缀数组 所有课后题栈 例题:HDU4699 Editor维护一个整数序列的编辑器,支持以下五种操作: I x:在当前光标位置处插入一个整数x,插入后光标移动到x之后 D:删除光标之前的一个元素,相当于按下退格键 L:光标左移一个位置,相当于按下左方向键 R:光标右移一个位置,相当于按下右方向键 Q k:在位置k之前最大的前缀和,k不超过光标当前的位置建立两个栈,栈A储存从开头到光标之前的元素,栈B储存光...

跟左神学算法7 进阶数据结构(哈希相关)【代码】

内容: 1、认识哈希函数与哈希表 2、设计RandomPool结构 3、认识布隆过滤器 4、认识一致性哈希 5、并查集 6、经典的岛问题 1、认识哈希函数与哈希表 哈希函数: Hash(又称散列或哈希)就是把任意长度的输入通过散列算法,变换成固定长度的输出,该输出就是散列值。 这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出, 而不可能从散列值来唯一的确定输入值。简单的说就是...