ACM
一只走向程序员之路的菜鸟
这个作者很懒,什么都没留下…
展开
-
求逆元
新看到的求逆元的正确姿势,先记一下慢慢消化ll inv[maxn];void init() { inv[1] = 1; for (int i = 2; i < maxn; i++) inv[i] = inv[mod % i] * (mod - mod / i) % mod;} 然后是常用的扩展欧几里得求逆元:long long ex_gcd(long ...原创 2018-07-26 16:46:06 · 259 阅读 · 0 评论 -
STL源码剖析笔记(vector)
vector内部是在初始化的时候申请一段连续内存空间,需要加入元素时,若当前已经申请的空间足够新元素使用,则直接将新元素放在内存中,若不够用的话,就在动态申请新的一块内存,新内存大小为:min(当前已申请的内存*2,当前已申请的内存+新元素所占内存),然后将原来的数据从旧内存复制到新内存中去,释放旧内存空间,将新加入的元素放入新内存中,初学者可通过vector.size()和vector.capa...原创 2018-07-26 19:56:20 · 131 阅读 · 0 评论 -
codeforces 1010C. Border
题目大意:从数组a中取任意个数求和对k取模,求余数的个数解法:让a各元素对k取模,设k与所有模值的最大公约数为x,则答案中可取得的余数为x的倍数,特殊处理一下0(k)即可 #include<iostream>#include<cstdio>#include<cmath>#include<queue>#include<vec...原创 2018-07-27 10:32:28 · 377 阅读 · 0 评论 -
Codeforces 1010D Mars rover
题目大意:对于一个不完全二分图,根节点为1,叶节点值为0或1,非叶节点包含一个操作(and,or,xor,not),求改变各个叶节点的值时(即0改为1,1改为0),根节点的值是多少 解法:遍历图求各节点的值,改变每个叶节点时,向图根节点遍历,求根节点值即可有两个需要剪枝的地方,一,当改变到当前节点是该节点值已经不在改变,则结束图的向上递归二,维护每个节点改变时,根节点的值,当再次遍...原创 2018-07-27 16:14:20 · 221 阅读 · 0 评论