• XJU-ACM协会2020国庆授课要点简录


    10月1日到10月4日
    ljs:c语言基础 前缀和 差分 
    syx:c++基础stl或者排序二分 
    wjq:分支归并,归并排序,双指针 
    la: bfs + dfs
    每天上午十点到1点半,下午三点半到晚上七点

     

    ACM协会10月2日上午 培训录像 (暂时只有这个,其他录屏尚未上传)


    10月1日:

    李学长介绍了C语言的基本语法(如布尔类型、数组、结构体)、洛谷、acwing等等算法类网站,熟悉了Dev-c++编译器。并针对牛客编程语言练习赛第四场进行了讲解,重点讲解了“金字塔图案”和“空心三角形图案”。讲解了前缀和,并以洛谷题P5638为例进行了演示。

    宋学长介绍了比赛中经常用到的C++的一些基本知识,比如控制输入输出流,万用头文件等等。

    10月2日:

    宋学长讲解了STL容器相关(如动态数组、映射、队列、双端队列、优先队列、栈、迭代器等等)知识,科普了ACM赛制和OI赛制的区别。提及了bfs(广度优先搜索}。介绍了时间复杂度和二分算法、sort函数。讲解了set与multiset之间的区别。介绍了宏定义。讲解排序函数时提及关键字,类比于EXCEL中的关键字。提及哈希算法。介绍了数组最大空间和O2优化。推荐了算法类书籍。

    李学长带着做题,推荐了Codeforces和AtCoder等刷题网站。并建议大家在博客园开博客,养成写技术博客的习惯。

    10月3日:

    王学长以汉诺塔问题为例讲解了递归,讲解了归并分支和归并排序等等知识。下午主要带着一起做题,介绍了记忆化。

    10月4日:

    L_A讲解了逆波兰表达式、回溯、PFS(深度优先搜索)、BFS(广度优先搜索)等内容。ppt上漏了写退队。下午指导了一波洛谷题。


    #include<algorithm>//加容器名字头文件?

    vector<int>v; //声明int类型动态数组。动态数组不用分配大小。每个数组长度是动态的

    vector<int>v[10];//二维数组 

    v.push_back(i);//将i存入v

    v.begin();//指向第一个迭代器(迭代器类似于指针,表示地址之用)

    v.end();///指向最后一个迭代器(动态数组尾端的下一位)

    acm赛制10~13题,一道就交,提交错误有罚时,拼手速

    oi赛制,只交一次

    sort(v.begin(),v.end());//排序函数,默认从小到大排序

    sort(v.begin(),v.end(),cmp);

    bool cmp(int a,int b){       //comp或cmp,自写从大到小排序

      if(a>b)return true;

      else return false;

    }

    二分算法

    时间复杂度:

    O(n),一个for

    O(logn),二分算法

    O(n^2),两个for嵌套

    O(nlogn),排序最快

    O(n^3),

    set<int> s;  //集合,不允许出现重复元素。自动排序

    multiset<int> ms;   //可存在重复元素

    excel表格第一关键字、第二关键字

    struct ljs{  //定义结构体

      int eng,che,math,tot;

    };

    bool cmp (const &a,const ljs &b){

      if(a.tot>b.tot) return true;

      else if(a.tot==b.tot){

        return(a.math>b.math);  //总分相同时返回数学高

      }

      else return false;

    }

    v.clear();  //清空容器

    int a[10];

    memset(a,0,sizeof(a));  //把数组清零

    #include<string>  //C++string类成员函数

    string s;

    reverse(s.begin(),s.end()); //反转函数

    queue队列,先进先出,只能从队尾插入,从队首弹出。front、back,不支持下标访问

    deue双端队列,类似队列但可从队首插入

    stack栈

    priority_queue优先队列,队列放入后自动排序,默认从大到小。从小到大可通过存入负数实现

    for(queue<int>::iterator it=q.begin();it!=q.end();it++){

      cout<<(*it)<<" ";

    }

     1 /*
     2 背单词,会则输出yes,不会则输出。输入整数n,n行,每行一个数字(0或1)和一个单词。 
     3 0表示记忆单词,1表示询问记过没。对每次询问,输出yes或no 
     4 */ 
     5 #include<bits/stdc++.h>
     6 #include<set>>
     7 #define ll long long
     8 #define rep(i,a,b) for(int i=a;i<=b;i++)
     9 #define rpe(i,a,b) for(int i=a;i>=b;i--)
    10 using namespace std;
    11 set <string> s;
    12 int main(){
    13     int n;
    14     cin>>n;
    15     while(n--){
    16         int x;
    17         string word;
    18         cin>>x>>word;
    19         if(x==0){
    20             s.insert(word);
    21         }
    22         else{
    23             if(s.count(word)==0){
    24                 cout<<"no"<<endl;
    25             }
    26             else{
    27                 cout<<"yes"<<endl;
    28             }
    29         }
    30     }
    31     return 0;
    32 }

    set   lower_bound

      upper_bound

    #include<map> //映射

    map<type1,type2> m;

    m[type1]=m[type2];  //建立映射关系

    map[]下标可以是任意类型

    哈希算法 

    C++开O2优化

    编译选项 ~std=C++14

    紫书 刘汝佳 算法竞赛入门经典

            李煜东 算法进阶指南

    int solve(int l,int r){

      if(l==r) return 1;    //递归一定要有终止条件,且终止条件

      int ans=solve(l,r-1);

      ans+=r;

      return ans;

    }

    int main{

      solve(1,100);

    }

    典型的递归:汉诺塔

    分治:将问题分解到无法再分

    int solve(int l,int r){

      if(l==r) return 1;

      int mid=(1+r)/2;

      int ans=solve(1,mid)+slove(mid+1,r);

      return ans;

    }

    归并排序

    a.resize(n);

    记忆化

    int f[1000];

    if(f[n]) return f[n];

    return f[n]=ans;

    hed=1;队列头,

    tal队列尾

    que[1][0]sn,行  que[1][]=sm;尾

  • 相关阅读:
    vim does not map customized key?
    再说vundle: 完全vim字符编程的四个必须插件
    centos7 没有iptables服务 file or directory? 用secureCRT登录centos?
    php基础语法-函数等
    windows下vmware10.0 安装centos7
    fedora23的firefox不能播放优酷视频?
    linux如何隐藏和显示所有窗口?
    fedora23忘记root密码怎么办??
    mouse scrollings and zooming operations in linux & windows are opposite
    windows 杂项
  • 原文地址:https://www.cnblogs.com/infocodez/p/13764973.html
Copyright © 2020-2023  润新知