zoukankan      html  css  js  c++  java
  • 算法

    栈:
    1.手写 #include<iostream>

    using namespace std;

    int n,z[233],v;

    int main()
    {
    cin >> n >> v;
    for (int a=1;a<=n;a++)
    cin >> z[a];

    int l=1,r=n+1;
    while (l+1!=r)
    {
    int m=(l+r)/2;
    if (v>=z[m]) l=m;
    else r=m;
    }
    cout << l << endl;

    return 0;
    }
    2.函数#include<cstdio>
    #include<stack>

    using namespace std;

    stack<int> sta;

    int main()
    {
    sta.push(233);
    sta.push(2444);
    sta.pop();
    cout << sta.top() << endl;
    cout << sta.size() << endl;

    return 0;
    }
    队列
    1.手写#include<cstdio>

    using namespace std;

    struct queue
    {
    int head=1,size=0;
    int z[233];
    void push(int x)
    {
    z[head+size] = x;
    size++;
    }
    void pop()
    {
    size--;
    head++;
    }
    int front()
    {
    return z[head];
    }
    };

    int main()
    {
    return 0;
    }
    2.函数 #include<cstdio>
    #include<queue>

    using namespace std;

    queue<int> que;

    int main()
    {
    que.push(233);
    que.push(2444);
    que.pop();
    cout << que.front() << endl;
    cout << que.size() << endl;

    return 0;
    }

    1.优先队列:#include<cstdio>
    #include<queue>

    using namespace std;

    priority_queue<int> heap;

    int main()
    {
    heap.push(23);
    heap.push(233);
    heap.push(2333);
    heap.pop();
    cout << heap.top() << endl;
    cout << heap.size() << endl;
    }
    Map:
    #include<iostream>
    #include<map>
    #include<string>
    #include<cstdio>

    using namespace std;

    map<int,int> m;
    map<long long,int> m2;
    map<string,int> m3;

    map<int, map<int,int> > mm;

    int main()
    {
    printf("%.20lf ",1.0/3);

    m[2147483647] = 233;
    m[-500] = 666;
    m[-2147483648] = 9;
    m2[23333333333333333333333ll] = 2333333333;

    m3["hello world"] = 0;
    mm[23][23]=23;
    return 0;
    }
    较精确的判断两个实数是否相等:(c++中,求一个实数的值位数多了不是很精确如1.0/3)
    #include<cstdio>

    using namespace std;
    const double eps=1e-8;

    int main()
    {
    double a,b;
    if (fabs(a-b)<=eps) printf("deng");
    }
    Pair
    #include<iostream>
    #include<algorithm>

    using namespace std;

    int main()
    {
    pair<int,int> p = make_pair(23,3);
    cout << p.first << p.second << endl;
    }
    归并排序/分治
    #include<iostream>

    using namespace std;
    int z[233],y[233];

    void merge_sort(int l,int r)
    {
    if (l==r) return;
    int m=(l+r)/2;
    merge_sort(l,m);
    merge_sort(m+1,r);

    int p1=l,p2=m+1;
    for (int a=l;a<=r;a++)
    {
    if (p1 <=m && p2<=r){
    if (z[p1] < z[p2])
    {y[a] = z[p1];p1++;}
    else
    {y[a] = z[p2];p2++;}
    }
    else{
    if (p1<=m)
    {y[a]=z[p1];p1++;}
    else
    {y[a]=z[p2];p2++;}
    }
    }
    for (int a=l;a<=r;a++)
    z[a]=y[a];
    }

    int main()
    {
    int n;
    cin >> n;
    for (int a=1;a<=n;a++)
    cin >> z[a];
    merge_sort(1,n);
    }
    前缀和
    #include<iostream>

    using namespace std;

    int n,m;
    int z[2333],s[2333];

    int main()
    {
    cin >> n;
    for (int a=1;a<=n;a++)
    cin >> z[a];
    for (int a=1;a<=n;a++)
    s[a] = s[a-1] + z[a];
    cin >> m;
    for (int a=1;a<=m;a++)
    {
    int l,r;
    cin>>l>>r;
    cout << s[r] - s[l-1] << endl;
    }
    }
    二分
    1.#include<iostream>

    2.using namespace std;

    int n,z[233],v;

    int main()
    {
    cin >> n >> v;
    for (int a=1;a<=n;a++)
    cin >> z[a];

    int l=0,r=n;
    while (l+1!=r)
    {
    int m=(l+r)/2;
    if (v>z[m]) l=m;
    else r=m;
    }
    if (z[r] == v) cout << "yes" << endl;
    else cout << "no" << endl;

    return 0;
    }
    1.a*b*c%p=(a*b%p)*c%p.
    求 a^b%p.

    快速幂:

    st表
    相当于f[i][j],表示从a[i]开始的2^j个数中的最大值,放进f[i][j].中


    贪心
    对于所有贪心题,只要你推导出来了n=2的时候如何判断a在前面还是b在前面的函数的时候,直接把这个函数放到sort里面,就是最优解.

    上面是简化前,下面是简化后.


    矩阵:
    两个矩阵能做乘法的前提是一个矩阵的列数等于另一个矩阵的行数.并且 n*m的矩阵×m*k的矩阵的结果为n*k的矩阵.
    加const 使得既取了地址又避免了改变数值.
    矩阵乘法没有交换律

  • 相关阅读:
    apipost如何设置断言
    接口文档生成详细教程
    接口测试的时候如何生成随机数据进行测试
    armbian用户指南
    仿「ONE · 一个」 的微信小程序
    [armbian_ubuntu] 设置中文环境
    realtek wifi驱动
    armbian 入门知识基础学习
    [Armbian] armbian-config设置
    内存型号介绍
  • 原文地址:https://www.cnblogs.com/liumengliang/p/11189963.html
Copyright © 2011-2022 走看看