小 (→题解: 排版) |
小 (→题意: 排版) |
||
第6行: | 第6行: | ||
==题意== | ==题意== | ||
n个盒子,每个盒子装有一个硬币(面值分别为1~n),给出若干组盒子p的硬币面值小于盒子q的信息,求解每个盒子装有的硬币数目。 | n个盒子,每个盒子装有一个硬币(面值分别为1~n),给出若干组盒子p的硬币面值小于盒子q的信息,求解每个盒子装有的硬币数目。 | ||
+ | |||
将盒子抽象为图,很容易知道这是一道拓扑排序裸题,拓扑排序最简单的做法是dfs,摘录一段伪代码<ref>http://blog.csdn.net/dm_vincent/article/details/7714519</ref><ref>http://en.wikipedia.org/wiki/Topological_sorting</ref>: | 将盒子抽象为图,很容易知道这是一道拓扑排序裸题,拓扑排序最简单的做法是dfs,摘录一段伪代码<ref>http://blog.csdn.net/dm_vincent/article/details/7714519</ref><ref>http://en.wikipedia.org/wiki/Topological_sorting</ref>: | ||
L ← 存放答案的数组 | L ← 存放答案的数组 | ||
第18行: | 第19行: | ||
将n添加到L | 将n添加到L | ||
由于dfs的性质,回溯时顺序一定是从最深处的点向浅处的点,也就满足了拓扑序。 | 由于dfs的性质,回溯时顺序一定是从最深处的点向浅处的点,也就满足了拓扑序。 | ||
+ | |||
+ | |||
However,这题恶心在各种细节。 | However,这题恶心在各种细节。 | ||
#题目要求"where the K-th number means the type of coin in K-th box"而非"where the K-th number means box whit k-th coins type",并不是输出拓扑序,要转换一下<ref>http://acm.sgu.ru/forum_action.php?id=4321</ref>; | #题目要求"where the K-th number means the type of coin in K-th box"而非"where the K-th number means box whit k-th coins type",并不是输出拓扑序,要转换一下<ref>http://acm.sgu.ru/forum_action.php?id=4321</ref>; |
题目链接 | 难度等级 | 完成状态 | 完成分数 | 最后编辑时间 | 失误原因(初次提交分数) |
---|---|---|---|---|---|
Weighings | ★☆☆☆☆ | 答案正确 | 100 | 2015-2-18 00:08:13 | 无解情况,数组太小(0) |
(AC 1035)
n个盒子,每个盒子装有一个硬币(面值分别为1~n),给出若干组盒子p的硬币面值小于盒子q的信息,求解每个盒子装有的硬币数目。
将盒子抽象为图,很容易知道这是一道拓扑排序裸题,拓扑排序最简单的做法是dfs,摘录一段伪代码[1][2]:
- L ← 存放答案的数组
- S ← 没有出度的节点集合
- foreach 节点 n in S do
- visit(n)
- function visit(节点 n)
- if n从未被访问 then
- 标记n为访问过
- foreach 节点m(存在m到n的边)do
- visit(m)
- 将n添加到L
由于dfs的性质,回溯时顺序一定是从最深处的点向浅处的点,也就满足了拓扑序。
However,这题恶心在各种细节。
230.cpp代码已折叠
展开折叠内容
|
---|
显示/移除行号
|