首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
loj2065 「SDOI2016」模式字符串
】的更多相关文章
loj2065 「SDOI2016」模式字符串
ref不是太懂 #include <iostream> #include <cstring> #include <cstdio> using namespace std; typedef unsigned long long ull; int T, n, m, hea[1000005], cnt, uu, vv, rnd[1000005], rot, siz[1000005]; int tot, sf[1000005], sg[1000005], ff[1000005]…
题解 loj2065 「SDOI2016」模式字符串
点分治. 考虑经过当前分治中心\(u\)的点对数量. 这种数点对数的问题,有一个套路.我们可以依次考虑\(u\)的每个儿子,看用当前的儿子,能和之前已经考虑过的所有儿子,组成多少点对.这样所有合法的点对都会被恰好计算一次. 现在搜索\(u\)的一个儿子\(v\)的子树.对子树里的每个点,考虑它到\(u\)的有向路径形成的串.在搜索的过程中,我们每次要在当前串的"开头"处添加一个字符(即把整个串整体右移一位),没有什么好的数据结构可以维护,于是想到哈希.现在我们要判断,当前的串,是否是&…
【LOJ】#2065. 「SDOI2016」模式字符串
题解 按秩合并怎么清数组对我来说真是世纪性难题 我们很熟练地想到点分,如果我们认为某个点到重心是正着读的,由于它的深度固定,它的串也是固定的,我们只要预处理出所有长度正着重复的串,反着重复的串,和它们的哈希值,遍历树的时候只需要记录一下路径字符串的哈希值,比对一下看是否合法就行 为了快一点可以按深度合并每棵子树 代码 #include <bits/stdc++.h> #define enter putchar('\n') #define space putchar(' ') #define p…
liberOJ #2033. 「SDOI2016」生成魔咒 后缀数组
#2033. 「SDOI2016」生成魔咒 题目描述 魔咒串由许多魔咒字符组成,魔咒字符可以用数字表示.例如可以将魔咒字符 1 11.2 22 拼凑起来形成一个魔咒串 [1,2] [1, 2][1,2]. 一个魔咒串 S SS 的非空子串被称为魔咒串 S SS 的生成魔咒. 例如 S=[1,2,1] S = [1, 2, 1]S=[1,2,1] 时,它的生成魔咒有 [1] [1][1].[2] [2][2].[1,2] [1, 2][1,2].[2,1] [2, 1][2,1].[1,2…
「SDOI2016」储能表(数位dp)
「SDOI2016」储能表(数位dp) 神仙数位 \(dp\) 系列 可能我做题做得少 \(QAQ\) \(f[i][0/1][0/1][0/1]\) 表示第 \(i\) 位 \(n\) 是否到达上界 \(m\) 是否到达上界 \(k\) 是否到达下界.我用一个 \(pair\) 存,\(first\) 记录方案数,\(second\) 记录所有的和. \(ans=(P.S-k*P.F)\%mod\) 那么我们每次枚举该位为 \(0/1\) 就可以转移了,逐位计算贡献. \(Code\ Belo…
[LOJ 2070] 「SDOI2016」平凡的骰子
[LOJ 2070] 「SDOI2016」平凡的骰子 [题目链接] 链接 [题解] 原题求的是球面面积 可以理解为首先求多面体重心,然后算球面多边形的面积 求重心需要将多面体进行四面体剖分,从而计算出每一个四面体的重心和体积,加权平均即为整个多面体的重心 四面体体积可以用一个点引出的三条向量的积乘 \(\frac 1 6\) 四面体重心坐标是四个顶点坐标平均数 根据题目提示,球面多边形面积为三个二面角之和减去 \(\pi\),那么我们需要求二面角 先求出法向量,然后点积求向量二面角 [代码] /…
「SDOI2016」数字配对
「SDOI2016」数字配对 题目大意 传送门 题解 \(a_i\) 是 \(a_j\) 的倍数,且 \(\frac{a_i}{a_j}\) 是一个质数,则将 \(a_i,a_j\) 质因数分解后,其质因子的次数和相差为 \(1\). 由此我们可以想到根据质因子次数和的奇偶性对 \(a_i\) 进行分组,不难发现会被分成两组.这让我们联想到了二分图. 我们考虑采用费用流求解. 首先我们可以将源点 \(s\) 向其中一组点连容量为 \(b_i\),费用为 \(0\) 的边,然后从另外一组点的每个点…
「SDOI2016」征途 题解
「SDOI2016」征途 先浅浅复制一个方差 显然dp,可以搞一个 \(dp[i][j]\)为前i段路程j天到达的最小方差 开始暴力转移 \(dp[i][j]=min(dp[k][j-1]+?)(j-1\leq k\leq i-1)\)这咋写?还是需要转换一下 开始了,but题目的方差还需要m^2,很好 以下x为m天行走的平均值,s[i]为1~i段路的总路程 那么x可以算对吧:\(x=\frac{s[n]}{m}\) \[m\times \sum^m_{i=1}(x_i-x)^2\\ =m\ti…
loj2424 「NOIP2015」子串[字符串DP]
给定字符串 A,B,要求从 A 中取出互不重叠的 k 个非空子串,按照出现顺序拼起来后等于 B.求方案数.n ≤ 1000,m ≤ 200. 主要是状态的转移.先设计出$f_{i,j,k}$表长度$B_j$分了$k$段很好想,但是发现并不容易转移. 主要瓶颈在于当枚举了状态$f_{i,j,k}$ 的时候加入可以匹配($A_i=B_j$),怎么从前面$A_1\sim A_{i-1}$里找出$k-1$块的$j-1$的方案数.(注意下面几行都是基于当前$A_i=B_j$这个条件的) 发现这个是可以叠加…
【LOJ】#2070. 「SDOI2016」平凡的骰子
题解 用了一堆迷之复杂的结论结果迷之好写的计算几何???? 好吧,要写立体几何了 如果有名词不懂自己搜吧 首先我们求重心,我们可以求带权重心,也就是x坐标的话是所有分割的小四面体的x坐标 * 四面体体积的和除以骰子的体积,y,z坐标同理 然后我们把这个骰子四面体剖分,剖分的话就是随便选在骰子内的一个点,对于骰子的每个面找相邻的三个点和这个点作为顶点组成的四面体 四面体的重心是四个点三维坐标和除以4 四面体的体积是三维混合积的绝对值除以6 然后对于每个面,我们把它剖分成三角形,发现它们二面角的和就…