摘要: D1T1:把方向和朝向异或一下,在mod n意义下+1s或-1s。 D1T2:设i的深度为d[i],点i的答案是满足s[j]在其子树中,d[s[j]]==d[i]+w[i],且lca[j]在其子树外或等于i的j的个数,加上t[j]在其子树中,d[lca[j]]*2-d[s[j]]==d[i]-w[i 阅读全文
posted @ 2016-11-25 00:44 f321dd 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 只是游记而已。流水账。 Day0:忘了。 Day1:看完T1,本以为T2一如既往很简单,结果看了半天完全没有思路。然后看了一眼T3,期望,NOIP什么时候要考期望了,于是接着看T2。一开始我推的限制条件是子树中d[s[i]]等于一个数,且t[i]在一个区间内的点数,感觉是三维的,完全没有想到可以差分 阅读全文
posted @ 2016-11-24 23:51 f321dd 阅读(398) 评论(0) 推荐(0) 编辑
摘要: 设$A^TC=B^T$,这样$C_{ij}$表示$B_j$的线性表出需要$A_i$,那么$B_j$可以替换$A_i$,根据$C=(A^T)^{-1}B^T$求出$C$。要求字典序最小完美匹配,先求任意完美匹配,然后从小到大尽可能把匹配改小,用类似匈牙利的方法找“增广路”。注意倒着跑是不行的,因为小的 阅读全文
posted @ 2016-11-15 23:12 f321dd 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 设$i$的前驱为$p_i$,后继为$q_i$,把询问看成点$(L,R)$,有贡献的$i$满足$L\in(p_i,i]$且$R\in[i,q_i)$,询问的就是覆盖这个点的矩形的最大值。那么可以用可持久化树套堆,插入矩形时一维可持久化,一维区间插入,用堆维护最大值。注意这里的“可持久化堆”只需要查询历 阅读全文
posted @ 2016-10-25 01:23 f321dd 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 容易推出能用nand和括号做出所有逻辑运算。那么可以尝试乱搞,利用线性基做任意次异或,再加上几次别的运算,就很有可能能得到所有本来能得到的数了。 阅读全文
posted @ 2016-10-19 20:01 f321dd 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 喜闻乐见的简单树套树= =第一维按权值建树状数组,第二维按下标建动态开点线段树,修改相当于第二维区间加,查询在树状数组上二分,比一般的线段树还短= =可惜并不能跑过整体二分= =另外bzoj上的数据有负数= =其他树套树方法也是可以的爱怎么套怎么套= = 阅读全文
posted @ 2016-10-13 01:41 f321dd 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 求k时刻一个标号转移到各位置的概率,最后枚举每个标号加权求期望。可以发现转移矩阵是循环矩阵,因此乘法是O(n^2)的。 另外用long double会WA,说明标程精度挂了,所以必须挂得和标程一样才能过。 另外这个乘法是圆周卷积的形式,如果取模的话就可以FFT了。 阅读全文
posted @ 2016-09-20 20:35 f321dd 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 搞出dfs序,转化为查询矩形点数,树套树搞定。 阅读全文
posted @ 2016-09-12 13:36 f321dd 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 容易推出答案为$\,2\sum_{i=1}^{n-1}3^{n-i-1}\prod_{j=1}^{i}a_{j}+\prod_{j=1}^{n}a_{j}\,$。然后线段树维护区间乘积和答案。我没多想直接用的区间乘区间和,有0会挂,而且模数必须是质数,然而做这题还是可以的。 阅读全文
posted @ 2016-09-05 17:17 f321dd 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 考场上没秒的话多拿5分并不划算的样子。 思想其实很简单嘛。 要统计答案,求以每个位置开始和结束的AA串数量就好了。那么枚举AA中A的长度L,每L个字符设一个关键点,这样AA一定经过相邻的两个关键点。计算出相邻关键点的最长公共前后缀,把对应的位置区间加一下。 求lcp和lcs可以用后缀数组,也可以用h 阅读全文
posted @ 2016-08-29 00:50 f321dd 阅读(713) 评论(0) 推荐(0) 编辑