![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM_专题学习
初岁
这个作者很懒,什么都没留下…
展开
-
线段树入门
Mythology 2008-01-17 13:59 线段树入门 好久没写过算法了,添一个吧,写一个线段树的入门知识,比较大众化。 上次在湖大,其中的一道题数据很强,我试了好多种优化都TLE,相信只能用线段树才能过。回来之后暗暗又学了一次线段树,想想好像是第三次学了,像网络流一样每学一次都有新的体会。 把问题简化一下: 在自然数,且所有的数不大转载 2013-07-05 16:29:09 · 319 阅读 · 0 评论 -
素数筛法求素数(线性时间)
摘自:http://blog.csdn.net/once_hnu/article/details/6302283 1)普通方法判断素数:O(n*sqrt(n)) 2)筛法求素数:线性时间,即O(n) // 1:这是最原始的筛法,还有待优化 #define Max 1000000 bool prime[Max]; void IsPrime(){ prime[0]=prime[1]=转载 2013-09-05 22:22:03 · 454 阅读 · 0 评论 -
广度优先搜索模板(poj2251)
我的广度优先搜索的大致框架。。 【代码】: #include #include #include #include using namespace std; typedef struct { int x,y,z; int n; }Point; int dir[6][3]={-1,0,0,1,0,0,0,-1,0,0,1,0,0,0,-1,0,0,1}; char map[3原创 2013-07-28 21:49:44 · 611 阅读 · 0 评论 -
图的深搜和广搜模板(多校联合第一场Park Visit)
#include #include #include #include #include using namespace std; int ans,end; vector graph[100001]; int visited[100001] = {0}; typedef struct{ int v,n; }Node; void dfs(int v) { vector::原创 2013-07-29 15:14:14 · 1089 阅读 · 0 评论 -
大数模板(以poj2109为应用实例)
主函数函数之外部分为大数模板,题目相关只在主函数中涉及。 #include #include #include #include #include #include #define abs(a) ((a)>=0?(a):-(a)) using namespace std; //---------------------------------大数模板-----------原创 2013-07-26 13:32:12 · 391 阅读 · 0 评论 -
最长递增子序列(LIS) nlog(n)算法
转自: http://www.felix021.com/blog/read.php?1587 今天回顾WOJ1398,发现了这个当时没有理解透彻的算法。 看了好久好久,现在终于想明白了。 试着把它写下来,让自己更明白。 最长递增子序列,Longest Increasing Subsequence 下面我们简记为 LIS。 排序+LCS算法 以及 DP算法就忽略了,这两个太容转载 2013-07-24 13:52:58 · 448 阅读 · 0 评论 -
深度优先模板(POJ2488)
#include #include int dir[8][2]={{-2,-1},{-2,1},{-1,-2},{-1,2},{1,-2},{1,2},{2,-1},{2,1}}; int flag[100][100],cnt,m,n; struct node { char letter; int num; }arr[1000]; void dfs(int a,int b,int c原创 2013-07-29 11:34:59 · 451 阅读 · 0 评论 -
堆排序
堆排序 堆排序 堆排序是利用堆的性质进行的一种选择排序。下面先讨论一下堆。 1.堆 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节转载 2013-07-16 11:46:59 · 300 阅读 · 0 评论 -
树状数组
树状数组 树状数组是对一个数组改变某个元素和求和比较实用的数据结构。两中操作都是O(logn)。 在解题过程中,我们有时需要维护一个数组的前缀和S[i]=A[1]+A[2]+...+A[i]。 但是不难发现,如果我们修改了任意一个A[i],S[i]、S[i+1]...S[n]都会发生变化。 可以说,每次修改A[i]后,调整前缀和S[]在最坏情况转载 2013-07-16 13:50:00 · 346 阅读 · 0 评论 -
归并排序
(1)分析: 算法时间复杂度:平均:O(nlogn) 最坏:O(nlogn) (2)实现: //将有二个有序数列a[first...mid]和a[mid...last]合并。 void mergearray(int a[], int first, int mid, int last, int temp[]) { int转载 2013-07-16 11:37:43 · 385 阅读 · 0 评论 -
P问题、NP问题、NPC问题、NP难问题的概念
原文出处:http://blog.sina.com.cn/s/blog_5212bec30100o03y.html你会经常看到网上出现“这怎么做,这不是NP问题吗”、“这个只有搜了,这已经被证明是NP问题了”之类的话。你要知道,大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题并不是那种“只有搜才行”的问题,NPC问题才是。好,行了,基本上这个误解已转载 2016-05-03 14:09:02 · 553 阅读 · 0 评论