- 博客(31)
- 资源 (10)
- 收藏
- 关注
转载 想要清晨不赖床?11个超实用妙招!
想要清晨不赖床?11个超实用妙招!快分享给喜欢赖床的好友吧~是不是每天早晨都在没睡够的痛苦挣扎中捱到“最后时间”,才不得不艰难起床,然后昏昏沉沉地开始这一天?要改变这种状态,赶快学习以下妙招吧! 一、给身体制定唤醒程序
2012-02-29 13:29:34 653
转载 有向图强连通分量的Tarjan算法
程序会出现乱码,调成编辑状态可还原原文链接:http://www.byvoid.com/blog/scc-tarjan/[有向图强连通分量]在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connect
2012-02-28 21:25:45 334
原创 10344 - 23 out of 5(***)
/*题意:用五个数字和三个运算符组成一个表达式,最后答案是否为23超时!不过dfs1和dfs2的搜索顺序变一下可使效率提高一些。小技巧。不太清楚为什么时间效率会存在不同。。。。*/#include #include int aa[5],a[5],visit[5];int o[4];bool ok;int opre(int a,int op,int b){ int c=0
2012-02-18 22:31:01 525
原创 216 - Getting in Line(***)使用顺序数组存储状态
/*推荐题型:三星,有技巧要掌握,顺序数组存储状态题意:每台电脑上之间铺上电缆,问电缆最短为多少思路:深度优先搜索,递归中使用形参存储搜索状态*/#include #include #include struct node{ int x,y;}com[10];double G[10][10],res;bool visit[10];int next[10],ans[10
2012-02-18 22:28:40 487
原创 167 - The Sultan's Successors(****)八皇后问题
/*推荐题型:四星,没有解出。。。带权值的八皇后问题思路:按行进行搜索,数组p记录每行皇后所在列。每次搜索到第八行,进行一次处理即可。*/#include #include int G[10][10];int a[10],b[10],c[20];int p[10];int ans;void dfs(int cur){ if(cur==8) { int num=0
2012-02-17 22:10:35 707
原创 193 - Graph Coloring(*****)推荐入门
/*推荐题型:五星题意:对图中节点进行染色,只有黑白可选,要求相邻节点不同色,问黑色最多可有多少个思路:深度搜索、记忆数组*/#include #include const int nMax=107;int G[nMax][nMax];int ans[nMax],res,n;//answer,resultvoid dfs(int cur,int *A){ int col
2012-02-17 22:09:19 516
原创 10391 - Compound Words(***)字符串的哈希函数
/*题意:一组单词,是否可以分解成两个单词思路:可以进行重组(一种时间效率为n,但空间分配为n*n,一种时间效率为n*n,空间分配为n)也可以进行分拆,效率为n*m,其中m为单词平均长度。主要学习:字符串的哈希处理另外看别人的代码学习到的新技巧:char str[n][m];int r[n];借助r来实现对str的排序。步骤:for(int i=0;i<n;i++)r[i
2012-02-16 22:36:01 534
原创 10887 - Concatenation of Languages(****)字符串的哈希函数处理
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=111&page=show_problem&problem=1828/*题意:两组单词,求最多可组合成多少新单词。无重复,可为空思路:字符串的哈希函数处理*/#include #include const int H
2012-02-15 23:53:03 728
原创 10591 - Happy Number
/*简单题题意:S0每位数字的平方之和为S1,一次推理,如果出现Si=1,输出p1。不出现,输出p2。思路:第一次做的时候超时,没计算出一个新的temp需要与前面的所有数字进行一次判断使用hash做记录*/#include #include int hash[10000];bool check(int k,int n){ int temp=0; while(k!=0)
2012-02-15 23:50:36 814
原创 10125 - Sumsets(*****)
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=111&page=show_problem&problem=1066/*推荐题型:五星题意:从数集中找出满足条件:d=a+b+c的所有情况,输出d可取的最大值hash函数处理,使用数组head和next来实现。*/#i
2012-02-14 19:09:38 676
原创 10282 - Babelfish(***)
/*思路:快速排序,二分查找*/#include #include #include struct node{ char eng[20]; char fore[20];}dic[100010];int cmp(const void *a,const void *b){ node *pa=(node *)a; node *pb=(node *)b; return st
2012-02-14 19:06:27 568
原创 10167 - Birthday Cake
/*简单题。依次历编A,B的值,判断直线上和直线下的个数判断结果*/#include int main(){ //freopen("data.in","r",stdin); int N; int a[120],b[120]; while(scanf("%d",&N)==1) { if(N==0) break; for(int i=0;i<2*N;i++)
2012-02-13 23:15:12 634
转载 位操作详解
位操作详解我们先来看看位运算操作符:& (按位与)、| (按位或)、^ (按位异或)、~ (按位取反)、>> (按位右移)、1、&(按位与) 从概念上来讲,就是将参与运算的两个分量对应的每一位来做逻辑与运算,若两者都为真(等于1),则结果才为真(等于1)。否则都为假(等于0)。即:1 & 1 = 1 、1&0 = 0 、0&1 = 0、0&0 = 0这里我们先来看看那一个8
2012-02-13 20:55:59 510
原创 729 - The Hamming Distance Problem
#include #include using namespace std;int main(){ //freopen("data.in","r",stdin); int T; scanf("%d",&T); while(T--) { int h,n; scanf("%d %d",&h,&n); char str[20]; int i; for(i=0;i<h
2012-02-10 23:23:37 656
原创 146 - ID Codes
/*题意:在字符串全排列中,输出给出字符串后面的那一个字符串思路:找规律,简单题,一次AC*/#include #include #include using namespace std;int main(){ //freopen("data.in","r",stdin); int len,cur; char str[60],p[60]; while(1) { s
2012-02-10 23:22:47 754
原创 10098 - Generating Fast
/*生成可重集的排列,详解见刘汝佳p118题意:输出字符串的全排列,输出时由小到大排序*/#include #include #include using namespace std;char str[15];void print_permutation(int n,int *A,int cur) //递归技巧:传递一数组过来存储已确定的前缀(***){ int i,j;
2012-02-10 23:21:40 601
原创 10557 - XYZZY(****)---Bellman-Ford算法
/*题意:从1走到n,每走到一个屋子即可获得屋里的能量。能量值可为负,问是否可以走到n思路:题目实际是求从起点到终点的最长路径问题由于没到一个点,能量值不为负,所以使用d[]来记录到各点后的能量值,初始化为0,然后使用循环进行松弛,最后判断d[n]是否大于零,如果是则可达。但是如果图中出现正环,则可能使程序陷入死循环,则不要在出现正环时能跳出循环。另外,在之前需要进行一次初始化,
2012-02-09 21:44:06 640
原创 657 - The die is cast(****)
/*题不错,****题意:一幅图,*和X相连的为一块,找出每一块中X的个数,若X相连被认为是一个。然后排序后输出各块中X的个数实现:使用数组arr来存储一块,数组account记录X的个数更好的解法:使用两个数组visit1和visit2,和两个搜索dfs1,dfs2这样一次历编就可以求出结果。*/#include #include #include using namesp
2012-02-07 23:08:10 659
原创 784 - Maze Exploration
/*简单题,一次AC走迷宫问题,深度优先搜索题意:从*开始走将与之相连的房间里的字符设置成#*/#include #include char G[35][85];int n;int dir[4][2]={{0,-1},{0,1},{-1,0},{1,0}};bool check(int x,int y){ bool ok=true; if(xn-1 || y=str
2012-02-07 23:07:13 576
转载 最短路径算法---SPFA
求最短路径的算法有许多种,除了排序外,恐怕是OI界中解决同一类问题算法最多的了。最熟悉的无疑是Dijkstra,接着是Bellman-Ford,它们都可以求出由一个源点向其他各点的最短路径;如果我们想要求出每一对顶点之间的最短路径的话,还可以用Floyd-Warshall。SPFA是这篇日志要写的一种算法,它的性能非常好,代码实现也并不复杂。特别是当图的规模大,用邻接矩阵存不下的时候,用S
2012-02-07 22:46:54 527
转载 最短路径算法---Bellman-Ford
1.Dijkstra算法:http://www.wutianqi.com/?p=18902.Floyd算法:http://www.wutianqi.com/?p=1903Dijkstra算法是处理单源最短路径的有效算法,但它局限于边的权值非负的情况,若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的。这时候,就需要使用其他的算法来求解最短路径,Bell
2012-02-07 22:09:01 846
原创 10129 - Play on Words(*****)欧拉图,并查集
/*有向欧拉图问题,刘汝佳p112页有详细说明使用并查集来判断图是否连通,并判断入度和出度情况题意:将门上的单词最后都拼接在一起,其中前一个单词的最后一个字母必须和后一个单词的第一个字母相同*/#include #include #include #include using namespace std;const int nMax=30;//degreeint ind
2012-02-06 22:58:40 597
原创 10305 - Ordering Tasks(****)拓扑排序
/*简单拓扑排序问题深度优先,数组st作为存储*/#include #include const int nMax=105;int n,m;int G[nMax][nMax],visit[nMax],st[nMax];int top;void dfs(int u){ visit[u]=1; for(int v=1;v<=n;v++) { if(G[u][v] &
2012-02-06 22:57:21 649
原创 532 - Dungeon Master(***)
/*三维迷宫问题,广度优先搜索使用三维数组step来记录每一点最少的步数即可或者使用队列记录也可以。题意:从S到E,最短路径*/#include #include int l,r,c, sl,sr,sc, el,er,ec;const int nMax=35;char dungeon[nMax][nMax][nMax];int step[nMax][nMax][nMax
2012-02-06 22:56:17 805
原创 10054 - The Necklace(***)
/*欧拉回路的应用;刘汝佳p112页总感觉数据不是很全,有些情况不通过。还有,漏了去判断图是否连通。并查集,详细看10129题题意:一项链,每个小球有两种颜色,颜色相同的可连在一起,不小心项链断了,问是否还可以围成一个项链。并输出结果*/#include #include const int nMax=60;int graph[nMax][nMax],p[nMax];int
2012-02-06 22:53:58 672
原创 并查集学习
并查集学习:主要思想:对一个集合进行分类,分成多个相关联的集合。优化方法:路径压缩int p[nMax];void init(){ for(int i=0;i<nMax;p[i]=i,i++);}int find_set(int a){ return p[a]==a?a:p[a]=find_set(p[a]);//状态压缩:p[a]=find_set(p[
2012-02-06 21:43:36 396
转载 把C++学再好,也无法凭这个找到好工作(*****)
做过无数笔试题,做过无数面试题,基本上没遇到过很重视语言细节的。语言本身方面,可能会问问虚函数和多态,重载,作用域,存储方式,字节对齐,一般问的不多,或者根本不问。相反,对待你不懂XX语言上,往往表现的相当宽容,我面试时坦言自己只会一点C,对方也表示没有关系, 而我目标职位没有一个跟C是有点关系的。 比较重要的是,基本数据结构和算法,大规模数据处理技巧,进程,线程,网络等系统问题,智力
2012-02-06 21:32:38 811 1
原创 439 - Knight Moves
/*马走棋盘问题解题思路:广度优先搜索使用二维数组step来记录步数*/#include #include bool chessboard[10][10];int step[10][10];int dir[8][2]={1,2,2,1,1,-2,2,-1,-1,2,-2,1,-1,-2,-2,-1};bool over;struct Node{ int x,y;
2012-02-03 22:26:02 504
原创 10004 - Bicoloring***
/*极简单一题,但是没有解出。题目要求:图是强连通的,无向要求对图中节点染色,只有两种颜色可以选择判断是否存在一种情况使相邻的两节点颜色都不同思路:深度优先搜索*/#include #include int n,m;bool graph[210][210];int color[210];bool dfs(int k,int c){ for(int i=1;i<=
2012-02-03 22:25:13 631
原创 10562 - Undraw the Trees***
/*原来用C++写,结果超时。改成C,通过。。。题意:将画出的树转换成另外一种形式思路:递归建树一次历编,并且创建出来*/#include #include char tree[205][205];int n;bool isNode(char c){ if(c!='-' && c!='|' && c!=' ' && c!='#') return true; re
2012-02-01 16:03:30 547
原创 712 - S-Trees***
/*这道题做得还不错,一次AC解题的新技巧:步骤一:根据input,列举出需要新建那些变量步骤二:其中用到什么函数然后再写程序,效率高模拟题中给你的步骤,大致题意:一颗二叉树,每一层一个变量,次序在输入中给出。根据输入的vva然后输出对应叶子节点上的值。其中vva是(x1,x2...)需要进行一次转换*/#include #include #include #inclu
2012-02-01 16:02:42 699
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人