题目描述 "臭味相投"--这是我们描述朋友时喜欢用的词汇.两个人是朋友通常意味着他们存在着许多共同的兴趣.然而作为一个宅男,你发现自己与他人相互了解的机会 并不太多.幸运的是,你意外得到了一份北大图书馆的图书借阅记录,于是你挑灯熬夜地编程,想从中发现潜在的朋友. 首先你对借阅记录进行了一番整理,把N个读者依次编号为1,2,-,N,把M本书依次编号为1,2,-,M.同时,按照"臭味相投"的原则,和你喜欢读同一本书的人,就是你的潜在朋友.你现在的任务是从这份借阅记录中计…
Java排序一,冒泡排序! 刚刚开始学习Java,但是比较有兴趣研究算法.最近看了一本算法笔记,刚开始只是打算随便看看,但是发现这本书非常不错,尤其是对排序算法,以及哈希函数的一些解释,让我非常的感兴趣,就记录一下自己的学习总结! 排序:将一些无序的元素按照某种规则排列的过程就叫"排序".在生活中,有时候可能是一些少量的数据 ,,,但是 ,也有可能是 一些的大数据 .排序是非常基础和重要的算法,有着广泛的理论基础和实践需求.(加粗部分摘自<算法笔记>原话!:-D) 一个排序…
目录 1 问题描述 2 解决方案 2.1 蛮力法 2.2 减治法 2.2.1 Johson-Trotter算法 2.2.2 基于字典序的算法   1 问题描述 何为旅行商问题?按照非专业的说法,这个问题要求找出一条n个给定的城市间的最短路径,使我们在回到触发的城市之前,对每个城市都只访问一次.这样该问题就可以表述为求一个图的最短哈密顿回路的问题.(哈密顿回路:定义为一个对图的每个顶点都只穿越一次的回路) 很容易看出来,哈密顿回路也可以定义为n+1个相邻顶点v1,v2,v3,...,vn,v1的一…
算法笔记 这个博客写的不错:http://blog.csdn.net/wust_zzwh/article/details/52100392 数位dp的精髓是不同情况下sta变量的设置. 模板: ]; ll dp[][state];//不同题目状态不同 ll dfs(int pos,/*state变量*/,bool lead/*前导零*/,bool limit/*数位上界变量*/)//不是每个题都要判断前导零 { //递归边界,既然是按位枚举,最低位是0,那么pos==-1说明这个数我枚举完了 )…
算法笔记 模板: vector<int>g[N]; vector<int>edge[N]; ][N]; int deep[N]; int h[N]; void dfs(int o,int u,int w) { ,h[u]=h[o]+w; ;j<g[u].size();j++) { if(g[u][j]!=o) { anc[][g[u][j]]=u; ;i<;i++)anc[i][g[u][j]]=anc[i-][anc[i-][g[u][j]]]; dfs(u,g[u]…
算法笔记 map: map<string,int> m; map<string,int>::iterator it;//auto it it = m.begin(); while(it != m.end()) { //it->first; //it->second; it ++; } set: multiset<int>ss; multiset<int>::iterator it=ss.begin();//auto it,multiset元素可以…
算法笔记 priority_queue<int>que;//默认大顶堆 或者写作:priority_queue<int,vector<int>,less<int>>//less表示其他元素都比堆顶小 小顶堆:priority_queue<int,vector<int>,greater<int>>//greater表示其他元素都比堆顶大 less和greater容易混淆!!!…
算法笔记 参考资料:https://wenku.baidu.com/view/25540742a8956bec0975e3a8.html sg函数大神详解:http://blog.csdn.net/luomingjun12315/article/details/45555495 sg[i]定义,从i走一步能到达的j的sg[j]以外的最小值,那么从sg函数值为x的状态出发,我们能转移到sg值为0,1,...,x-1的状态 对于某个人来说,0是他的必败态,sg[0] = 0 我们从这个状态出发,用d…
开始系统学习算法,希望自己能够坚持下去,期间会把常用到的算法写进此博客,便于以后复习,同时希望能够给初学者提供一定的帮助,手敲难免存在错误,欢迎评论指正,共同学习.博客也可能会引用别人写的代码,如有引用,定会注明.本博客内容主要按照算法笔记内容进行学习.(2018-12-03) 1.万能头文件 #include<bits/stdc++.h> using namespace std;int main(){ ... return 0;} 2.判断素数 int IsPrime(int n){ ;i&…
目录 1 问题描述 2 解决方案   1 问题描述 问题描述 Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续地编号为1到N.每一个牧场都是一个奶牛的家.FJ计划除去P条道路中尽可能多的道路,但是还要保持牧场之间 的连通性.你首先要决定那些道路是需要保留的N-1条道路.第j条双向道路连接了牧场Sj和Ej(1 <= Sj <= N; 1 <= Ej <= N; Sj != Ej),而且走完它需要Lj的时间.没有两个牧场是被一…