递归分治
mig_davidli
稍微明白点算法和C++,参加过几个小项目。。
展开
-
【dfs】poj1753——Flip Game
来源:点击打开链接网络赛已被虐瞎……做点经典题找自信。最多有2^16种状态,DFS/BFS都可以,参考了小優YoU的博客:#include #include using namespace std;bool mat[6][6];int step;bool flag;int dirc[5]={0,0,1,-1,0};int dirr[5]={1,-1,0,0,0};原创 2013-09-16 20:32:33 · 1072 阅读 · 0 评论 -
【CodeCraft比赛】Problem 3——INVESCAPE (迷宫BFS)
CodeCraft是印度IIT大学举办的一个算法邀请赛(这个大学貌似在印度挺出名,有个笑话:印度某集团的老总谈自己的儿子说,我这个不争气的儿子,考IIT都没考上,我气得没办法,只好把他送到了哈佛。。。囧rz)目前只有这一届。在人人上看到了ACM-ICPC主页君过年期间比赛的新闻,于是很有兴趣便参加了一下,据官网说还会再搞。第一名200美刀,第二名75美刀。我又折腾了一晚上,3AC拿了第30名,原创 2013-02-18 08:55:16 · 748 阅读 · 0 评论 -
【循环节】HDU 1005 and HDU 1097
来源:点击打开链接1005,找循环节问题,根据鸽巢原理得到最多7*7种情况,分类讨论找一下循环节就行了,1097,找a^b的最后一位,也是循环节数论题。巩固一下。hdu1005:#include #include using namespace std;long long tar[100];int main(){ int a,b,c; while(cin>>a>>b>原创 2013-05-14 12:25:37 · 1168 阅读 · 0 评论 -
【基本二分】HDU2199-精度控制求解
最近处于乱撞状态,看到哪算哪,当然以基础的模拟,搜索,字符串为主+少量的计算几何理论学习还有一堆比赛中用来签到的水题,因为确实不会了瓶颈期ORZ..这个题是二分思想的典范,一个left,一个right,一个middle为他们除2,数据是线性的,所以不用排序,多了的话就把尾部往前挪(tail=ans-极小),少的话把头部往后挪(head=ans+极小),直到(尾-头=极小)为止,这便是二分思想。原创 2012-11-06 12:45:23 · 647 阅读 · 0 评论 -
【非图BFS+STL】电脑修好了—Open the Lock_HDU 1195
电脑折腾了三天总算修好了…C盘出现了一片bad sector…虽然以前写的ACM都没了,启动的也特别慢,但毕竟是修好了,于是又开始了。涉足了一下自己最害怕的BFS(虽然这个对别人来说是弱智级别的),非图的+STL。大意是一个四位密码锁,有两种方式,都算一步:1、前后的+1和-1.2、相邻两个调换顺序.从一个密码到目标密码需要几步。加上个STACK,跌跌撞撞的卡TIME AC原创 2012-11-22 20:32:07 · 683 阅读 · 0 评论 -
【非常非常巧妙的暴搜】CodeForce 6B——President's Office
来源:点击打开链接这个题表面上看用DFS做(其实也能做),但其实可以用异常简洁的方式(异常到暴,用ASCII码):#include using namespace std;int n,m,b[256];char map[150][150];int main(){ char traget; int ans=0; cin>>n>>m>>traget; for(in原创 2012-12-05 21:24:43 · 1334 阅读 · 0 评论 -
【暴搜比DFS稍微好想一点】CODEFORCE 7A— Kalevitch and Chess
来源:点击打开链接大意是有一个8x8的图形,刚开始上面的每一个格子都是白色,现在给定一个状态,问最少需要几步才能由初始化状态到当前状态。可以DFS,第一印象也是DFS,但是简单的使用模拟,可能会大大的提高效率。统计行,行占满了看列。#includeusing namespace std;char map[8][8];int main(){ int i,j; i原创 2012-12-11 15:44:57 · 1057 阅读 · 0 评论 -
【一题三解】POJ2299 Ultra-QuickSort (归并排序法)
题目:点击打开链接这个题给出了500000个样例组,数据最大到1E,求这一串序列的逆序数。逆序数的定义不多说,详见线性代数。表示有好几种方法可以解决这个问题,如树状数组、线段树、归并排序等。归并排序是最接近模板法的,因为排序的结构决定了它是在相邻两个数之间进行的比较。很容易MLE的,如果数组开的过大或者过小的话。部分参阅了标准模板。/**** **** **** **** ****原创 2013-01-24 17:23:49 · 626 阅读 · 0 评论 -
【DP式搜索】HDU 2577——How to type
题目链接:点击打开链接这个题比较有意思。大意是一个人要打一些字,他有两种方法,一种是Shift+字母,一种是Capslock之后打字母,这两种可以灵活应用,问打一段单词最少的按键次数。。这个题第一反应是搜索,写了个递归然后TLE。后来DISCUSS中得到了DP的思路。dp数组用二维,其中第二维表示capslock的开与关(1开0关),第一位是欲打的第i个字母,不断比较按capslock的方式和原创 2013-02-19 11:34:45 · 1104 阅读 · 0 评论 -
【水爆炸BFS】Hdu1072——Nightmare
来源:点击打开链接水到炸的BFS,0为墙,1为路,2为起点,3为终点,4为炸弹重置(6秒钟内要么走出去要么重置),走一步需要一秒,求走出去的最短时间~加一个简单的炸弹时间判断即可,开始wa1,因为visit标记只有重置点不能重复运行,而其他的地方都可以,所以visited的范围要有所注意。#include #include #include #include #include原创 2013-07-24 19:09:31 · 909 阅读 · 0 评论 -
【BFS终于变水】HDU 1242——Rescue
来源:点击打开链接终于把BFS看水了,包括路径优化和奇偶剪枝。一年了也就看明白了这点东西,so sad。。。。#include #include #include #include using namespace std;int visited[205][205];char mat[205][205];int n,m;int dir[4][2]={-1,0,1,0,0,1原创 2013-07-30 11:02:31 · 789 阅读 · 0 评论 -
【百WA然后AC】HDU 1728——逃离迷宫
来源:点击打开链接这个怨念留的实在是太久了,得4-5天了,怎么改都不A,终于在今天AC了。这个题有好多梗:1、输入的时候竟然是反着的,先列后行。2、计算转弯次数就要一口气走到头,而不是半路直接+转弯次数,因为初始的行走方向是不一定的。3、当起点等于终点的时候要直接返回正确,否则会报错的。其他的看上去就是很水的BFS了。。#include #include #incl原创 2013-08-01 10:02:11 · 1002 阅读 · 0 评论 -
【三维bfs】HDU1253——胜利大逃亡
来源:点击打开链接三维BFS,比起二维BFS来说多了一维,但是也没什么难度。第一次卡时间过,在大神的指导下明白了,还可以进行优化。1、搜索方向变成了6个。2、需要考虑到出口处为墙的情况。3、如果有这个会大大提高效率:if(a+b+c-3>tarstep) {printf("-1\n");continue;}(起点与终点间最短路径大于时间限度)CODE:#include原创 2013-08-02 10:37:36 · 752 阅读 · 0 评论 -
【伪dfs】HDU 2571——命运
来源:点击打开链接看上去像是搜索,但是还是用的dp。建图,然后观察发现下一步的状态,取决于上一步的状态。其中dp[1][1]=原图的起点。然后for each i->m j->n 2注意初始化为-inf,开始只从0->m,wa了一遍,应该是从0至少到m+1进行初始化。#include #include #include #include using namespace st原创 2013-08-17 10:17:25 · 933 阅读 · 0 评论 -
【打表找规律】2013寒假SD高校ACM周赛5——I’ve Got Your Back(gammon)
来源:点击打开链接一道找规律题。这个题的主要目的是为了寻找一个映射和标号之间的对应关系,即给出下标,获得映射,或者给出映射,得到下标。不难看出,映射是有规律的,根据题意可以推出:(0,0,0,0,0,15)(开始)(0, 0, 0, 0, 1, 14),(0, 0, 0, 0, 2, 13), ...(0,0,0,0,3,12)...(0, 0, 0, 0, 14, 1原创 2013-01-31 14:20:25 · 1605 阅读 · 0 评论