9.21联考总结

来源:互联网 发布:idman是什么软件 编辑:程序博客网 时间:2024/04/30 20:02

最近脑洞也是大的可以,今天题目比较难,只写出了两道题,居然一个文件名打错一个忘了写文件流。

本来想想总该比昨天考得好吧,结果呵呵了~

算了,抱怨也没什么用,只是记录一下让自己以后不要再脑洞大开。

---------------------------------------------------------------------------------------------

第一题是二分图染色,每一条天使通信路径当做一个节点,如果两个路径出现相交那么就将两点连上无向边。

其实也不用真的连,只要出现相交dfs下去就可以了,显然只能出现黑白相间的情况,否则就会非法。

所以我们判断三种情况:

    (1)当前点没有染过色,那直接染就好了

    (2)当前点染过色,与目标颜色相同,那么说明这个点没有必要再dfs下去

    (3)当前点染过色,但与目标颜色不相同,那么出现非法情况,直接跳出

我原来的做法其实就是用bfs代替dfs,其实本质也差不多,但是忘写文件流也是没话说。


第二题是动归加矩阵快速幂优化,假设SJY在第j个时刻处于第i个城市,那么方案数显然是:

    f[i][j]:处于以上情况下的方案数  k为所有存在k->i单向边的点编号

    f[i][j]=sigma(f[k][j-1]*map[k][i])+f[i][j-1];

观察题目的数据,我们发现城市的标准数字很低,但是t却很高,达到10^8

然而依照现在的做法我们需要开出10^8的空间,显然不可能。

观察转移方程我们发现,我们不需要保存上一个之前的状态,那么只要滚动数组就可以解决空间问题。

但是时间问题如何解决?矩阵快速幂。

    (1)我们会发现只要把map[i][i]的位置设置为1(很重要,当时忘掉了)

    (2)矩阵的状态转移必须建立在没有转移限制的基础上,所以必须暴力动归直到消除所有限制

剩下的将近10^8的转移,交给快速幂就可以了。

这题只有50分,因为矩阵当时没调出来。

倒不是实现能力不够什么的,而是发现了邻接矩阵性质太兴奋了,然后map[i][i]=1都忘了。

    我还傻傻地在那里找自己矩乘哪里写错了。


第三题据说是全国赛难度,情何以堪啊。有空再把这题的题解补上。

0 0
原创粉丝点击