算法学习
Conchpeng
贵在坚持。如有错误欢迎指正。
展开
-
用Zeller计算给定日期是星期几
int check(int year,int month,int day){ if(month==1||month==2){ month+=12; year--; } int c=year/100; int y=year%100; int m=month; int d=day; int W=c/4-2*c+y原创 2018-03-21 22:20:13 · 329 阅读 · 0 评论 -
中国剩余定理学习笔记
问题描述:求出方程组x≡a[i](mod m[i])的解x(其中要求m[0],m[1]……m[n-1]两两互质)问题证明:中国剩余定理给出了以下的一元线性同余方程组: 中国剩余定理说明:假设整数m1,m2, ... ,mn两两互质,则对任意的整数:a1,a2, ... ,an,方程组(S)有解,并且通解可以用如下方式构造得到:设 是整数m1,m2, ... ,mn的乘积,并设 是除了mi以外的n-...原创 2018-05-11 00:01:26 · 270 阅读 · 0 评论 -
数值计算学习笔记
一:数值积分问题描述:求仅说明 Simpon公式,以二次曲线逼近的方式取代矩形或者提醒面积,在EXP极小的情况下可以求得近似面积解[图片源于他人BLOG]long double simpson(long double l,long double r){ long double mid=l+(r-l)/2.0; return (r-l)*(f(l)+4.0*f(mid)+f(...原创 2018-05-11 13:46:53 · 547 阅读 · 0 评论 -
欧拉函数学习笔记
欧拉函数几个性质性质一:φ(n)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…(1-1/pn)ll eulur(ll x){//根据定义求 ll ans=x; for(ll i=2;i*i<=x;i++){ if(x%i==0){ while(x%i==0) x/=i; ans=ans...原创 2018-05-11 21:54:50 · 135 阅读 · 0 评论 -
c++ 常用STL
1.<cstdio>1) freopen("文件名.txt","w",stdout) freopen("文件名.txt","r",stdin)2.<string>1)支持 operator + , ==,!=,<,>,<=,>=2)支持getline读入3)stoi stol stoll stou原创 2018-08-06 10:22:20 · 211 阅读 · 0 评论 -
网络流总结
最大流1.HDU1532 给网络图,求1->n的最大流.注意边数*22.HDU3572 经典建图模型,有些东西能转换为容量考虑 -> 网络流算法. Dinic学了一个多路增广优化,能少一次递归的时间3.HDU3277 有n个女孩和n个男孩,已知一些女孩和一些喜欢的男孩可以组成CP,并已知女孩们之间有朋友关系,如果是朋友关系可以共享一个男孩。而且每个女孩可以选择至多k个...原创 2018-10-12 11:11:13 · 145 阅读 · 0 评论 -
拓扑排序 HDU - 1285 【Topological sort】
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1285思路:Toposort,每次找度==0。题目要求编号小的在前并用小顶堆#include <iostream>#include <string>#include <algorithm>#include <queue>#include &l...原创 2019-08-02 15:28:20 · 127 阅读 · 0 评论 -
Til the Cows Come Home POJ - 2387 【最短路Dijkstra】
链接:http://poj.org/problem?id=2387题意:裸奔最短路#include <iostream>#include <string>#include <algorithm>using namespace std;const int MAX_N = 2000+5;const int MAX_COST = 9999999;...原创 2019-08-02 14:33:27 · 128 阅读 · 0 评论 -
How Many Tables HDU - 1213 【并查集】
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1213题意:求处理并查集后,树的个数#include <iostream>#include <string>#include <algorithm>using namespace std;const int MAX_N = 2000+5;int p...原创 2019-08-02 14:42:38 · 159 阅读 · 0 评论 -
数学:凸包算法详解
一.概念:凸包(Convex Hull)是一个计算几何(图形学)中的概念。在一个实数向量空间V中,对于给定集合X,所有包含X的凸集的交集S被称为X的凸包。X的凸包可以用X内所有点(X1,...Xn)的线性组合来构造.在二维欧几里得空间中,凸包可想象为一条刚好包著所有点的橡皮圈。用不严谨的话来讲,给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边型转载 2018-03-25 11:24:37 · 3813 阅读 · 4 评论 -
全网最!详!细!tarjan算法讲解
全网最详细tarjan算法讲解,我不敢说别的。反正其他tarjan算法讲解,我看了半天才看懂。我写的这个,读完一遍,发现原来tarjan这么简单!tarjan算法,一个关于 图的联通性的神奇算法。基于DFS(迪法师)算法,深度优先搜索一张有向图。!注意!是有向图。根据树,堆栈,打标记等种种神(che)奇(dan)方法来完成剖析一个图的工作。而图的联通性,就是任督二脉通不通。。的问题。了转载 2018-03-12 21:40:37 · 197 阅读 · 0 评论 -
挑战 LCA 学习以及个人理解
因为学的比较浅,直接上模板,有不足的地方请指正·-·!既然要学LCA,那我们要明白LCA,是怎么定义的,怎么确定哪个是LCA。 LCA 被称为 最近公共祖先。 下面只介绍一种方法——倍增法【我不会说我只学了一种的】 。先写个大致的思路:接下来是按照这样的思路放模板。首先脑海里浮想出一棵树,然后节点u,v。OK , 可以开始放模板了。这题输入针对,可以一边看那题一边看模板原创 2017-08-21 16:35:42 · 480 阅读 · 0 评论 -
kuangbin并查集分析
1.Wireless Network题意:输入N(电脑数量),d(电脑修复后可联系的范围); 输入N台电脑的坐标,输入0&id代表修复编号为id的电脑,输入S X Y代表询问X,Y是否能 直接联系/间接联系思路:对于可联系的所有ID,均放到一个集合,想到并查集的作用,把具有相同性质(一定关联性)的东西放在一棵树上,并可以进行查询。2.The Suspects题意:输入n(学原创 2017-11-14 09:37:12 · 436 阅读 · 0 评论 -
拓扑排序专题
来模板(第一题)复杂度O(n+e)#include #include #include #include #include #include #include #include using namespace std;const int MAXN=505;int indegree[MAXN];vector edge[MAXN];void init(int原创 2017-11-28 08:08:32 · 293 阅读 · 0 评论 -
来自AMO的JAVA资料
输入import java.io.*;import java.util.*;import java.math.*;public class Main {public static void main(String[] args) { Scanner cin = new Scanner(new BufferedInputStream(System.in)); /原创 2018-01-31 17:26:30 · 276 阅读 · 2 评论 -
常数优化技巧
1.i++比++i要慢,和重载函数有关.2.inline修饰符3.register 定义for循环的变量,将其变量尽可能存储在CPU的寄存器中,因为离CPU近,计算快.4.常数声明成常量const5.三元运算符比if ... else 更快.6.循环展开7.读入优化8.取模优化inline void原创 2018-02-02 13:30:08 · 496 阅读 · 0 评论 -
STL 总结
1.迭代器(游标)temp.begin()第一个元素temp.end()最后一个元素的下一个位置temp.rbegin()最后一个元素temp.rend()第一个元素的前面一个位置2.优先队列priority_queue,greater >q;//越小的整数优先级越大priority_queue,less >q;//越大的整数优先级越大排序struct原创 2018-02-04 10:20:19 · 170 阅读 · 0 评论 -
是时候复习一下了
快速幂ll pow_mod(ll a,ll b,ll p){ ll res=1; while(b){ if(b&1) res=(res*a)%p; a=(a*a)%p; b>>=1; } return res;}素数筛const int MAX_N=2e5+5;bool prime[MAX_N];vo原创 2018-02-28 14:09:34 · 213 阅读 · 0 评论 -
关于01背包那点事o(*≧▽≦)ツ┏━┓
开门见山 ╰(*°▽°*)╯我P某人要开讲了~ dp[n][v]状态定义为:选择前n个物品的若干个装入体积为v的包中 ,所能获得的最大价值那么有对于当前的状态,我们有 dp[n][v]=max(dp[n-1][v],dp[n-1][v-w[n]]+v[n]] 接下来叙述一个问题 : 01背包恰好装满 与 不要求恰好装满1.若为恰好装满要恰好装满,原创 2018-02-11 22:48:49 · 195 阅读 · 0 评论 -
01背包,完全背包,多重背包
01背包:一件【其实就是完全背包当K=1的情况】完全背包:无数件多重背包Tips:任意一种背包都可以用滚动数组优化int main(){ //N*M for (int i = 1; i <= n; i++) { for (int j = w[i]; j <= W; j++) { dp[i][j] =...原创 2019-08-02 14:58:22 · 144 阅读 · 0 评论