个人薄弱部分与代码块总结

///单纯为了准备pat总结的,复杂度在pat允许的范围内
  • 常错bug部分

i++??????
逻辑错误

分号出现在不该出现的位置

纯粹手打快出错

位置放错
0或1值的处理遗漏,cout对位数的偷工减料

死循环啦
  • 并查集中的father[i]=i初始化;
  • union中father[t1]=t2;而不是t1=father[t2]
  • 设立的标记数组更新还是不需要更新
  • 函数中调用全局变量,全局变量已有初值,多加了一次
  • isprime里的if(x<=1)return false;忘写了
  • isprime里的sqrt(1.0*x),x写成n了,偷换变量
  • in-off型存储,先排序,一个vector两个两个存,两个两个取
  • 处理时间的问题,全化到最小(一个标准),大减小
  • getline(cin,s)处理含空格的字符串时,如果前面出现换行,要加一个getchar()
  • 字符串cin,cout超时问题采用hash或换成scanf("%s",s.c_str)
  • 处理字符串时,错误判断数字的位数
  • 在处理输出保留几位eg:%05d时,整体全用printf,防止遗漏。
  • 分子为0的情况?
  • 因为除号取整,先取整后乘还是先乘后取整~~~
  • 数据中有出现double,可能另一种没有说明的数据类型也是double
  • 数据超过int型用longlong存储
  • 开数组时刚好开到边界处会数组越界
  • 有些画图题,空的地方必须是空格,否则一直0

  • 题目:

搜索

two points

贪心

map映射

图论

模拟

排队模拟

二分
其他
  • 代码块


gcd

int gcd(int a,int b)
{
   return !b ? a:gcd(b,a%b);
}

在一串字符串中提取单词。
//two points,第一个指针找第一个单词,第二个指针找完这个单词
vector<string>vt;
int main()
{
   string s;
   getline(cin,s);
   int t;
   for(int i=0;i<s.size();i++)
   {
       if((s[i]>='A'&&s[i]<='Z')||(s[i]>='a'&&s[i]<='z'))
       {
           t=i;
           string temp="";
           while((s[t]>='A'&&s[t]<='Z')||(s[t]>='a'&&s[t]<='z'))
           {
               temp+=s[t];
               t++;
           }
           vt.push_back(temp);
           i=t;
       }
   }
   for(int i=0;i<vt.size();i++)
   cout<<vt[i]<<endl;
   return 0;
}

STL中非空判断要在前,会出现段错误

1.一定要先检测非空再判断
 while(!st.empty()&&st.top()==a[t])
           // while(st.top()==a[t]&&!st.empty())
            {
                 st.pop();
                 t++;
            }

有些并查集的题不路径压缩过不了

int findfather(int x)
{
    if(x==father[x])
        return x;
    else
    {
        int f=findfather(father[x]);
        father[x]=f;
        return f;
    }
}

排队问题的窗口处理

void deal(int pindex,int tindex)
{
    if(person[pindex].arrive>=table[tindex].endtime)//来迟了
        person[pindex].start=person[pindex].arrive;
    else
        person[pindex].start=table[tindex].endtime;。//来早了
    table[tindex].endtime=person[pindex].start+person[pindex].dotime;//窗口处理完的时间
}

最短路和最短路+dfs

  1. 点数范围都较少,使用邻接矩阵存储
  2. 着重点倾向于求最短路径的第二标尺,求==输出路径满足:最小/大点权,边权,平均点权,平均边权==
  3. 方法 ==只用dijkstra==或==dijkstra+dfs==

1.只用dijkstra

顺便求出第二标尺,第三标尺的模板

//dis[]最短路径
//G[][]边权
//w[]点权和,weight[]点权
//num[]最短路条数
//pt[]到该点的累计顶点数
//pre[]前驱结点
//注意各个数组的初始化
if(book[v]==0)//k未被访问
            {
                if(dis[v]>dis[u]+G[u][v])
                {
                   dis[v]=dis[u]+G[u][v];
                   w[v]=w[u]+weight[v];//加上v处的点权
                   pre[v]=u;
                   pt[v]=pt[u]+1//s->v的顶点数等于s->u的顶点数+1
                   num[v]=num[u];//更新到v点的最短路的条数
                }
                else if(dis[v]==dis[u]+G[u][v])
                {
                    if(w[v]<w[u]+weight[v])
                    {
                        w[v]=w[u]+weight[v];
                        pt[v]=pt[u]+1;
                        pre[v]=u;
                    }
                    else if(w[v]==w[u]+weight[v])
                    {
                    ........
                    }
                    num[k]+=num[u];//最短路的条数
                }
            }
dfs输出路径
void dfs(int v)
{
  if(v==st)
  {
     printf("%d",v);
     return ;
  }
  dfs(pre[v]);
  printf("%d",v);
}

2.dijkstra+dfs

dis[]数组更新时
//
vector<int>pre[MAX];
//
if(dis[v]>dis[u]+G[u][v])
{
   dis[v]=dis[u]+G[u][v];
   pre[v].clear();//否定比它长的那一条
   pre[v].push_back(u);
}
else if(dis[v]==dis[u]+G[u][v])
{
   pre[v].push_back(u);
}
dfs模板
//
vector<int>path,temppath;
//
void dfs(int start)
{
     if(v==start)
     {
         temppath.push_back(v);
         .....
         int value//用于计算临时路径temppath的第二标尺的值
         .....
         //计算时注意循环从temppath.size()-1开始,倒叙。
         .....
         if(value 优于 最佳value)
         {
          最佳value=value;
          path=temppath;
         }
         temppath.pop_back();//回溯
         return ;
     }
     temppath.push_back(v);
     for(int i=0;i<pre[v].size();i++)
     {
         dfs(pre[v][i]);
     }
     temppath.pop_back();//回溯
}

分块

int SQR=633;//633块,632个
int block[SQR];
int table[MAX];
void fenkuai(int k)
{
    int sum=0;
    int index=0;
    while(sum+block[index]<k)
    {
        sum+=block[index++];
    }
    int num=index*632;
    while(sum+table[num]<k)
    {
        sum+=table[num++];
    }
    cout<<num<<endl;
}

BST

struct node
{
    node* lchild;
    node* rchild;
    int data;
};
node* newnode(int x)
{
    node* Node=new node;
    Node->data=x;
    Node->lchild=Node->rchild=NULL;
    return Node;
}
//初始化 node* root=NULL;
//////////////////////////
void Insert(node* &root,int data)
{
    if(root==NULL)
    {
        root=newnode(data);
        return ;
    }
    if(data<root->data)
        Insert(root->lchild,data);
    else
        Insert(root->rchild,data);
}
///////////////////////////////
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,635评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,628评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,971评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,986评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,006评论 6 394
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,784评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,475评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,364评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,860评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,008评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,152评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,829评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,490评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,035评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,428评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,127评论 2 356

推荐阅读更多精彩内容