时间安排
7.30
开题,哇这T1怎么这么熟悉,这不就很像前两天线段树上维护Kruskal吗,这难道要线段树上维护Tarjan?
那问题就在于怎么高效的维护了,n的范围很小,但我维护线段树肯定是在m上维护的
首先我有两个DAG,要将其合并,那么应该可以用个并查集维护一下连通性?先把点合并,再把边合并
例如两个DAG分别为A,B
A中的1号点,2号点在一个点集中,B中的1号点,3号点在一个点集中
那么合并后1,2,3就都在一个点集中了,这个应该是挺好维护的
然后再枚举每条边?在这个新的点集中重构一下边然后跑个Tarjan
话说我怎么感觉这复杂度还不如我每次跑个Tarjan呢
哦也许不对,一个DAG中的边数最多是多少呢,这应该是是解题的关键
手玩一下试试!貌似是n(n-1)/2个,那么150个点就有11175条边,q次询问每次找logm个区间合并
复杂度为nnq*logm=1e10,拉闸
如果我硬暴力的话,复杂度应该是qm的,和上述所说一个分,自闭
感觉这是我线段树能写出来的最优复杂度了,先过题吧
7.52
开T2,找规律?先放着吧,看看T3可不可写,再选择回来搞T2
7.54
开T3,不想写,回T2了
7.56
60分暴力的吗,有点舒服的呀,搞一下吧
问题来了,我该怎么看每种方案的最长简单路径经过几个点呢,写个dfs?
8.07
最起码拿了50分吧,开始找规律
设f[i][j]表示i个点图经过j个点的方案数
f[i][1]=2^{(i-2)(i-1)/2}
f[i][2]=f[i-1][1](i-1)
f[i][2]=2^{(i-2)(i-3)/2}(i-1)
f[i][3]=f[i-1][2]2(i-1)
f[i][3]=2^{(i-3)(i-4)/2}(i-1)*(i-2)
后几项找不出什么类似上面的规律了,但是对其质因数分解,我发现总有一些奇怪的项
当j=4时,对于每个i的方案数中都包含因子38
当j=5时,对于每个i的方案数中都包含因子728
当j=6时,对于每个i的方案数中都包含因子26704
当j=7时,对于每个i的方案数中都包含因子1866256
8.55
n=8的表打出来了,60分到手,再搏一下规律吧
首先在表打出来之前,我按照规律算了前三项,全都是正确的,重点就是研究后面几项了
9.13-9.25
弃掉T2
回T1,还是想不出来该怎么写线段树
9.50
还是没思路,但我突然觉得它是一道我写不出来的莫二离,我感觉线段树搞不出来了(况且它同一场模拟赛怎么会出两道一样的题)
9.52-10.10
开始收烂摊子,把T1T2暴力打一下
10.26
写了T3的n^3 20pts暴力
之后
全程自闭,哪都磕不出来分,感觉第三题后面还能继续写但也搞不出来
期望得分110
实际得分90
T3的暴力挂掉了,还没看原因