zoukankan      html  css  js  c++  java
  • 一些NOIP/NOI/CTSC的要点汇总

    1.dilworth定理:在一个序列中,最长下降子序列的个数(下降子序列的最小划分)就等于其最长不下降子序列的长度。

    2.floor(),ceil(),round()三个函数的返回值都是一个浮点数,floor()是把浮点数向下取整,ceil()是把浮点数向上取整,round()是把浮点数四舍五入;

    3.#define cin std::ios::sync_with_stdio(false); cin

       #define cout std::ios::sync_with_stdio(false); cout

       不可以与scanf()连用;

    4.当进行减法取模时,应该先取模p控制范围在[-p,p],然后加上模数p再取模p来控制答案的范围在正整数范围内;

    5.传递闭包:给定若干个元素和若干对二元关系,且关系具有传递性,那么可以使用Floyd来解决;

    6.DP中,阶段要放在最外层循环;

    7.对于一个有向图(存在负权边),求最短路时,可以用拓扑序的框架处理整个图,然后在不包含负权边的强连通分量里跑Dijkstra;

    8.对于有向图的最小环问题,可以枚举起点k,用dijkstra来跑最短路。k第一次被取出时,令dis[k]=99999999;如果k第二次被取出时,dis[k]就是经过k的最小环长度;

    9.设f[n]是斐波那契数列的第n项,那么gcd(f[n],f[m])=f[gcd(n,m)]; (证明的传送门在这里)

    10.设f[n]是斐波那契数列的第n项,那么gcd(f[n],f[n+1])=1;(证明的传送门在这里)

    11.将一个十进制的数转化为二进制:

    inline void print(int x)
    {
        stack<bool>st;
        while (x)st.push(x%2),x/=2;
        while (st.size())printf("%d",st.top()),st.pop();
        puts("");
    }

    12. 在一棵树中任选一个点u跑dfs找到最远的点p,然后再以p跑dfs找到最远的点q,那么dis[p][q]就是树的直径

    13.在进行左移,右移运算时,被位移的数的类型要与答案类型一致。如:long long ans=(1<<n)就是不对的,而long long ans=(1LL<<n)是对的。

    14.康托展开:一个全排列到一个自然数的双射X = A[0] * (n-1)! + A[1] * (n-2)! + … + A[n-1] * 0!A[i] 指的是位于位置i后面的数小于A[i]值的个数。这个算出来的数康拖展开值,是在所有排列次序 - 1的值,因此X+1即为在全排列中的次序。

    15.在网络流中建双向边时,一定要把正向边和反向边建在一起。否则在i(边的序号)^1时会死的很惨;

    16.在线段树pushdown时,一定要用k点的lazy值更新k*2和k*2+1的sum值,并把lazy直接传下去;在修改操作结束时更新sum,lazy;注意:lazy表示的是对下一个点的影响,它并不影响这一个点;

    17.不开long long 见祖宗;

    18.二分时,不能把l赋初值为1,r=INT_MAX;因为1+INT_MAX爆int啦!!!!!!!!!!!

    19.dfs序的特点:在2*n个数中,闭区间l[u]到r[u]就是以x为根的字树的dfs序,因此可以通过dfs序把子树统计转化为序列上的区间统计;

    20.若从s到t经过每条边各一次,则该路径是s到t的欧拉路;若从s到s经过每条边个一次,则该路径是欧拉回路;存在欧拉回路的图叫欧拉图

    21.欧拉图的判定:图联通且所有点的度数是偶数;欧拉路存在的判定:图联通且恰好有两个点的度数是奇数,其余点都是偶数;

    22.对于边权仅有0和正数差分约束系统,在跑最长路的时候可以用tarjan缩点;如果一个SCC中包含一条边权大于0的边,那么一定无解,否则可以正常tarjan缩点再跑拓扑序上的DP;

    23.有向图的必经点和必经边:可以用NlogN的时间利用支配树求解,但若无环,就可以在原图和反图上跑两遍dp,求出S到x的路径数f[x]和x到T的路径数g[x];那么对于一个边(u,v),如果f[u]*g[v]=f[T],那么它就是桥。如果对于一个点u,f[u]*g[u]=f[T],那么它就是割点;

    24.Konig定理:一张二分图,求出最小点集{S},使得图中任意一条边都至少有一个点属于S;这种问题称作最小点覆盖;而Konig指出:二分图的最小点覆盖所包含的点数等于二分图的最大匹配所包含的边数;

    25.最小割等于最大流;最小割:将一些边删去后S和T不连通,且删去的边的容量之和最小;

    26.在无向图中:桥一定是搜索树上的边,一个简单环上的边一定不是桥;

    27.判断桥的方法:dfn[u]<dfn[v](需要考虑重边,所以记录的是父亲边);判断割点的方法:dfn[u]<=dfn[v](不需要考虑重边,所以不用记录);

    28.点双连通图的判定:以下两个条件满足其一:1.图的顶点数不超过2;2.图的任意两点都同时包含在至少一个简单环中;

    29.边双连通图的判定:任意一条边都包含在至少一个简单环中;

    30.将一个图的所有桥删去后所得的若干连通块便是若干边双;

    31.线性求逆元:inv[i]=(p-p/i)*inv[p%i]%p;

    32.树剖中dfs时注意dep[u]!=dep[u]+1,初始化seg[0]=1,seg[root]=1,top[root]=root,rev[root]=1;

    33.树剖的变形:将边权变为点权,对于边(u,v),选取dep较小的一个点充当这条边的点权;

    34.对于一棵树:询问链上的最值,且存在操作把链上的数变成相反数的操作:取反后,最小值是原来最大值的相反数,最大值是原来最小值的相反数;lazy做异或操作即可;

    35.任意两点之间都没有边相连的点集且点数最多是一个图的最大独立集;对应的:任意两点之间都有一条边相连的子图称为团;点数做多的团叫做最大团

      一个有n个节点的二分图,最大独立集的大小等于n-最大匹配数;

    36.DAG最小不相交路径点覆盖:n-拆点二分图的最大匹配数; DAG最小可相交路径点覆盖:传递闭包,然后n-新图的拆点二分图的最大匹配数;

    37.模数1e9+7别打成1e10+7,如果指数也要取模,要取模phi[n];

    38.离散化时,可以使用lower_bound;

    sort(a+1,a+1+n); 		
    int lisan=unique(a+1,a+1+n)-a-1;
    for(int i=1,i<=n,i++){ //注意,这里是n,不是lisan;
    	val[i]=lower_bound(a+1,a+1+lisan,val[i])-a;
    }
    

     39.求强连通分量时,tarjan算法求得的是逆拓扑序,而kosaraju算法求出的是正拓扑序;

    40.在2-sat问题中,同一强连通分量内的变量值一定是相等的。若x与x+n在一个里,无解;否则x(1) 所在的强连通分量的拓扑序在 x+n(0) 所在的强连通分量的拓扑序之后取 x 为真就可以了(选择拓序较大的一个

    41.并查集的时间复杂度是反阿克曼函数;近似于常数

    42.并查集擅长动态维护许多具有传递性的关系;

    43.读入n,m时,设原点S=n+m+1.注意赋值操作一定要在n,m的读入操作后面

    44.算空间复杂度的时候别忘了把系统栈的空间预留出来;

    45.裴蜀定理(又叫做贝祖定理)ax+by=c,xZ,yZ∗成立的充要条件是gcd⁡(a,b)∣c; 裴蜀定理能推广到多个变量;

    46.在使用队列、双端队列、堆等STL时,要从中取出一个元素前一定要判断当前的STL中是否存在元素,否则会RE0的;

    47.二分时,我们要避免死循环(能通过样例并不代表它是对的);

    48.在调试二分之后,一定要把上界改回原题的数据范围,否则死的会很惨(分数和暴力一样);

    49.写快读时一定注意是否需要读负数;

    50.在long long下的乘法取模时,若一个数是int,那么需要强制转换为long long来计算;

    51.dijkstra不要求最长路。

    52.设d(x)表示x的约数个数,那么:$d(xy)=sum_{imid x}sum_{jmid y}[gcd(i,j)=1]$

     ~不定期更新~

  • 相关阅读:
    Prototype.doc in Netsuite
    中文编码问题(utf8转为中文)
    js 取得 Unix时间戳(Unix timestamp)
    关于'跳墙'
    webex js 判断是否是ie 以及兼容性代码
    VLOOKUP函数对查找内容列排序增加效率
    netsuite动态绑定事件
    netsuite filter的选择框 代码控制
    html js 跨域 p3p
    netsuite 记录类型 权限分配 use permissions
  • 原文地址:https://www.cnblogs.com/kamimxr/p/11526914.html
Copyright © 2011-2022 走看看