算法竞赛
算法竞赛
JIeJaitt
a student
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
深度优先搜索与二叉树实践合集
的每种可能的 “根 - 叶” 路径上值的总和全都小于给定的。,并返回最终二叉树的根节点。,请你同时删除树中所有。,就是没有子节点的节点。原创 2021-09-09 23:06:20 · 160 阅读 · 0 评论 -
算法竞赛之数据结构哈希表学习笔记
哈希表(Hash Table)是一种根据关键码值(Key value)而直接进行访问的数据结构,它通过把关键码值映射到表中一个位置来访问记录。哈希表的时间复杂度通常是O(1),是一种非常高效的数据结构。在算法竞赛中,哈希表通常用于快速查找、去重或统计元素个数等问题。原创 2021-09-15 23:48:02 · 307 阅读 · 0 评论 -
PTA 翻转单词
本题目要求将输入字符串翻转。原创 2021-05-12 15:40:36 · 3295 阅读 · 0 评论 -
ACM common template created by acwing yxc
这里写目录标题常用代码模板——基础算法快速排序算法模板归并排序算法模板整数二分算法模板浮点数二分算法模板常用代码模板——基础算法快速排序算法模板void quick_sort(int q[], int l, int r){ if (l >= r) return; int i = l - 1, j = r + 1, x = q[l + r >> 1]; while (i < j) { do i ++ ; while (q[i]原创 2021-10-24 23:10:50 · 217 阅读 · 0 评论 -
基础算法之快速排序学习笔记
素数对猜想”认为“存在无穷多对相邻且差为2的素数”。),请计算不超过N的满足猜想的素数对的个数。现给定任意正整数N(1有d。原创 2021-09-16 23:17:54 · 107 阅读 · 0 评论 -
算法基础之归并排序学习笔记
举一个简单的例子,设计一个排序算法实现对 1000 个整数进行排序。对于很多刚刚接触算法的初学者来说,直接实现对 1000 个整数进行排序是非常困难的。而同样的问题,如果转换成对 2 个整数进行排序,解决起来就很容易。分治算法解决问题的思路是:先将整个问题拆分成多个相互独立且数据量更少的小问题,通过逐一解决这些简单的小问题,最终找到解决整个问题的方案。实际场景中,我们之所以觉得有些问题很难解决,主要原因是该问题涉及到大量的数据,如果只需要处理少量的数据,问题会变得非常容易解决。原创 2021-09-15 20:48:18 · 163 阅读 · 0 评论 -
算法基础之二分学习笔记
任务描述给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。输入格式:一个字符串,长度小于100000。输出格式:输出第一个仅出现一次的字符,若没有则输出no。输入样例:abcabd输出样例:c#include<stdio.h>#include<string.h>char ch[100000];int s=0;int main(){ scanf("%s",ch); for(int i=0;i<strlen(c原创 2021-04-05 20:51:23 · 400 阅读 · 0 评论 -
算法基础之高精度学习笔记
根据有序的特点,实现相关功能的时间复杂度要比无序序列低得多。cpp泛型算法库设计了许多针对有序序列的算法,它们的效率都很高。在使用这些算法之前,请务必保证传递给这些算法的序列是有序的。以下列举的算法都将使用二分查找算法查找序列中满足要求的元素,时间复杂度为O(log n)。行,每行包含两个整数,表示所求元素的起始位置和终止位置。如果数组中不存在该元素,则返回 -1 -1。共一行,包含一个浮点数,表示问题的解。中, 每次将区间长度缩小一半,当。,则返回它的下标,否则返回。按升序排列,数组中的值。原创 2021-11-08 11:59:28 · 687 阅读 · 7 评论 -
算法基础之前缀和与差分学习笔记
项的和」,是一种重要的预处理方式,能大大降低查询的时间复杂度。差分是一种和前缀和相对的策略,可以当做是求和的逆运算。前缀和可以简单理解为「数列的前。原创 2021-09-21 23:49:52 · 163 阅读 · 0 评论 -
算法基础之双指针学习笔记
如果考虑到排序操作的时间复杂度,那么整体的时间复杂度将会是O(n^3 log n),因为在算法中使用了sort.Ints对数组进行排序,其时间复杂度为O(n log n)。总之,双指针算法是一种强大的算法技巧,可以在许多问题中发挥重要作用。通过将一个指针指向数组的起始位置,另一个指针指向数组的末尾位置,我们可以根据当前指针所指向的元素与目标元素的大小关系,逐步缩小搜索范围,从而快速找到目标元素。通过将一个指针指向当前元素,另一个指针指向下一个不同的元素,我们可以在原地删除重复元素,并返回不重复元素的个数。原创 2021-09-15 23:46:53 · 164 阅读 · 0 评论 -
算法基础之位运算学习笔记
算法基础之位运算学习笔记原创 2021-09-08 23:27:56 · 144 阅读 · 0 评论 -
算法基础之离散化学习笔记
算法基础之离散化学习笔记,暂时无内容,稍后补上原创 2021-09-08 23:28:47 · 156 阅读 · 0 评论 -
基础算法之区间合并学习笔记
基础算法之区间合并学习笔记,暂时没有内容,稍后完成更新原创 2021-09-08 23:29:01 · 146 阅读 · 0 评论 -
数据结构之单链表与双链表学习笔记
由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。上顺序,数据的存取往往要在不同的排列顺序中转换。的数据域,另一个是存储下一个结点地址的。的逻辑顺序是通过链表中的。原创 2021-09-28 23:59:46 · 220 阅读 · 0 评论 -
数据结构之栈与单调栈学习笔记
本题目要求读入2个整数A和B,然后输出它们的和。原创 2021-08-31 20:38:51 · 667 阅读 · 0 评论 -
数据结构之队列学习笔记
Problem DescriptionCalculate A + B.InputEach line will contain two integers A and B. Process to end of file.OutputFor each case, output A + B in one line.Sample Input1 1Sample Output2C(gcc)#include<stdio.h>int main(){ int a=0,b原创 2021-08-31 11:05:03 · 118 阅读 · 0 评论 -
数据结构之堆学习笔记
每个节点的键值都大于等于其父亲键值的堆叫做小根堆,否则叫做大根堆。STL 中的 priority_queue 其实就是一个大根堆。(小根)堆主要支持的操作有:插入一个数、查询最小值、删除最小值、合并两个堆、减小一个元素的值。堆是一棵树,其每个节点都有一个键值,且每个节点的键值都大于等于/小于等于其父亲的键值。一些功能更强大的堆还支持可持久化,也就是对任意历史版本进行查询或者操作,产生新的版本。一些功能强大的堆(可并堆)还能(高效地)支持 merge 等操作。习惯上,不加限定提到“堆”时往往都指二叉堆。原创 2021-09-15 23:46:15 · 180 阅读 · 0 评论 -
贪心算法详解
贪心算法是所有算法中最简单,最易实现的算法,该算法之所以“贪心”,是因为算法中的每一步都追求最优的解决方案。举个例子,假设有1、2、5、10这4种面值的纸币,要求在不限制各种纸币使用数量的情况下,用尽可能少的纸币拼凑出的总面值为18。可以看到,每一步都力求最大限度地解决问题,每一步都选择的是当前最优的解决方案,这种解决问题的算法就是贪心算法。注意,虽然贪心算法每一步都是最优的解决方案,但整个算法并不一定是最优的。...原创 2021-09-15 20:49:55 · 307 阅读 · 0 评论 -
计算矩阵边缘元素之和
任务描述输入一个整数矩阵,计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。输入格式:第一行分别为矩阵的行数m和列数n(m < 100,n < 100),两者之间以一个空格分开。 接下来输入的m行数据中,每行包含n个整数,整数之间以一个空格分开。输出格式:输出对应矩阵的边缘元素和输入样例:3 33 4 13 7 12 0 1输出样例:15题目来源该题目选自OpenJudge网站,在线网址:http://noi.o原创 2021-04-05 20:50:01 · 2621 阅读 · 0 评论 -
个位数字统计
任务描述:给定一个整数n,统计每种不同的个位数字出现的次数。例如,给定n=100811,则有2个0,3个1,1个8。输入格式:输入一个不超过长整型范围的整数n。输出格式:对n中每一种不同的各位数字,以 D:M 的格式在一行中输出该位数字 D 及其在 n 中出现的次数 M。要求按 D 的升序输出。输入样例:100811输出样例:0:21:38:1代码分享#include<stdio.h>int main (){ int n,s,a[100],i,flag=0原创 2021-04-05 20:41:53 · 1752 阅读 · 4 评论 -
B. Equal Candies
There are nnn boxes with different quantities of candies in each of them. The iii-th box has aia_iai candies inside.You also have nnn friends that you want to give the candies to, so you decided to give each friend a box of candies. But, you don’t want a原创 2022-05-17 15:36:51 · 272 阅读 · 0 评论 -
OI/ACM 刷题网站 人气SPOJ简介
SPOJ简介SPOJ是波兰最为出色的Online Judge之一,界面和谐,题目类型也非常丰富,适合有一定基础的选手练习,对高手而言也是个提高能力的良好平台。SPOJ题目分类:classical,challenge,partial,tutorial。classical:ACM题型,通过所有数据才能算ACchallenge:有趣的题目,每个题目有不同的评分标准(代码长短,效果好坏,速度等),感觉都挺难得,至今没敢碰。partial:OI题型,根据通过的测试数据比例,得到部分分。tutorial:原创 2022-05-06 15:27:39 · 715 阅读 · 0 评论 -
Recursion
LeetCode 2. 两数相加原创 2021-09-29 01:27:47 · 273 阅读 · 1 评论 -
Nine lectures on Knapsack Problems
Knapsack Problems-背包九讲01背包问题完全背包问题01背包问题题目描述:有N件物品和一个容量为V的背包。放入第i件物品耗费的空间是CiC_iCi,得到的价值是WiW_iWi。求解将哪些物品装入背包可使价值总和最大。算法思路:这是最基础的背包问题,特点是每种物品仅有一件,可以选择放或不放。用子问题定义状态,即F[i,v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:F[i,v]=max{F[i−1,v],F[i−1,v−CiC_iCi]+WiW_原创 2021-09-02 00:00:01 · 189 阅读 · 0 评论 -
Basic course of algorithm
算法基础课第二讲 数据结构AcWing 828. 模拟栈AcWing 3302. 表达式求值第二讲 数据结构AcWing 828. 模拟栈题目描述:AcWing 828. 模拟栈。实现一个栈,栈初始为空,支持四种操作:push x – 向栈顶插入一个数 x;pop – 从栈顶弹出一个数;empty – 判断栈是否为空;query – 查询栈顶元素。现在要对栈进行 M 个操作,其中的每个操作 3 和操作 4 都要输出相应的结果。#include <bits/stdc++.h>原创 2021-08-30 22:11:09 · 134 阅读 · 0 评论 -
由数据范围反推算法复杂度以及算法内容
一般ACM或者笔试题的时间限制是1秒或2秒。在这种情况下,C++代码中的操作次数控制在 10710^7107∼10810^8108为最佳。下面给出在不同数据范围下,代码的时间复杂度和算法该如何选择原创 2021-10-27 22:54:32 · 228 阅读 · 13 评论 -
【题单-春季每日一题2022】学算法就上AcWing,春季组队学习算法
春季每日一题2022Week 1:3 月 14 日 ~ 3 月 20 日AcWing 3346. 你知道你的ABC吗输入格式输出格式数据范围输入样例:输出样例:算法标签Week 1:3 月 14 日 ~ 3 月 20 日AcWing 3346. 你知道你的ABC吗题目描述:AcWing 3346. 你知道你的ABC吗。Farmer John 的奶牛正在 mooZ视频会议平台上举行每日集会。她们发明了一个简单的数字游戏,为会议增添一些乐趣。Elsie 有三个正整数 AAA、BBB 和 CCC (A≤B≤原创 2022-03-16 18:53:48 · 5847 阅读 · 0 评论 -
Linkedlist
LinkedlistLeetCode 2. 两数相加LeetCode 146. LRU 缓存LeetCode 25. K 个一组翻转链表剑指 Offer 24. 反转链表LeetCode 143. 重排链表LeetCode 21. 合并两个有序链表LeetCode 206. 反转链表剑指 Offer 22. 链表中倒数第k个节点LeetCode 23. 合并K个升序链表面试题 16.25. LRU 缓存LeetCode 92. 反转链表 IILeetCode 234. 回文链表LeetCode 2.原创 2021-09-08 23:29:33 · 130 阅读 · 0 评论 -
Prefix Sum
Prefix SumLeetCode 560. 和为 K 的子数组面试题 17.24. 最大子矩阵LeetCode 525. 连续数组LeetCode 1838. 最高频元素的频数LeetCode 1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗?LeetCode 523. 连续的子数组和LeetCode 930. 和相同的二元子数组LeetCode 1004. 最大连续1的个数 IIILeetCode 1310. 子数组异或查询LeetCode 209. 长度最小的子数组LeetCode 1442.原创 2021-09-12 11:37:29 · 202 阅读 · 0 评论 -
Sliding Window
Sliding WindowLeetCode 3. 无重复字符的最长子串LeetCode 76. 最小覆盖子串剑指 Offer 48. 最长不含重复字符的子字符串剑指 Offer 59 - I. 滑动窗口的最大值LeetCode 239. 滑动窗口最大值LeetCode 718. 最长重复子数组LeetCode 1838. 最高频元素的频数LeetCode 567. 字符串的排列LeetCode 1044. 最长重复子串LeetCode 930. 和相同的二元子数组LeetCode 3. 无重复字符的最原创 2021-08-30 22:22:13 · 212 阅读 · 0 评论 -
Greedy
GreedyLeetCode 135. 分发糖果LeetCode 11. 盛最多水的容器LeetCode 611. 有效三角形的个数LeetCode 45. 跳跃游戏 IILeetCode 179. 最大数LeetCode 55. 跳跃游戏LeetCode 881. 救生艇LeetCode 678. 有效的括号字符串LeetCode 402. 移掉 K 位数字LeetCode 135. 分发糖果LeetCode 11. 盛最多水的容器LeetCode 611. 有效三角形的个数LeetCode原创 2021-08-30 17:17:32 · 428 阅读 · 0 评论 -
String
LeetCode 3. 无重复字符的最长子串LeetCode 5. 最长回文子串LeetCode 22. 括号生成LeetCode 114. 最长公共前發LeetCode 72. 编辑距离剑指 Offer 38. 字符串的排列LeetCode 415. 字符串相加LeetCode 20. 有效的括号...原创 2021-08-30 16:36:39 · 282 阅读 · 0 评论 -
sorting
sortingLeetCode 15. 三数之和LeetCode 215. 数组中的第K个最大元素剑指 Offer 03. 数组中重复的数字LeetCode 88. 合并两个有序数组LeetCode 217. 存在重复元素LeetCode 56. 合并区间LeetCode 16. 最接近的三数之和LeetCode 912. 排序数组LeetCode 611. 有效三角形的个数面试题 01.01. 判定字符是否唯一LeetCode 179. 最大数LeetCode 15. 三数之和LeetCode 2原创 2021-09-02 00:02:08 · 147 阅读 · 0 评论 -
Stack
剑指 Offer 09. 用两个栈实现队列LeetCode 42. 接雨水LeetCode 20. 有效的括号LeetCode 32. 最长有效括号LeetCode 394. 字符串解码LeetCode 739. 每日温度LeetCode 1190. 反转每对括号间的子串LeetCode 234. 回文链表剑指 Offer 06. 从尾到头打印链表LeetCode 84. 柱状图中最大的矩形LeetCode 678. 有效的括号字符串LeetCode 402. 移掉 K 位数字..原创 2021-09-02 00:01:37 · 90 阅读 · 0 评论 -
Binary tree
Binary treeLeetCode 102. 二叉树的层序遍历LeetCode 124. 二叉树中的最大路径和LeetCode103. 二叉树的锯齿形层序遍历LeetCode 543. 二叉树的直径LeetCode 105. 从前序与中序遍历序列构造二叉树LeetCode 226. 翻转二叉树LeetCode 104. 二叉树的最大深度剑指 Offer 07. 重建二叉树LeetCode 199. 二叉树的右视图LeetCode 98. 验证二叉搜索树剑指 Offer 26. 树的子结构LeetC原创 2021-09-06 20:54:24 · 125 阅读 · 0 评论 -
模版题集合
单链表 —— 模板题 AcWing 826. 单链表// head存储链表头,e[]存储节点的值,ne[]存储节点的next指针,idx表示当前用到了哪个节点int head, e[N], ne[N], idx;// 初始化void init(){ head = -1; idx = 0;}// 在链表头插入一个数avoid insert(int a){ e[idx] = a, ne[idx] = head, head = idx ++ ;}// 将头结点删原创 2021-08-10 19:24:04 · 213 阅读 · 0 评论 -
Hash Table
/** * LeetCode 1. 两数之和 */class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> res; unordered_map<int,int> hash; for(int i=0;i<nums.size();++i) {原创 2021-09-24 00:00:07 · 133 阅读 · 0 评论
分享