摘要:
/*求解单源最短路问题:Dijkstra算法(该图所有边的权值非负) 关键(贪心): (1)找到最短距离已经确定的节点,从它出发更新与其相邻节点的最短距离; (2)此后不再关心(1)中“最短距离已经确定的节点”。 时间复杂度(大概的分析,不准确): “找到最短距离已经确定的节点”=>O(|V|) "... 阅读全文
摘要:
/*解决此题,关键在于构图。 目标: TheN(2n]},sum{dp[2][1->n]}...,sum{dp[n][1->n]}} ans=sumMin*100/(n-1) 注意:一定要先乘以100,再除以(n-1),因为这个wa了好多次。 构图的基础: ThecowshavemadeM(1 ... 阅读全文
摘要:
/* floyd算法*/ 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #i... 阅读全文
摘要:
/*考虑到测试数据中需要求解任意两点间的最短路,所以采用Floyd-Warshall算法 dp[i][j]=min(dp[i][k]+dp[k][j]+tax[k],dp[i][j]); 关键在于记录路径,并且要保证:iftherearemoreminimalpaths,outputthelexic... 阅读全文
摘要:
/*求解单源最短路问题:Bellman-Ford算法(可判负权回路)注:负权回路:如果存在一个回路(首尾相同的路径),而且这个回路上所有权值之和是负数,那这就是一个负权回路。 f[i]:=从起点s出发到节点i的最短距离故: f[i]=min(f[j]+dis[i][j]) 初始值: f[]=INF ... 阅读全文
摘要:
/*好久没有做有关图论的题了,复习一下。--------------------------------------------------------- 任意两点间的最短路(Floyd-Warshall算法)动态规划:dp[k][i][j]:=节点i可以通过编号1,2...k的节点到达j节点的最短... 阅读全文
摘要:
/*dfs,关键:检查皇后会发生攻击的状态。两种方法:(第二种,速度更快) (1)voidSolve(introw,intcolUsed); 常规办法,判断状态是否非法的方法:列上通过位运算;左斜、右斜通过遍历。 (2)voidSolveBitOperation(unsignedcol,unsig... 阅读全文
摘要:
/*注意: 输入输出采用scanf、printf,防止TLE。 两种实现方法: (1)voidSolve(intnumPos,intisUsed);//dfs (2)voidSolveWithSTL(); C++STL自带函数,可生成全排列 next_permutation( ), ... 阅读全文
摘要:
/*dfs,需要注意输入的测试数据的格式。*/ 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #inc... 阅读全文
摘要:
/*dfs即可AC。注意: 在清澄oj(http://www.tsinsen.com/A1126)评测时,测试数据中应该有非小写英文字母开头的字符串。 codevs中的测试数据应该都是小写英文字母开头的字符串。 所以注意数据结构的设计。*/ 1 #include 2 #include 3 #in... 阅读全文