C++
一只走向程序员之路的菜鸟
这个作者很懒,什么都没留下…
展开
-
codeforces 1007B Pave the Parallelepiped
看了官方的题解才看懂的, 题解直通车,思路很巧妙记录一下自己所学的新知识get的新知识:从一个装有m个不同的球的袋子中有放回的取n次,选取的结果的不同状态有gcd(m+n-1,n)种例:从含有3个球的袋子中有放回的选3次,结果状态有gcd(3+3-1,3)=gcd(5,3)=10种,分别为:1,1,12,2,23,3,31,1,21,1,32,2,12,2,33,3,1...原创 2018-07-25 15:22:37 · 255 阅读 · 0 评论 -
求逆元
新看到的求逆元的正确姿势,先记一下慢慢消化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 评论 -
STL源码剖析笔记(heap)
函数make_heap的使用make_heap(iterator first,iterator last) 可生成一个最大堆push_heap(iterator first,iterator last) 前提是[first,last-1)是一个堆,改函数可将last-1元素放入堆中,维护堆的特性pop_heap(iterator first,iterator last) 取出堆中的最...原创 2018-07-27 17:23:30 · 198 阅读 · 0 评论 -
C++二位数组作为参数传递
#include<iostream>#include<cstdio>#include<map>using namespace std;void func1(int arr[][5])//传递数组,需生命数组第二维的大小{ for(int i=0;i<5;i++){ for(int j=0;j<5;j++)cout...原创 2018-08-18 17:33:27 · 663 阅读 · 0 评论