08 2010 档案

摘要:1、题目类型:模拟、DFS。2、解题思路:类似八皇后问题的DFS。3、注意事项:注意DFS内部剪枝,以提高运行时间效率。4、实现方法:[代码] 阅读全文
posted @ 2010-08-20 21:43 勇泽 阅读(1682) 评论(0) 推荐(0)
摘要:1、题目类型:模拟、迷宫、DFS。2、解题思路:(1)将输入转换为Maze[][],并记录开始位置2,结束位置3;(2)模拟,按题意要求DFS寻找最优解。3、注意事项:注意DFS但step大于10时返回,否则程序超时;DFS中发生碰撞后,注意更新Maze[][]。4、实现方法:[代码] 阅读全文
posted @ 2010-08-20 21:34 勇泽 阅读(759) 评论(0) 推荐(0)
摘要:1、题目类型:模拟、迷宫、BFS。2、解题思路:BFS的三维Maze[][][]应用,其每步存在前后、左右、上下6个方向的选择。3、注意事项:BFS入队列的条件判断。4、实现方法:[代码] 阅读全文
posted @ 2010-08-20 21:20 勇泽 阅读(418) 评论(0) 推荐(0)
摘要:1、题目类型:模拟、迷宫、DFS、BFS。2、解题思路:经典DFS、BFS的运用:(1)根据输入的字符型Maze[][]转换为整型的map[][],并记录开始位置S,结束位置E,以及开始S的方向;(2)先进行左边优先搜索,传入左边优先的条件进行DFS搜索;再进行右边优先搜索,传入右边优先的条件进行DFS搜索,分别记录其移动步数;(3)BFS搜索获得最少移动步数。3、注意事项:注意DFS中break... 阅读全文
posted @ 2010-08-20 21:12 勇泽 阅读(1488) 评论(5) 推荐(1)
摘要:1、题目类型:字符串、map、trie树。2、解题思路:(1)根据输入建立map字典或者trie树;(2)输入str即查找字典中是否存在该str。3、注意事项:注意对于单行空白的处理。4、实现方法:[代码] 阅读全文
posted @ 2010-08-20 20:48 勇泽 阅读(276) 评论(0) 推荐(0)
摘要:1、题目类型:数论、排序、哈希表。2、解题思路:(1)将-50...50所有整数的3次幂打表;(2)降低运算数量级,将等式分为两部分,这样就由5维操作转换为3维和2维;(3)对保存的3维数据、2维数据的数组结果进行排序,便于后续的比较;(4)对两个数组进行匹配,寻找等值,其中注意处理相邻多个值相等的情况。3、注意事项:注意遇到相邻情况相等,需彼此加加;输出应为长整型;此题在寻找相等数值时可用哈希表... 阅读全文
posted @ 2010-08-20 20:40 勇泽 阅读(395) 评论(0) 推荐(1)
摘要:1、题目类型:DP、概率论。2、解题思路:题意,一次比赛中,共M道题,T个队,p[i][j]表示队i解出题j的概率;问每队至少解出一题且冠军队至少解出N道题的概率。步骤,(1)将输入转换为map[i][j]表示第i队求解第j题的概率;(2)根据map[][]建立DP[i][j][k]表示第 i 队在前 j 题中求解 k 题的概率;(3)所有队求解大于1题的概率减去所有队都没有求解N题的概率即为结果... 阅读全文
posted @ 2010-08-20 16:29 勇泽 阅读(261) 评论(0) 推荐(0)
摘要:1、题目类型:字符串。2、解题思路:字符串匹配,在字符串t中单个字符寻找s,单个字母匹配则i++;3、注意事项:匹配区分大小写。4、实现方法:[代码] 阅读全文
posted @ 2010-08-20 15:48 勇泽 阅读(296) 评论(0) 推荐(0)
摘要:1、题目类型:图论、最大流、Edmonds_Karp算法。2、解题思路:(1)根据输入构建G[][]矩阵,注意machine的各part进入和输出状态,必须Judge成功才允许存在边的连通;(2)添加源点和结点,源点与所有输入part状态全为0的machine相连,结点与所有输入part状态全为1的machine相连;(3)运用Edmonds_Karp算法求解最大流。3、注意事项:G[][]的建立... 阅读全文
posted @ 2010-08-19 21:42 勇泽 阅读(786) 评论(0) 推荐(0)
摘要:1、题目类型:图论、最大二分匹配、匈牙利算法。2、解题思路:(1)计算 '*' 的总数cnt,对每个'*' 的上下左右进行遍历构建gra[][];(2)匈牙利算法求解最大点集覆盖的最大二分匹配;(3)用总数cnt减去匹配数除以2即为答案。3、注意事项:注意gra[][]的大小。4、实现方法:[代码] 阅读全文
posted @ 2010-08-19 21:24 勇泽 阅读(209) 评论(0) 推荐(0)
摘要:1、题目类型:图论、最短路径、Floyd算法。2、解题思路:Floyd算法的简单应用;STL中map的简单应用。3、注意事项:避免map报警告,文件开始调用#pragma warning(disable:4786)。4、实现方法:[代码] 阅读全文
posted @ 2010-08-19 21:14 勇泽 阅读(227) 评论(0) 推荐(0)
摘要:1、题目类型:图论、最短路径、Floyd算法。2、解题思路:Floyd算法的简单应用3、注意事项:注意n为0的特殊情况。4、实现方法:[代码] 阅读全文
posted @ 2010-08-19 21:05 勇泽 阅读(245) 评论(0) 推荐(0)
摘要:1、题目类型:图论、最短路径、dijkstra算法。2、解题思路:(1)将输入转换为map[][],其中添加汇点t,任何物品都与汇点t相连,权值为其无优惠情况下的金币数;(2)分析知探险家只能在M范围内交易,且M范围必须包含酋长的等级;(3)对满足题意的范围了dijkstra算法寻找最短路径。3、注意事项:以酋长的等级为立足点考虑M范围。4、实现方法:[代码] 阅读全文
posted @ 2010-08-19 17:42 勇泽 阅读(2661) 评论(0) 推荐(0)
摘要:1、题目类型:模拟题。2、解题思路:(1)将输入的棋盘分布转换为map[][];(2)根据map[][]相应输出即可。3、注意事项:输入中对于Q-q、K-k的处理。4、实现方法:[代码] 阅读全文
posted @ 2010-08-19 17:19 勇泽 阅读(250) 评论(0) 推荐(0)
摘要:1、题目类型:模拟。2、解题思路:水题,模拟robotd的移动,并记录移动步数即可。3、注意事项:在loop时候,注意结束条件。4、实现方法:[代码] 阅读全文
posted @ 2010-08-19 17:00 勇泽 阅读(347) 评论(0) 推荐(0)
摘要:1、题目类型:贪心算法。2、解题思路:(1)将所有的岛转换为对海岸线上雷达位置的区间;(2)对所有岛的区间按照其right进行排序;(3)遍历搜索需要增加的雷达数。3、注意事项:遍历中一旦发现重叠既用flag[]标示;当y>d时,输出-1。4、实现方法:[代码] 阅读全文
posted @ 2010-08-18 21:14 勇泽 阅读(212) 评论(0) 推荐(0)
摘要:1、题目类型:数论。2、解题思路:水题,用double类型运算即可。3、实现方法:[代码] 阅读全文
posted @ 2010-08-18 21:08 勇泽 阅读(160) 评论(0) 推荐(0)
摘要:1、题目类型:数论、贪心。2、解题思路:贪心遍历4种情况,取最大值。3、注意事项:在遍历4种情况中,s、d的数目是固定的,需判断其是否和为负。4、实现方法:[代码] 阅读全文
posted @ 2010-08-18 21:06 勇泽 阅读(185) 评论(0) 推荐(0)
摘要:1、题目类型:字符串。2、解题思路:水题。3、注意事项:cin.getline() 中参数的使用。4、实现方法:[代码] 阅读全文
posted @ 2010-08-18 17:46 勇泽 阅读(244) 评论(0) 推荐(0)
摘要:1、题目类型:数论。2、解题思路:水题。3、实现方法:[代码] 阅读全文
posted @ 2010-08-18 17:43 勇泽 阅读(186) 评论(0) 推荐(0)
摘要:1、题目类型:二叉树遍历。2、解题思路:已知二叉树前序遍历、中序遍历,求后序遍历。3、注意事项:二叉树构造中递归的使用。4、实现方法:[代码] 阅读全文
posted @ 2010-08-18 17:40 勇泽 阅读(226) 评论(0) 推荐(0)
摘要:1、题目类型:数论、大数乘法。2、解题思路:二分计算提高运算速度:n表示为2的0、1、2、3...次幂的之和。3、注意事项:测试数据中00.00的情况;注意 . 的位置。4、实现方法:(C++)[代码]5、实现方法:(java)[代码] 阅读全文
posted @ 2010-08-17 21:27 勇泽 阅读(1105) 评论(0) 推荐(0)
摘要:1、题目类型:模拟、数论。2、解题思路:水题。3、注意事项:dp[a][b][c]记录状态即可。4、实现方法:[代码] 阅读全文
posted @ 2010-08-17 20:55 勇泽 阅读(259) 评论(0) 推荐(0)
摘要:1、题目类型:大数加法。2、解题思路:水题。3、注意事项:STL中reverse的巧用,加法进位的处理。4、实现方法:(C++)[代码]5、实现方法:(Java)[代码] 阅读全文
posted @ 2010-08-17 20:37 勇泽 阅读(284) 评论(0) 推荐(0)
摘要:1、题目类型:数论。2、解题思路:水题。3、实现方法:[代码] 阅读全文
posted @ 2010-08-17 20:22 勇泽 阅读(157) 评论(0) 推荐(0)
摘要:1、题目类型:模拟。2、解题思路:水题。3、注意事项:两种方法:用mov次数记录需要对其结束位置排序;用过道map记录不需要排序。4、实现方法:[代码] 阅读全文
posted @ 2010-08-17 20:20 勇泽 阅读(310) 评论(0) 推荐(0)
摘要:1、题目类型:数论、打表。2、解题思路:水题。3、注意事项:优化dp[i][j]>10000,否则TLE。4、实现方法:[代码] 阅读全文
posted @ 2010-08-17 20:15 勇泽 阅读(219) 评论(0) 推荐(0)
摘要:1、题目类型:哈希表。2、解题思路:水题。3、注意事项:哈希公式。4、实现方法:[代码] 阅读全文
posted @ 2010-08-17 20:11 勇泽 阅读(276) 评论(0) 推荐(0)
摘要:1、题目类型:数论。2、解题思路:水题。3、注意事项:esp表示e的指数函数。4、实现方法:[代码] 阅读全文
posted @ 2010-08-17 20:08 勇泽 阅读(250) 评论(0) 推荐(0)
摘要:1、题目类型:图论、最大二分匹配、匈牙利算法。2、解题思路:题目抽象为求解最大二分匹配,匈牙利算法的简单应用。3、注意事项:注意搜索map[][]为N*M而非N*N。4、实现方法:[代码] 阅读全文
posted @ 2010-08-13 15:30 勇泽 阅读(217) 评论(0) 推荐(1)
摘要:1、题目类型:图论、最大流、Edmonds_Karp算法。2、解题思路:简单最大流问题,Edmonds_Karp算法的经典应用。3、注意事项:对比Ford_Fulkerson算法DFS寻找增广路径,Edmonds_Karp算法BFS寻找增广路径效率更高。4、实现方法:[代码] 阅读全文
posted @ 2010-08-13 15:25 勇泽 阅读(291) 评论(0) 推荐(1)
摘要:1、题目类型:图论、混合图欧拉回路、Edmonds_Karp算法。2、解题思路:(1)将图的无向边随便定向,计算每个点的入度和出度。如果有某个点出入度之差为奇数,那么肯定不存在欧拉回路;(2)构建流网络模型,Edmonds_Karp算法,察看是否有满流的分配。存在即有欧拉回路,没有就是没有欧拉回路。3、注意事项:Edmonds_Karp算法中残留网络的更新。4、参考博客:http://blog.c... 阅读全文
posted @ 2010-08-12 20:16 勇泽 阅读(503) 评论(0) 推荐(1)
摘要:1、题目类型:图论、有向边欧拉回路。2、解题思路:题意,一个图,要将每条边恰好遍历两遍,而且要以不同的方向,还要回到原点。步骤,(1)将无向边转换为有向边,用边结构体的vector数组表示图的邻接表关系;(2)Bellman-Ford算法松弛所有的边,寻找是否存在负圈。3、注意事项:用矩阵表示点间关系可能MLE,用点间邻接表表示可能TLE(曾经在别的题终于到过此种情况),所有改用边结构体的vect... 阅读全文
posted @ 2010-08-12 11:17 勇泽 阅读(327) 评论(0) 推荐(0)
摘要:1、题目类型:图论、最大二分匹配、匈牙利算法。2、解题思路:求解最小点集覆盖即求解最大二分匹配,匈牙利算法的简单应用。3、注意事项:模拟匈牙利算法的递归过程。4、实现方法:[代码] 阅读全文
posted @ 2010-08-12 10:57 勇泽 阅读(176) 评论(0) 推荐(0)
摘要:1、题目类型:图论、最短路径、Bellman-Ford算法。2、解题思路:(1)根据输入记录所有的边,其中无向边转换为有向边记录;(2)Bellman-Ford算法松弛所有的边,寻找是否存在负圈。3、注意事项:注意Mov[]数组的大小。4、实现方法:[代码] 阅读全文
posted @ 2010-08-11 17:01 勇泽 阅读(387) 评论(0) 推荐(1)
摘要:1、题目类型:图论、最短路径、Bellman-Ford算法。2、解题思路:Bellman-Ford算法简单应用。3、注意事项:更新条件:d[j]<(d[i]-com[i][j])*rate[i][j]。4、实现方法:[代码] 阅读全文
posted @ 2010-08-11 16:51 勇泽 阅读(217) 评论(0) 推荐(0)
摘要:1、题目类型:图论、最小生成树、Prim算法。2、解题思路:Prim算法生成最小生成树过程中寻找最长Edge。3、注意事项:每个case结束后,输出空行;pow()函数中需强制转换double。4、实现方法:[代码] 阅读全文
posted @ 2010-08-11 16:42 勇泽 阅读(247) 评论(0) 推荐(0)
摘要:1、题目类型:图论、点双强连通分量、Tarjan算法。2、解题思路:题意,N个骑士中某些骑士之间会有仇恨。骑士们开会时围坐在一个圆桌旁。一次会议能够举行,当且仅当没有相邻的两个骑士相互仇恨,且开会人数为大于2的奇数。若某个骑士任何会议都不能参加,那么就必须将它踢出。给出骑士之间的仇恨关系,问需要踢出多少个骑士。步骤,(1)建立输入图的补图;(2)类似Trajan算法求解并记录点双强连通分量;(3)... 阅读全文
posted @ 2010-08-10 21:42 勇泽 阅读(549) 评论(0) 推荐(0)
摘要:1、题目类型:图论、最小生成树、Prim算法。2、解题思路:Prim算法求解最小生成树。3、注意事项:Prim算法的简单应用。4、实现方法:[代码] 阅读全文
posted @ 2010-08-10 19:44 勇泽 阅读(157) 评论(0) 推荐(0)
摘要:1、题目类型:图论、最小生成树、Prim算法。2、解题思路:(1)将输入转换为map[][]:即匹配任意两个字符串,记录其不同的字母个数;(2)Prim算法求解最小生成树。3、注意事项:Prim算法的简单应用。4、实现方法:[代码] 阅读全文
posted @ 2010-08-10 19:41 勇泽 阅读(272) 评论(0) 推荐(0)
摘要:1、题目类型:图论、最小生成树、迷宫、Prim算法、BFS。2、解题思路:(1)将输入转换为map[][]:'S'、'A'、' '、'#'分别用实际意义的数值表示;并将出现的节点用结构体数组Node[]表示;(2)BFS算法搜索map[][]迷宫,获得每个节点间的距离,用arr[][]数组保存;(3)Prim算法求解最小生成树。3、注意事项:输入不是规则的X*Y输入,包括输入x、y值时,需用cin... 阅读全文
posted @ 2010-08-10 16:29 勇泽 阅读(877) 评论(2) 推荐(4)
摘要:1、题目类型:图论、拓扑排序。2、解题思路:(1)每输入一组数据,进行拓扑排序;(2)内部形成环时(即出现冲突)TuoPu()返回-1;内部存在多个入度为0的点时(即无法判断)此时将f标识为1;当拓扑排序正确时,TuoPu()返回排序成功的节点个数;(3)根据TuoPu()的返回值,输出结果,仅当其返回值等于输入N时,结果正确。3、注意事项:当存在冲突或者拓扑排序成功时,之后的输入不对结果造成影响。4、实现方法:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.c 阅读全文
posted @ 2010-08-09 21:33 勇泽 阅读(1529) 评论(5) 推荐(1)
摘要:1、题目类型:图论、强连通分量、Tarjan算法。2、解题思路:(1)建立图的邻接表;(2)Trajan算法求解并记录强连通分量;(3)判断强连通分量的入度,当存在多个出度为0时,输出0;当只存在唯一出度为0的强连通分量,则输出其内部节点的个数。3、注意事项:图用邻接表表示,矩阵表示MLE;注意M=0的情况。4、实现方法:[代码] 阅读全文
posted @ 2010-08-09 20:39 勇泽 阅读(829) 评论(0) 推荐(1)
摘要:1、题目类型:DP。2、解题思路:等待进一步整理。3、注意事项:等待进一步整理。4、实现方法:[代码] 阅读全文
posted @ 2010-08-08 22:18 勇泽 阅读(299) 评论(0) 推荐(0)
摘要:1、题目类型:01背包问题扩展,DP。2、解题思路:DP递推式: for i=1...N for j=left...right DP[j]=DP[j+S[i]]+F[i]3、注意事项:注重DP[i]的状态保持,其他方法TLE;用left、right 记录边界提高的遍历效率;用Flag[]标示是否可用。4、实现方法:[代码] 阅读全文
posted @ 2010-08-08 21:19 勇泽 阅读(456) 评论(0) 推荐(1)
摘要:1、题目类型:01背包问题,DP。2、解题思路:DP递推式: for i=1...N for j=M...1 DP[j]=max{DP[j],DP[j-W[i]]+D[i]}3、注意事项:DP用一维数组表示,否则MLE;j 的循环从M...1,用于同一数组保存 i-1时DP[j]的值。4、实现方法:[代码] 阅读全文
posted @ 2010-08-07 15:34 勇泽 阅读(256) 评论(0) 推荐(1)
摘要:1、题目类型:DP、概率论。2、解题思路:DP递推式(以上下切为例): for i=x1...x2 Sum[k][x1][y1][x2][y2]=Min{Sum[k][x1][y1][x2][y2],Min{DP(k-1,x1,y1,i,y2)+Bak[i+1][y1][x2][y2],DP(k-1,i+1,y1,x2,y2)+Bak[x1][y1][i][y2]}}; 其中 i 表示切割位置,... 阅读全文
posted @ 2010-08-06 19:25 勇泽 阅读(510) 评论(0) 推荐(0)
摘要:1、题目类型:DP、01背包问题的扩展。2、解题思路:DP递推式: for i=1...G for j=min...maxfor k=1...C DP[i][j]=DP[i][j]+DP[i-1][j-hook[k]*goods[i]]3、注意事项:注重DP状态的选择,其他选择容易出现TLE、MLE。4、实现方法:[代码] 阅读全文
posted @ 2010-08-05 23:03 勇泽 阅读(183) 评论(0) 推荐(1)
摘要:1、题目类型:多重背包问题,DP。2、解题思路:DP递推式: for i=0...k for j=cash...0 DP[j]=max{DP[j],DP[j-value[i]]+value[i]}3、注意事项:多重背包转换为01背包时,k++、value[k]的控制;dp[]注意及时清空;注意value[]大小,避免RE。4、实现方法:[代码] 阅读全文
posted @ 2010-08-05 22:59 勇泽 阅读(240) 评论(0) 推荐(1)
摘要:1、题目类型:动态规划。2、实现方法:[代码] 阅读全文
posted @ 2010-08-04 19:56 勇泽 阅读(200) 评论(0) 推荐(0)
摘要:1、题目类型:模拟题。2、解题思路:(1)根据输入数据建立Arr[],0表示'(',1表示')';(2)搜索为Arr[]中为 1 的位置,并找到与之相匹配的 0 ,cnt表示对应的匹配间1的个数。3、注意事项:flag[i]标示Arr[i]是否已完成匹配;flag[]注意及时清空。4、实现方法:[代码] 阅读全文
posted @ 2010-08-03 23:19 勇泽 阅读(555) 评论(0) 推荐(1)
摘要:1、题目类型:模拟题、栈、位运算。2、解题思路:(1)题意只用到5个 bool 变量,所以用0—32的 int 型用于循环;(2)根据str的操作符性质不停的出战、入栈直到循环结束。(3)判断最终栈中数据的真假,输出结果。3、注意事项:从str.length()-1开始循环出入栈;4、实现方法:[代码] 阅读全文
posted @ 2010-08-03 23:03 勇泽 阅读(627) 评论(0) 推荐(1)
摘要:1、题目类型:模拟题。2、解题思路:(1)将输入转换为Map[][],Loc[], Mov[]数组,分别表示在矩形中有哪些robot、robot的位置及当前运动方向、所需要完成的行动;(2)模拟输出各种情况。3、注意事项:N、W、S、E这种顺时针的旋转顺序;对于求余数处理是否注意出现负数的情况;robot移动过程中,crashes robot和crashes wall 同时判断,crashes r... 阅读全文
posted @ 2010-08-03 22:05 勇泽 阅读(1027) 评论(0) 推荐(1)
摘要:1、题目类型:BFS,位运算。2、解题思路:(1)将输入转换为int 16位整数;(2)BFS,中止条件为data==0 || data==65535;(3)输出BFS层数。3、注意事项:类似POJ 2965。4、实现方法:[代码] 阅读全文
posted @ 2010-08-02 21:02 勇泽 阅读(237) 评论(0) 推荐(0)
摘要:1、题目类型:BFS,位运算。2、解题思路:(1)将输入转换为int 16位整数;(2)BFS,中止条件为data==0;(3)输出BFS层数,并记录每层改变的位置。3、注意事项:BFS中用STL的queue做队列,提交TLE。4、实现方法:[代码] 阅读全文
posted @ 2010-08-02 20:55 勇泽 阅读(284) 评论(0) 推荐(1)
摘要:1、题目类型:枚举,哈希表。2、解题思路:(1)建立输入点集Arr[],并插入Hash表;(2)枚举所有线段利用Hash表寻找是否存在另外两点使其构成正方形;3、注意事项:已知两点(a1,a2)和(b1,b2),有点(a1+(a2-b2), a2-(a1-b1))和点(b1+(a2-b2), b2-(a1-b1))可以构成一个正方形。4、实现方法:[代码] 阅读全文
posted @ 2010-08-02 20:36 勇泽 阅读(565) 评论(0) 推荐(1)