梗串

链式前向星,双向边的nxt,to,w数组一定要开两倍!!!

注意点和边的个数,不要混淆。

实在不行就写vector

数据类型

1、方案数不取模最好开long long,避免溢出。

2、最好做题前先预算答案范围。

3、使用浮点数时,比较大小定义eps。

循环:

 

for(i=1;i<=n;++i)
    for(j=1;j<=m;++j)//不要打成i,要及时检查;要打m时不要打n

 

初始化:

多组数据:

检查每个非读入变量、数组、STL容器,全部清空。

有些容器用clear,queue一类的记得

while(!q.empty()) q.pop();

变量/数组:

答案如果有负数要注意,DP的f数组初值一般不能设为0。

不合法的可能要设为 $-\infty$

BFS:

Dijkstra类的广搜,不管队列里什么数据,更新时都要用当前最新状态!

倍增求LCA:

for(i=1;i<=lgn;++i)
    for(x=1;x<=n;++x)
        f[x][i]=f[f[x][i-1]][i-1];

 

for循环的两维,i代表递推顺序,从f[x][i-1]才能到f[x][i],一定要写在外面。

STL:

使用lower_bound等函数要写成员函数,效率较高。eg:

multiset<int> st;int x=1;

lower_bound(st.begin(),st.end(),x);//反面教材

st.lower_bound(x);//正确写法,效率较高

 

其它:

题意一定要看清楚!!!有看似矛盾的句子要多看几遍,找出每句话的意思,排除矛盾。

讨论很多情况的题目,要不重不漏,写全代码。

写法一定要简单、直接,不同意义的变量尽量明显地分开,不要共用一个数组。

选择自己常用、有把握的代码风格。

 

posted @ 2019-07-08 11:04  蒟蒻魔芋汤  阅读(167)  评论(0编辑  收藏  举报