摘要:
题解 我们发现每次决策的时候,我们可以判断某个点的决策,至少小于等于几个点或者至少大于等于几个点 我们求最大值 dp[u][1 / 0] dp[u][1]表示u这个点先手,至少大于等于几个点 dp[u][0]表示u这个点后手走,至少大于等于几个点 转移的时候从dp[u][1]取所有点dp[v][0] 阅读全文
摘要:
题解 我们对于B串建出后缀自动机和序列自动机 对于问题1,枚举左端点然后跑后缀自动机,直到不能匹配作为这个左端点的答案 对于问题2,枚举左端点然后跑序列自动机,直到不能匹配 对于问题3,设f[i][j]表示第前i个字符匹配到后缀自动机上第j个点的最少步数,如果下一步走不了则更新答案 对于问题4,设f 阅读全文
摘要:
题解 虽然我知道minmax容斥,但是……神仙能想到把这个dp转化成一个一次函数啊= = 我们相当于求给定的$S$集合里最后一个被访问到的点的时间,对于这样的max的问题,我们可以用容斥把它转化成min问题 也就是 $max{S} = \sum_{T \subset S} ( 1)^{|T| + 1 阅读全文
摘要:
题解 用$f[i][j]$表示考虑了前i个排名有j个人被碾压 $f[i][j] = f[i 1][k] \ C[k][j] \ C[N k 1][N r[i] j] \ P[i]$ P[i]是成绩排列的方式,意义是在前面k个人里选了j个来碾压,并将人数空缺用上一次没有碾压的来填补 $P[i]$怎么求 阅读全文
摘要:
题解 有什么LNOI啊,最后都是JLOI罢了 一道非常……懵逼的统计题 当然是容斥,所有的方案 至少有一个点坏掉的正方形 + 至少有两个点坏掉的正方形 至少有三个点坏掉的正方形 + 至少有四个点坏掉的正方形 总共的方案就是 $\sum_{i}^{min(n,m)}i \ (n i + 1) \ (m 阅读全文
摘要:
题解 童年的回忆! 想当初,这是我考的第一次省选,我当时初二,我什么都不会,然后看着这个东西,是不是能用我一个月前才会的求lca,光这个lca我就调了一个多小时= =,然后整场五个小时,我觉得其他题不可做,一直杠这题的20分,然后。。。day1爆零了,之后day2手玩提答好像骗了一点,总归是没爆零 阅读全文
摘要:
题解 我们发现只有从第一个往后数,用乘号联通的块是有贡献的 为什么,因为后面所有表达式 肯定会有 + ,还会有个 ,贡献全都被抵消了 所以我们处理出前缀乘积,然后乘上表达式的方案数 答案就是$\sum_{i = 1}^{n 1} S[i] 2 3^{n 1 i} + S[n]$ 设新值为v,旧值为u 阅读全文
摘要:
题解 我会五维数点辣 只要用个bitset乱搞就好了 记录一下rk[i][j]表示第j科排名为i的是谁 用30000 5个大小为30000的bitset s[i][j]是一个bitset表示第j科,排名为1 i的人是多少 最后只要对于每个人,把每一维小于它的集合and起来,然后用count()函数输 阅读全文
摘要:
题解 我一开始写的最小表示法写的插头dp,愉快地TLE成60分 然后我觉得我就去看正解了! 发现是容斥 + 矩阵树定理 矩阵树定理对于有重边的图只要邻接矩阵的边数设置a[u][v]表示u,v之间有几条边就好 我们枚举哪些公司不用,然后用矩阵树求一下生成几棵树,复杂度$2^{n 1}(n 1)^3$ 阅读全文
摘要:
题解 这个字符集很小,我们可以把每个字符拿出来做一次匹配,把第一个字符串处理每个出现过的该字符处理成一个区间加,即最后变成第一个字符串的该位置能够匹配某字符 例如对于样例 10 4 1 AGCAATTCAT ACAT 我们做A的时候,把第一个串处理成 AAAAAA00AA0 第二个串 A0A0 那么 阅读全文