摘要:
tag:组合计数,线段树 第一反应是枚举俩位置计算贡献,然后推推式子优化。 首先先考虑一共有多少种合法的排列,把 \(a_i\) 排序后(设为 \(\{b\}\)) \[ ans=\prod_{i=1}^nb_i-i+1 \] 枚举两个位置 \(i,\ j(i<j)\),第一反应是令 \(a_i,a 阅读全文
摘要:
tag:组合计数 果然连计数也不会了呢。。 题意转化为每次往序列里插入一个数,且只能放在小于这个数的数前面,或者结尾。 比如 \([3,3,2,3,2]\),插入一个 \(3\),则只有 \(3\) 种方式。 然而还是不太好计数。。 考虑继续转化,把操作序列抽象成一个树,将 \(x\) 插入在 \( 阅读全文
摘要:
线上降智 好像线上考试总是降智,可能是家里状态不好吧。。 t1看着就像一个大毒瘤,t2感觉很可做,但是一股神秘的力量驱使我去肝t3,导致最后只有半个小时想t2,而且t3推了半天也只有12。。 总之这几天状态都不太好,就当时给noi攒rp了,好好调整一下。。 阅读全文
摘要:
设 \(p\) 原根为 \(g\),则 \(g^{\phi(p)}\equiv1(mod\ p)\),且 \(\forall 0<i<\phi(p),\ g^i\not\equiv0(mod\ p)\)。 \(n\) 有原根,当且仅当 \(n=2,\ 4,\ p^k,\ 2p^k\),\(p\) 为 阅读全文
摘要:
给定一个字符串,求出以每个位置为中心的最长回文子串。 流程 设 \(mxr\) 为当前所有回文串的最大的右边界,\(mid\) 为对应的中点 为了防止中点在两个位置中间,将原串的每两个字符间和开头结尾都塞一个相同的无关字符 若 \(i\leq mxr\),令 \(f_i=\min(f_{2mid-i 阅读全文
摘要:
对于一个有向无环图,边权均属于某交换群,一条路径的权值为边权的乘积,一个路径集合的权值为所有路径权值的乘积。设点集 \(S=\{a_1\cdots a_n\},\ T=\{b_1\cdots b_n\}\)。 求出所有路径集合 \(P={p_1\cdots p_n}\) 的权值和,使得 \(p_i: 阅读全文
摘要:
tag:序列自动机,状压dp 一眼看上去感觉不太好做,实际上可以枚举所有串,然后问题就变为统计一个串是多少个串的子序列。 可以构建一个子序列自动机,然后将初始状态(给出的字符串)设为 \(1\),再跑一个dp即可。 状态定义如下: \(f[len][S]\) 用一个01串表示状态 开头一个1,用来表 阅读全文
摘要:
tag:线段树,贪心 根据贪心不难想到,每个物品都从大到小排序,然后一个区间的答案就是3个值的区间max乘起来。 所以要求的就是 \[ \sum_{l\le r}max_a[l,r]\cdot max_b[l,r]\cdot max_c[l,r] \] 一个常见的套路,枚举右端点,线段树维护答案,用 阅读全文
摘要:
tag:可持久化线段树,扫描线,哈希 对于 \(40%\) 的暴力,不难想到直接暴力求出所有的列表,然后nth_element 考虑拓展这个做法,实际上如果用扫瞄线求出所有列表的话,变动只有 \(O(n)\) 次,于是想到可持久化数组。注意要去重,所以再加个哈希。 求答案的时候还是使用nth_ele 阅读全文
摘要:
6.1还在考试的屑 tag:SAM,PAM 最终的回文串一定由这样的形式组成: \(s1+s2+s3\) 其中 \(s1\) 为 \(a\) 串子串,\(s3\) 为 \(b\) 串子串,且 \(s1=rev(s3)\)。 \(s2\) 为一个回文串(可以是 \(a\) 的子串也可以是 \(b\) 阅读全文