算法之拓扑排序
摘要:拓扑排序就是把有向无环图变成一种线性的序列,这种线性序列有前后关系。如果用队列来存储最后的结果,如果队列中的数据与总的数据n不相等,则说明有环。 此拓扑排序的思想是: (1)从有向图中选取一个没有前驱的顶点,并输出之; (2)从有向图中删去此顶点以及所有以它为尾的弧; (3)如果入度没有为0的表示有
阅读全文
hdu2639,第K优决策
摘要:在dp问题中如果遇到问题,没有什么是加一维度不能解决的,如果不能,再加一维度。 #include<iostream> #include<cstring> #include<cstdio> #include<cstdlib> #include<algorithm> using namespace st
阅读全文
hdu3535题解
摘要:hdu3535:http://acm.hdu.edu.cn/showproblem.php?pid=3535 该题是非常全面的一道分组背包问题。其实理解了最多一个的分组背包问题,解题起来也是很简单的。但是该题卡了我3天,真让人郁闷。就是因为一个case过不了,里面的时间ci可以为0!!!测试数据中竟
阅读全文
算法之dfs篇
摘要:dfs算法是深度搜索算法。从某一节点开始遍历直至到路径底部,如果不是所寻找的,则回溯到上个节点后,再遍历其他路径。不断重复这个过程。一般此过程消耗很大,需要一些优化才能保持算法的高效。 hdu1010:(奇偶剪枝) 主要题意是一只小狗为了一块骨头,然后进入迷宫。当它拿起骨头的时候,迷宫开始下沉。小狗
阅读全文
算24点的算法,有输出
摘要:主要使用了dfs的算法,比较麻烦的是如何去重,去重第一步可以用set来保存式子,然后再去多余的括号,然后在用另一个set去重。但是做到真正的去重还是比较麻烦,如果有好的建议的博友,可以私信。比如1*2*3*4与2*3*1*4其实是重复的2*(1+2)*4与2*4*(1+2)是重复的。 代码如下:
阅读全文
A题时遇到的一些技巧
摘要:这篇主要是讲刷题时候遇到的一些技巧,该篇保持持续更新状态。。 1、求数组的长度:int a[]={,,,}; int n = sizeof(a)/sizeof(a[0]) 2、求想上取整,例如7/3 = 4; int res = a/b + !!(a%b); 3、求数组全排序,先对数组进行从小到大排
阅读全文
排序之堆排序
摘要:对于堆排序,我觉得算法导论上写的已经很好了,没学过的可以去看一下。
阅读全文
算法之贪心算法篇
摘要:hdu1257 题目刚开始理解错了,该题可以同时有几个拦截系统并行的。题目不算难。 #include<iostream> #include<cstdio> #include<vector> using namespace std; int main() { int n; while(~scanf("
阅读全文
算法之大数加减乘除
摘要:大数加法: 例题 hdu1002 #include<iostream> #include<cstring> #include<cstdio> using namespace std; #define N (1010) void big_add(char* res,char* sa,char* sb)
阅读全文
算法之母函数篇
摘要:母函数在ACM中也是容易出现的题目。这次专门写这一个专题,以题带讲,从简到难。 hdu1028题:题意是输入n,求其组合式子的个数; 例子: 4 = 4; 4 = 3 + 1; 4 = 2 + 2; 4 = 2 + 1 + 1; 4 = 1 + 1 + 1 + 1; 个数为5; Sample Inp
阅读全文
背包系列 hdu3449 有依赖背包
摘要:这道题真正困扰了笔者3,4天,冥思苦想几日无果之后,只能去找大牛的解法。结合网上的大牛解法与自己的理解,笔者终于解决了这个坑了,在此小庆幸一下。 原题如下: Consumer Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/655
阅读全文
背包系列 hdu 3535 分组背包
摘要:题意: 有n组工作,现在有T分钟时间去做一些工作。每组工作里有m个工作,并且类型为s,s类型可以为0,1,2,分别表示至少选择该组工作的一项,至多选择该工作的一项,不限制选择。每个工作有ci,gi两个属性,表示需要花费ci时间去完成该项工作,完成后将会获得gi的快乐值,现在求快乐值最大多少,如果不能
阅读全文
高精度算法代码
摘要:转载自SinGuLaRiTy2001,原文链接:http://www.cnblogs.com/SinGuLaRiTy2001/p/6591222.html 【SinGuLaRiTy-1001】 Copyrights (c) SinGuLaRiTy 2017. All Rights Reserved.
阅读全文
排序之分治排序
摘要:本算法是笔者研读算法导论分治内容伪代码所写,俗话说,它山之石,可以攻玉。算导对排序有非常详细的解释,而分治排序更是其中巧妙的一种排序算法。分治排序先把数组分成[l,mid]与(mid,r]两部分,多次划分直到每个部分只有1个元素。然后把这两部分进行比较排序。(由于上一次的排序,这两个分数组内部是有序
阅读全文
排序之双向冒泡排序
摘要:双向冒泡排序简单地说就是从左向右的遍历寻最大,从右向左寻最小的过程。正常情况下,双向冒泡排序会比普通冒泡排序快。因为代码比较简单就不多说了,直接上代码。
阅读全文
Miller Rabin 大素数测试
摘要:PS:本人第一次写随笔,写的不好请见谅。 接触MillerRabin算法大概是一年前,看到这个算法首先得为它的神奇之处大为赞叹,竟然可以通过几次随机数据的猜测就能判断出这数是否是素数,虽然说是有误差率,但是相对于他比其他素数判断的高效,真的是可以说是完美级。那时候忙于找工作,所以也没有细究,现在空下
阅读全文