首页 > 编程语言 >算法

算法

时间:2023-10-10 20:33:26浏览次数:56  
标签:ACM 学习 算法 https 程序设计 排序

  1. 学习道路:

    1. 通过第一学期的算法学习,顺利成为一名算法竞赛选手。

    2. 学习目标 :通过科学的方式学习算法,向 ACM-ICPC(是计算机类竞赛最有含金量的比赛)奖牌冲锋

    3. 在第二学期参加比赛,比赛中学习,学习中比赛,其中每年能够有多次外出比赛的机会

    参加的主要赛事(A类赛事或企业认可度高的赛事):

    比赛 日期 赛制
    蓝桥杯 4/6月 OI
    天梯赛 4月 IOI
    广东省大学生程序设计竞赛 5月 ACM
    国际大学生程序设计邀请赛 & 中国大学生程序设计邀请赛 5月 ACM
    睿抗 7/8月 IOI
    百度之星 8/9月 ACM
    国际大学生程序设计区域赛 & 中国大学生程序设计分站赛 10/11月 ACM

C with STL (string,map,set)

C++基础 学习网址 : https://oi-wiki.org/lang/

  1. Hello, World!
  2. C,C++的输入输出
  3. 变量
  4. 运算
  5. 流程控制语句
  6. 高级数据类型
  7. 函数
  8. string
  9. map,set(C++ 标准库 -> STL容器 -> 关联式容器)

推荐的学习视频:程序设计与算法(一)C语言程序设计https://www.icourse163.org/course/PKU-1001553023

课后练习做他这个和我们都是一样的,但这个课程配套OJ太老了,还是推荐下面练习的题单

image

红色圈起来的部分是和考核强相关的,没圈起来并不意味着不重要

image

位运算

位运算 学习网址 : https://oi-wiki.org/math/bit/

  1. 与、或、异或
  2. 取反
  3. 左移和右移
  4. 复合赋值位运算符
  5. 关于优先级
  6. 位运算的应用
    1. 有关 2 的幂的应用
    2. 判断两非零数符号是否相同
    3. 换两个数
    4. 操作一个数的二进制位
  7. *内建函数(选学)

排序

排序 学习网址 :https://oi-wiki.org/basic/sort-intro/

  1. 冒泡排序
  2. 归并排序
  3. 桶排序
  4. 快速排序
  5. 排序相关 STL
  6. *排序应用

Q :排序的循环,递归都好抽象?我该如何快速掌握排序的算法?

A: 学习算法的快速方法就是将程序每次的执行过程打印出来,看出其交换元素或递归区间的改变,详细见代码块。

以冒泡排序为例,在学习其算法思想后,将每一阶段交换的位置及代码打印出来,或对着代码用纸笔模拟排序过程有助于掌握算法。

Q :好多排序呀!这么多排序算法竞赛真的用的上吗?要不要学那么多,哪个排序最快,是不是会一个就够了?

A : 各种排序都有其独特的应用场景,冒泡排序和归并排序经常处理有关逆序对的问题;归并排序和快速排序用到了分治,递归的思想,学习这个排序是为了初探分治,递归,让自己能写出具有分治和递归的算法;桶排序元素的值映射到数组下标上,在特定应用背景下和后面学习权值线段树中会用到;平时更多用到的是 sort(a + 1, a + 1 + n); ,这个功能很强大,对于string, pair,array,和重载了远算符的结构体也能进行排序,所以会在二轮考核的机试中考核 sort(); ,笔试中考察能否正确描述冒泡排序,归并排序,桶排序,快速排序的思想。

#include <bits/stdc++.h>

using namespace std;

int n = 5;
int a[10] = {0, 3, 4, 5, 1, 2};
int main()
{
    cout<<"init array : "<<a[1]<<" "<<a[2]<<" "<<a[3]<<" "<<a[4]<<" "<<a[5]<<'\n';
    cout<<'\n';
    for(int i = 1; i < n; i++)
    {
        for(int j = 1; j <= n - i; j++)
            if(a[j] > a[j + 1])
            {
                swap(a[j], a[j + 1]);
                cout<<"swap : ";
                cout<<"i : "<<i<<"  j  : "<<j<<'\n';
                cout<<a[1]<<" "<<a[2]<<" "<<a[3]<<" "<<a[4]<<" "<<a[5]<<'\n';
                cout<<'\n';
            }
    }
    cout<<"end sort : "<<a[1]<<" "<<a[2]<<" "<<a[3]<<" "<<a[4]<<" "<<a[5]<<'\n';
    return 0;
}

image

练习

题单https://www.luogu.com.cn/training/380528

思维题 : https://www.luogu.com.cn/training/391817#problems

模拟考核 : https://www.luogu.com.cn/training/385785#problems

注意!这个题单是动态更新的,对于题号CF或者AT开头的题目,需要你去题目来源网站注册账号,提交submit

对于不会的题目,可以再想想,也可以看题解或者在群里面问。

image

image

标签:ACM,学习,算法,https,程序设计,排序
From: https://www.cnblogs.com/magicat/p/17755661.html

相关文章

  • 搜索算法:线性搜索、二分法
    搜索算法:1.线性搜索:循环遍历,判断是否等于目标值2.二分法:(需要有序)先定一个起点和终点left,right,当left<right时,取中间值mid,如果目标值小于mid,则right=mid-1,反之亦然#线性搜索defaction1(arr,target):foriinarr:ifi==target:print(arr.inde......
  • 浅析森林烟火AI检测算法的应用及场景使用说明
    一、方案背景现有的森林防火监测系统落后,以人工地面巡护、瞭望塔高点巡查为主,存在巡护范围有限、巡护效率低等问题,建立健全的森林防火风险预警体系,实现对森林、林场等场景的全天候智能自动监测、火情预警,及时发现森林火灾并辅助决策,是当前林业管理的重要任务。二、方案概述旭帆......
  • Lnton羚通视频分析算法开发平台建立工地人员入侵,构建工地实名制人员通道系统解决方案
    Lnton羚通的算法算力云平台是一款优秀的解决方案,具有突出的特点。它提供高性能、高可靠性、高可扩展性和低成本的特性,使用户能够高效地执行复杂计算任务。此外,平台还提供丰富的算法库和工具,并支持用户上传和部署自定义算法,提升了平台的灵活性和个性化能力。建筑工地的管理一直以来......
  • 10.10算法
    爬楼梯假设你正在爬楼梯。需要n 阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例1:输入:n=2输出:2解释:有两种方法可以爬到楼顶。1.1阶+1阶2.2阶示例2:输入:n=3输出:3解释:有三种方法可以爬到楼顶。1.1阶+1阶+1阶2.......
  • 泛型算法(find、count、sort、fill、unique、copy、lambda、迭代器)
    一、概述algorithm中,还有一些数值泛型算法定义在头文件numeric中。算法永远不会执行容器的操作)。1、find和count:#include<iostream>#include<algorithm>#include<numeric>#include<vector>#include<list>usingnamespacestd;usingv_int=vector<int>;usingv_s......
  • .net C# 流量限制令牌桶算法工具类
    流量限制令牌桶算法工具类usingSystem;usingSystem.Collections.Generic;usingSystem.Diagnostics;usingSystem.Threading;usingSystem.Threading.Tasks;namespaceCommon{///<summary>///令牌桶算法工具类///</summary>publicclassTokenB......
  • 文心一言 VS 讯飞星火 VS chatgpt (109)-- 算法导论10.1 7题
    七、用go语言,说明如何用两个队列实现一个栈,并分析相关栈操作的运行时间。文心一言:在Go语言中,我们可以用两个队列(queue1和queue2)实现一个栈。以下是实现代码:packagemainimport"fmt"typeQueuestruct{items[]int}func(q*Queue)Enqueue(itemint......
  • 学到了,原来 gzip 是种`连续分块`的压缩算法
    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客zhihuGithub公众号:一本正经的瞎扯我想要表述的是:假设有10mb的数据使用gzip算法来压缩。有这样可能的做法:分配10mb的缓冲区,一次压缩10mb分配1mb的缓冲区,每次压缩1mb,分为十次压缩如果压......
  • 算法笔记-生成树
    概念定义图:由点和边组成的集合生成图:图中删去若干个点和若干条边后剩下的子图生成树:恰好为树的生成图最小生成树:边权总和最小的生成树严格次小生成树:边权总和严格大于最小生成树且最小 最小生成树KruskalKruskal 是通过贪心法选边加入集合来求最小生成树的算法 算法......
  • SWUST 算法分析与设计 实验报告2
    合并排序实验报告 一、     实验内容及目的实验内容:对合并排序算法进行算法描述、效率分析、实验结果分析。实验目的:深入理解分治法的思想,学习合并排序的排序方法,对合并排序进行算法分析,通过与其他排序算法比较,体会分治思想的优点。分析的指标:在相同数据规模的情况......