最小生成树(无向图) Kruskal 给所有边按从小到大排序 形成环则不选择(利用并查集) P1546 最短网络   https://www.luogu.com.cn/problem/P1546 #include<iostream> #include<cstdio> #include<string> #include<algorithm> typedef long long ll; using namespace std; struct Node { int…
先写一部分,持续到更新完. A: 寒衣调 Description 男从戎,女守家.一夜,狼烟四起,男战死沙场.从此一道黄泉,两地离别.最后,女终于在等待中老去逝去.逝去的最后是换尽一生等到的相逢和团圆. 某日两人至奈何桥前,服下孟婆汤. 每滴孟婆汤都有强度不一的药效,设一碗孟婆汤共N滴(0<N<100000),其中第i滴(0≤i<N)用b[i]表示. 孟婆汤的药效与原料有关,设熬制前同样有N滴原料,第i滴原料用a[i]表示,0≤a[i]<2^32. 药效b[i]的计算方法为b[i]…
A: 漫无止境的八月 Description 又双叒叕开始漫无止境的八月了,阿虚突然问起长门在这些循环中团长哪几次扎起了马尾,他有多少次抓住了蝉等等问题,长门一共回复n个自然数,每个数均不超过1500000000(1.5*10^9).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果. Input 第1行是整数n,表示回复的自然数的个数.n<=1e6第2~n+1行每行一个自然数. Output 包含m行(m为n个自然数中不相同数的个数)…
简单搜索 1.DFS UVA 548 树 1.可以用数组方式实现二叉树,在申请结点时仍用“动态化静态”的思想,写newnode函数 2.给定二叉树的中序遍历和后序遍历,可以构造出这棵二叉树,方法是根据后序遍历找到根,然后在中序遍历中找到树根,从而找出左右子树的结点列表然后递归 构造左右子树 3.注意这里输入的模板,用stringstream会方便 #include<iostream> #include<string> #include<cmath> #include&l…
常用STL 1.优先队列 priority_queue 内部是用堆(heap)实现的 priority_queue<int> pq; 默认为一个“越小的整数优先级越低的优先队列” 对于一些常见的优先队列,STL提供了更简单的定义方法 例如:“越小的整数优先级越大的优先队列”可以写成“priority_queue<int,vector<int>,greater<int> >pq" 自定义优先级 struct Node { int x, y; frie…
算不出的等式 BJOI2012 看到这题 真没什么办法 无奈看题解 1.注意到p/q 联想到斜率 2.注意到 [ ] 联想到整点 注意到k在变化,构造一次函数 f(x)=p/q*x ,g(x)=q/p*x 收到[] 的影响,y值即为f(x)下取整后的值,即垂线上整点的个数 又考虑到p==q时 需特判 于是有 #include<iostream> #include<cstdio> #include<string> #include<algorithm> #in…
符号说明 a|b      a整除b (a,b)    a与b的最大公因数 [a,b]     a与b的最小公倍数 pα||a    pα|a但pα+1∤a a≡b(mod m) a与b对模m同余 a-1 (mod m) a对模m的数论倒数 性质1  如果a|b,那么(-a)|b,反过来也成立 性质2  如果a|b,b|c,那么a|c 性质3  如果a|b,a|c,那么对任意整数x,y都有 a|(bx+cy) 性质4 设n为大于1的正整数,p是n的大于1的因数中最小的正整数,则p为素数 性质5…
1.刘汝佳紫书区间问题三大情况 1.选择不相交区间 贪心策略:一定要选择第一个区间 2.区间选点问题 贪心策略:取最后一个点 3.区间覆盖问题: n个闭区间,选择尽量少的区间覆盖一条指定线段[s,t] 贪心策略:预处理掉[s,t]之外的区间,闭区间从最左向右开始覆盖 应用 Open Judge 1328 要求建在x轴半径d的雷达覆盖所有已知点 #include<iostream> #include<cstdio> #include<string> #include<…
数据结构往往可以在不改变主算法的前提下题高运行效率,具体做法可能千差万别,但思路却是有规律可循 经典问题:滑动窗口  单调队列O(n) POJ 2823 我开始写的: TLE 说明STL的库还是有点慢 #include<iostream> #include<cstdio> #include<string> #include<algorithm> #include<queue> #include<deque> #include<s…
树形DP 加分二叉树 洛谷P1040 注意中序遍历的特点:当根节点编号k时,编号小于k的都在其左子树上,编号大于k的都在右子树 转移方程 f[i,j]=max{f[i,k-1]*f[k+1,j]+d[k]} ,f[i,j]表示中序遍历i到j的二叉树最大加分  时间复杂度O(N3) #include<iostream> #include<cstdio> #include<string> #include<algorithm> #include<queue…