• 模板


    @kaike

    在我慢悠悠的赶DP的时候,突然意识到noip将要到来了

    一周后的期中考还不太靠谱了,还有noip??

    wtf!

    贪心分治不好好写,图刷了半边还不太熟又去搞DP,天要亡我我不能亡啊

    QAQ在机房彷徨半天身边大神改了一个又一个bug

    我要复习,我要学习,什么都拦不住我对code的热爱

     

    插入排序(假设前i个数已经排列好,把第i个数插进去)

    1 for(int i=2;i<=n;i++)
    2     {
    3         a[0]=a[i];
    4         for(int j=i-1;a[j]>a[0];j--)
    5             a[j+1]=a[j];
    6         a[j+1]=a[0];
    7     }

    选择排序(处理第i个数时,找到他后面数的最小值,交换)

    1  for(int i=1;i<=n;i++)
    2         for(int j=i+1;j<=n;j++)
    3         if(a[i]>a[j]){   int t=a[i];    a[i]=a[j];   a[j]=t;}

    冒泡排序(对相邻的两个数进行比较)

    1     for(int i=1;i<n;i++)
    2         for(int j=n;j>i;j--)
    3         if(a[j-1]>a[j])
    4             swap(a[j-1],a[j]);

    求最大连续和

    设一个s连续加,如果累加和为正数,则往后加,若累加和为负数,则为0,中间设一个最大数。

    求连续最大子矩阵

    将连续k行的元素纵向相加,并对相加后所得的序列求连续最大和。

    floodifill

    就是把每个点都枚举一遍,通过dfs or bfs

    dfs 就是通过自身递归通过方位数组枚举

    bfs 就是通过队列免去递归so要比dfs快一点

    floodifill和迷宫问题都要加边界

    若是枚举方案数,则要加上回溯,特别是迷宫问题

    并查集

    就是用了许多函数,然而并不难。

    主要是找到父亲,判断父亲是否一样,合并成一家。

     1 /*
     2 by kaike
     3 */
     4 #include<iostream>
     5 #include<algorithm>
     6 #include<cstring>
     7 #include<string>
     8 #include<cstdio>
     9 using namespace std;
    10 const int MAXN=5010;
    11 int n,m,p,x,y;
    12 int f[MAXN];
    13 int getf(int x)
    14 {
    15     if(f[x]!=x) f[x]=getf(f[x]);
    16     return f[x];
    17 }
    18 void merge(int x,int y)
    19 {
    20     int t1=getf(x),t2=getf(y);
    21     if(t1!=t2)
    22         f[t2]=t1;
    23 }
    24 bool pan(int x,int y)
    25 {
    26     int t1=getf(x),t2=getf(y);
    27     if(t1==t2)  return 1;
    28     return 0;
    29 }
    30 void init()
    31 {
    32     cin>>n>>m>>p;
    33     for(int i=1;i<=n;i++)
    34         f[i]=i;
    35     for(int i=1;i<=m;i++)
    36     {
    37         cin>>x>>y;
    38         merge(x,y);
    39     }
    40     for(int i=1;i<=p;i++)
    41     {
    42         cin>>x>>y;
    43         if(pan(x,y))    cout<<"Yes"<<endl;
    44         else    cout<<"No"<<endl;
    45     }
    46 }
    47 int main()
    48 {
    49     init();
    50     return 0;
    51 }
    并查集

    快速幂

     1 void work()
     2 {
     3     long long ans=1;
     4     while(k!=0)
     5     {
     6         if(k%2==1)  ans*=s;
     7         s=s*s;
     8         k/=2;
     9     }
    10 }
    = =

    火柴排队

    1439

    topsort

    小数的输出方法

    离散化

    割点割边

    No matter how you feel, get up , dress up , show up ,and never give up.
  • 相关阅读:
    luogu P1630 求和(枚举暴力)
    luogu P3414 SAC#1
    luogu P1869 愚蠢的组合数(质因数+瞎搞)
    luogu P1586 四方定理(背包)
    luogu P3795 钟氏映射(递推)
    2017.8.15 [Haoi2016]字符合并 区间dp+状压dp
    [NOI2002] 荒岛野人 扩展欧几里得算法
    [Noi2002]Savage 扩展欧几里得
    bzoj 1778: [Usaco2010 Hol]Dotp 驱逐猪猡
    bzoj 3505: [Cqoi2014]数三角形
  • 原文地址:https://www.cnblogs.com/Kaike/p/6019190.html
Copyright © 2020-2023  润新知