Link
Solution
嗯。我经过一个来小时的思考,搞出来一种状态表示:在线段树的每个节点记录一个2x2的矩阵,表示a[0][1]表示左端两点不联通,右端两点联通,a[1][1]表示左端两点联通,右端两点联通,etc。画了几个图,感觉比较资磁,开始写。写了一会儿发现被一些细节边界什么的卡住了,觉得自己方法可能错了。 一看果然和标解不同。标解特别特别复杂,网上的题解也都很麻烦。于是%faebdc的AC程序(在考场上写出的程序中他的是最快的,比std快三倍orz。。)。看懂之后发现姜志豪大爷的做法跟我的想法是一样的!! 然后发现,我是因为想用一些简单的办法算出后继状态而被自己克死的(见注释)。。。 改成正常的推法,枚举一下,就A了。。
Tips
开始写之前尽量把边界情况想出来 不要怕麻烦 用最直观的方法先实现出来,再考虑合并代码
Code
1 | //Code by Lucida |