• noip2018 考前提醒!


    适应Noilinux

    1.终端操作
    打开终端 (Ctrl+Alt+T)
    打开文件夹 (cd) +名称
    新建文件夹 (mkdir) +名称
    打开 (vim) 配置 (vim ~/.vimrc)
    打开 (vim) 文件 (vim) + 文件名

    2.强大的(Vim)配置

    set nu
    set mouse=a
    set tabstop=4
    set shiftwidth=4
    set autoindent
    set smartindent
    inoremap ( ()<ESC>i
    inoremap [ []<ESC>i
    inoremap { {}<ESC>i
    inoremap " ""<ESC>i
    inoremap ' ''<ESC>i
    color desert
    map <F9> <Esc>:w<CR>: !g++ % -o %< && ./%< <CR>
    imap <F9> <Esc>:w<CR>: !g++ % -o %< && ./%< <CR>
    

    3.(Vim) 操作
    复制 (n + yy)
    粘贴 (p)
    删除 (n+dd)
    撤销 (u)
    退出死循环 (Ctrl+c)
    放大字号 (Ctrl+shift+'=')
    缩小字号 (Ctrl+'-')
    保存 (:w)
    退出 (:q)
    进入插入模式 (i)
    退出插入模式 (Esc)

    4.对拍

    system("./data > data.in");
    system("./1 < data.in > try1.out");
    system("./2 <data.in > try2.out");
    if(sytsem("diff try1.out try2.out")) printf("WA
    ");
    else printf("AC
    ");
    

    5.千万不要闲的用鼠标滑轮!会意外退出!
    6.写 (Vim) 时刻注意保存!
    7.(Noilinux) 密码 123456


    易犯错误

    1.头文件
    别忘了 #include<cmath> #include<cstring>
    对拍测时间 #include<ctime>(clock())

    2.(using) (namespace) (std;) 别忘写!

    3.数组大小
    无向图边 (m imes 2) ,注意边数与点数
    不同数组大小不同时一定要区分!
    for(int i=0;i<MAXN;i++) 注意取不到等!

    4.数组名称不要搞混
    变量((i),(j))别写反

    5.取模运算
    出现减法时 ((\%P+P)\%P)
    需要取模的变量,在任何操作后都要去取模!不要漏!

    6.溢出
    判断 (int) 是否需要转 (long long)
    运算中间量要不要转

    7.(double) 问题
    判断相等时 (fabs(r-l)<eps)

    8.位运算
    注意优先级,疯狂加括号
    不要轻易取反(符号也会变)

    9.做题细节
    看题不要看漏!题目最细小的地方!!
    考虑特殊情况,不要漏!

    10.想题时
    多举反例,想出一些思路是先别急着高兴,往后想
    限时想题,及时放置
    动态规划时间复杂度=状态数 ( imes) 转移时间!转移时间别漏了!

    11.输入大于 (10^5) 加读入优化

    12.代码实现细节
    树链剖分:
    求重子时别忘了 size[u]+=size[v]
    根节点不要 (dfs) 两遍;在 (dfs) 前赋值

    倍增:
    数组下标问题,别越界

    线段树:
    下放 (lazy) 的同时正确更新 (sum)
    结构体名别写错

    强连通分量:
    (vis) 表示进栈情况:0--未进过,1--在栈中,2--已出栈

    字符串哈希:
    想好是否真的可用
    加1减1的事情想清楚,多对拍

    并查集:
    路径压缩 int getfa(int x) { return x==fa[x] ? x : fa[x]=getfa(fa[x]); }
    初始化 (fa[i]=i)

    (Dijkstra)
    堆优化,(pair) 注意第一关键字为 (dis)

    (SPFA):
    (dfs) 版的 (vis) 表示是否正在遍历
    判负环可将 (dis) 都设成0

    差分约束系统:
    大于等于还是小于等于

    欧拉回路:
    注意在访问完一个节点后,将其加入倒叙的 (ans)

    平衡树:
    更新 (size) 等时别忘了加上自己的


    常见思想

    1.求某某最值 -> 转化为二分+判定(前提有单调性)
    2.问题分解
    3.将问题等价转换
    4.有时多求一些东西,包含了答案
    5.图论与数据结构相结合,动态规划、数论与图论结合(分层图)

    猜结论,找规律——数论大胆推&发现;图论谨慎证明;动规小心陷阱
    情况考虑周全——多举反例&特殊例子;眼光放开
    不要想麻烦——排除干扰,简化题意;从简单算法(二分、数组)想起


    小技巧

    1.预处理,前缀和…
    2.枚举子集时 for(int i=t;i;i=(i-1)&t)
    3.用 (stl) 中的 (set)

    既然选择了远方,便只顾风雨兼程
  • 相关阅读:
    Smarty中的请求变量和保留变量的使用范例
    mysql通过sql语句判断某个字段在一张表中是否存在
    dede用户登录时,跳转到提示页时报404错误
    eclipse自动补全的设置
    Eclipse使用技巧
    JS中比较的数值如何比较大小
    在文本框中提示用户输入内容格式的方法
    使用命令行创建Android工程报错:"Target id is not valid. Use 'android.bat list targets' to get the target ids"
    eclipse下 Failed to find an AVD compatible with target 的解决方法
    如何更改Android的默认虚拟机地址(Android virtual driver路径设置)
  • 原文地址:https://www.cnblogs.com/lindalee/p/9932400.html
Copyright © 2020-2023  润新知