1?咳咳2年以来学了些啥

NOIP在半期后第一天。尽管半期考试已经使我丧失了思考的能力……

改错本

必须剁手的错误

头文件

由于编译器的原因,某些头文件没打,却没有报错……
以下几个头文件不管怎么先打上:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

等号

学了那么久,却仍然会这样打:

if(a=b)
    printf("Maybe there's something wrong.");

可怕的是,C允许我们这样写【手动吐血】……

long long

该用的时候还是用吧……
(我不会告诉你我现在想把所有整形变量定义成long long)

我是谁我在哪我在做什么

数组越界

看这段代码:

#define MAXN 105//我把数组开大了的哦~
int C[MAXN][MAXN];
void init()
{
    C[1][1]=1;
    for(int i=2;i<=MAXN;i++)
        for(int j=1;j<=i;j++)
            C[i][j]=C[i-1][j]+C[i-1][j-1];
}
//不要在意我写错没有

第6行那个刺眼的i<=MAXN,让你的程序和人直接崩溃。

清零

你的vis清零了吗?你的cnt清零了吗?你的ans清零了吗?你的各种该清0的、该清1的清了吗?
以后只要有这种:

while(~scanf("%d%d",&N,&M))
{
}

或者是这种:

while(1)
{
    scanf("%d%d",&N,&M);
    if(!N&&!M) break;
}

一定要加上诸如:

ans=0;
memset(vis,,0,sizeof vis);
memset(Edge,0,sizeof Edge);

读入换行

每当题目的输入中有字符型时,一切都变得朦胧起来……

说白了就是空格和换行符被莫名其妙地读进去了。
接下来总结一下:
scanf
当读入字符串时:读到制表符(空格、换行等)时结束,且不会把制表符读入;
当读单个字符时:什么都会读。
gets:不要用!不要用!不要用!
fgets:读入一行字符串,遇到空格会继续读,且把空格储存下来,遇到换行停止,且会把换行读入进去。
getchar:读入任意一个字符。

算法总结

搜索

枚举枚上天,暴力出奇迹 ——题记

深搜

void dfs(参数)
{
    if(边界)
    {
        记录结果
        return;
    }
    for(枚举这一步的所有情况)
        if(没有访问过)
        {
            标记
            dfs(改变参数);
            //取消标记
        }
}

广搜

queue<node> Q;//定义在外面,自动清零
void bfs()
{
    Q.push(初始状态);
    标记初始状态//注意!!
    while(!Q.empty())
    {
        node t=Q.front();
        if(t为最终状态) 输出结果
        for(枚举t可以得到的状态)
            if(没有访问过)
            {
                标记
                Q.push(这个状态);
            }
        Q.pop();
    }
}

广搜写得少,例题:【NOI2001】聪明的打字员

贪心

贪心只能过样例 ——题记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值