zoukankan      html  css  js  c++  java
  • 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;尾

  • 相关阅读:
    HDU 4539郑厂长系列故事――排兵布阵(状压DP)
    HDU 2196Computer(树形DP)
    HDU 4284Travel(状压DP)
    HDU 1520Anniversary party(树型DP)
    HDU 3920Clear All of Them I(状压DP)
    HDU 3853LOOPS(简单概率DP)
    UVA 11983 Weird Advertisement(线段树求矩形并的面积)
    POJ 2886Who Gets the Most Candies?(线段树)
    POJ 2828Buy Tickets
    HDU 1394Minimum Inversion Number(线段树)
  • 原文地址:https://www.cnblogs.com/infocodez/p/13764973.html
Copyright © 2011-2022 走看看