2017/8/9训练日记

来源:互联网 发布:轩辕剑坐骑进阶数据 编辑:程序博客网 时间:2024/05/21 07:50

今天终于a完了25道题,包括dfs,bfs以及图论算法和拓扑排序;

其中拓扑排序这个题

输入n和m,n表示26个字母前n个字母,m表示有多少个关系,然后输入m个关系,判断是否这n个字母存在一个排序关系
如果存在输出在几个关系之后就输出几个关系之后就可以确定,比如第一个测试数据,前四个关系输入之后,就输出结果
后两个关系输入不用管,,如果存在环那么就输出冲突,如果不能确定次序就输出不能确定。


考察了拓扑排序的基本思想:每一步寻找一个入度为0的结点,然后删除之。将这个结点指向的结点入度减1。删除从这个结点出发的所有边
同时考察了对于一个有向图是否有环、是否严格有序的判断。(当发现多个结点的度为0时,则不是严格有序。当发现没有结点入度为0时,则有环)
需要注意的是逻辑上的关系。“Sorted sequence cannot be determined.”这个判断,要放在最后,即只有发现了所有的点都没有环,且并没有发现严格有序性质的时候,才可以判为“Sorted sequence cannot be determined."
逻辑上的判决一定要注意优先级。
这个问题中优先级最高的是判断有环。一旦发现找不到度为0的结点,则立即return。
第二优先级是是否严格有序的判断。当每一步能且只能找到一个度为0的结点,则return。
第三优先级是无法确定。(当发现无法确定时,并不能立即return,因为还需要判断是否有环)


思维方式:当条件x成立时,另外的条件y,z是否一定不成立。如果一定不成立,则可以断言return。否则必须继续判断下去

//http://blog.csdn.net/u012860063/article/details/38681633

ac代码见大佬博客


再有就是看了单调队列

单调队列,就是一个符合单调性质的队列,它同时具有单调的性质以及队列的性质。

他在编程中使用频率不高,但却占有至关重要的地位。

它的作用很简单,就是为了维护一组单调数据,让我们在运行的过程中能够快速寻求前k个或后k个中最大或最小的值。

//http://blog.csdn.net/justmeh/article/details/5844650

包括单调队列的应用

//http://blog.csdn.net/justmeh/article/details/5844654

再结合课件

课件上给的例题很多,一下午光看例题了。

原创粉丝点击