摘要:
decompose 点击查看代码 void decompose(int x) { for(int i = 2; i*i <= x; i++) { while(x%i == 0) { x /= i; fact[i]++; } } if(x > 1) fact[x]++; } 阅读全文
摘要:
快速幂求组合数 大致描述: 就是对直接预处理出阶乘和阶乘的逆元,然后根据组合数的定义直接算就可以了,然后写的时候要注意开longlong,已经错过很多次了。很好理解。 板子: 点击查看代码 ll qpow(ll a,ll b) { ll res = 1; while(b) { if(b&1) res 阅读全文
摘要:
总结&&吐槽: 这场B wa了13发,笑死人了,真的会有这么菜的人么,读错题目了。下次读b这种题的时候要更加细心一点。 D.小天的子序列 题目大意:给定一个字符串全部由小写字母组成,然后又若干次查询,问有多少个以字符x开头以字符y结尾,并且长度为k。 思路分析:发现只要找到了x和y,那么只要长度大于 阅读全文
摘要:
基环树,顾名思义就是基于一个环的树,有n个点和n条边。只有一个环的图,其实并不是树,而是一种特殊的图。 基环树分类: <1>内向树:每个点出度为1; <2>外向树:每个点入度为1; <3>无向树:建的是无向边; 基环树解题的思路:找到环,然后断环成树。 例题: 洛谷p2607 骑士 <1>题目大意: 阅读全文
摘要:
Dijkstra 初始版本: 1.思路分析:用vis数组记录每个点是否被访问过。从原点开始拓展n-1次,计算到每个点的最小距离。每次循环寻找一个距离原点最近的点,然后做松弛操作,更新那些距离更远点。时间复杂度O(n^2)。 算法板子: 点击查看代码 #include<bits/stdc++.h> u 阅读全文