zoukankan      html  css  js  c++  java
  • NOI集训总结

    算法篇

    数学

    • EXCRT扩展中国剩余定理
      • 用途: 求解线性同余方程组
      • 主要过程: 将方程逐一合并, 最后使用 EXGCD扩展欧几里得算法 求出最后合并得到的方程的解.
        EXGCD代码
    ll Exgcd(ll a,ll b,ll &x0,ll &y0){
    	if(!b){
    		x0=1,y0=0;
    		return a;
    	}
    	ll x1,y1,d=Exgcd(b,a%b,x1,y1);
    	x0=y1;
    	y0=x1-a/b*y1;
    	return d;
    
    
    • FWT快速沃尔什变换
      • 用途: 加速 按位与,按位或,按位异或 等二进制位运算卷积

    图论

    • Kruskal重构树
      • 用途: 无向图中两点之间路径上最大边的最小值 (或最小边的最大值)
      • 主要过程: 在用 Kruskal算法 求最小生成树时, 对于被选中的边 (u,v), 新建一个节点 x, 并将 u,v 的父亲指向 x.

    其他

    • 高维前缀和
    for (int i = 0; i < n; i++)
        for (int s = 0; s < 1 << n; s++)
            if (s >> i & 1) sum[s] += sum[s ^ (1 << i)];
    



    数据结构篇

    小技巧

    • 根号分块
      • 用途: 在数据结构题里如果实在想不到怎么优化了可以考虑一下根号分块, 感觉是一个挺通用的东西.
      • 注意事项: 要先想清楚暴力情况下是如何维护和查询, 再考虑优化, 不然很容易陷入思维循环.
    • bitset 维护 DAG 可达性.
      • 如果空间开不下还可以考虑分块进行.



    比赛篇

    1. 答题策略
      • 先把每题的暴力分打完
      • 从比较有思路的题开始, 从暴力一级一级的往上拿分.
      • 不要着急思考正解, 可以从部分分的数据范围和特殊性质入手.
    2. 考试心态
      • 专注. 专注于眼前的题目, 不要考虑其他题目, 也不要想别人的情况.
      • 灵活. 保持思维的活跃, 理清楚每一步的思路, 不要陷入思维循环.
      • 平静. 不要因为题目的难度或自己的状态而影响心态, 不在意结果, 就当做一次经历.
      • 积极. 就算大块的分拿不下来也不要气馁, 把自己能拿的分都尽量拿到就好了.
      • 仔细.
        • 仔细看题, 不要误解题目意思, 注意数据范围, 注意细节特判.
        • 仔细思考, 再三确认没有纰漏后再开始写代码.
        • 仔细检查, 做好对拍工作, 注意数据范围.
  • 相关阅读:
    6、linux中同步、互斥、阻塞(原子操作、信号量、阻塞)
    lightOJ-1199 Partitioning Game (SG函数)
    HDU-1013 Digital Roots
    HDU-1004 Let the Balloon Rise (STL map)
    HDU-1020 Encoding (字符串)
    POJ-2524 Ubiquitous Religions (并查集)
    POJ-1988 Cube Stacking (带权并查集)
    POJ-2236 Wireless Network (并查集)
    HDU-1002 A + B Problem II (模拟大数相加)
    HDU-1829 A Bug's Life (种类并查集)
  • 原文地址:https://www.cnblogs.com/BruceW/p/13511625.html
Copyright © 2011-2022 走看看