首页 > TAG信息列表 > SDOI2016

牛客 搜索题单 1009 [SDOI2016]齿轮

Description现有一个传动系统,包含了N个组合齿轮和M个链条。每一个链条连接了两个组合齿轮u和v,并提供了一个传动比x : y。即如果只考虑这两个组合齿轮,编号为u的齿轮转动x圈,编号为v的齿轮会转动y圈。传动比为正表示若编号为u的齿轮顺时针转动,则编号为v的齿轮也顺时针转动。传动比为

[SDOI2016]游戏

description 一个长为\(n\)的数列,每个初始为123456789123456789。 操作: 0 s t a b:s到t的链上每个点x跟dist(s,x)*a+b取min。 1 s t:求s到t的链上的min。 solution 李超+树链剖分 关键是想好树链剖分的李超线段树下标维护的是什么(x的范围)。 显然一条链dfn从小到大,dis也是从小到

P4067 [SDOI2016]储能表 题解

题意 给定\(n\)、\(m\)、\(k\)、\(p\),在模 \(p\) 意义下计算 \[\sum_{i=0}^{n-1} \sum_{j=0}^{m-1} \mathrm{max} ((i \mathrm{xor} j)-k,0) \]\(T\) 组测试 \(T = 5000\),\(n \leq 10 ^ {18}\),\(m \leq 10 ^ {18}\),\(k \leq 10 ^ {18}\),\(p \leq 10 ^ 9\)

「SDOI2016」排列计数 - (错排公式)

选定 m m m个元素“稳定”,剩余部分错排(即全都不在原本位置) 错排公式 D n

[BZOJ4518][Sdoi2016]征途

写于2019.6.30 可能斜率优化太弱. 4518: [Sdoi2016]征途 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 2510 Solved: 1405 [Submit][Status][Discuss] Description Pine开始了从S地到T地的征途。 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站。 Pine计划用m天

P4070 [SDOI2016]生成魔咒 - SAM

这是一道板子题,考的是一个状态中不同子串数量为len[i] - len[fa[i]],即集合中最长的后缀减去最短的后缀。 不过这题我遇到的问题在于字符集过于庞大,最后是通过用map去代替ch数组解决。 // // Created by acer on 2021/2/16. // //判断子串,不同子串个数,所有子串字典序第i大,最长

[ SDOI2016 ] 数字配对

题目 Luogu LOJ Acwing 思路 代码 #include <iostream> #include <cstring> #include <algorithm> using namespace std; #define int long long const int N = 410, M = 200010, INF = 1e18; int n, m, S, T, A[N], B[N], C[N]; int h[N], val[M], ptr[M], f[M]

P4068 [SDOI2016]数字配对

【题意】    【分析】 我们发现直接n^2次判断就已经超时 所以我们需要考虑优化 如果a是b的倍数,且a的质因数分解的次方和比b多1,那么就可以建边 显然这里就可以建立二分图了   建好图以后,题目要求费用大于0的情况下的最大流 那么我们就贪心的增广,如果当前增广路的费用大于0,那就

[SDOI2016] 生成魔咒

题目链接 后缀树组解法~ Desprition 每次在字符串末尾添加一个字符,求新字符串的不同子串的个数。 Solution 如果没做过P2408的可以先去康康那道题。 这套题其实就是 \(P2408\) 的加强版,多了一个加操作。 思路转化 因为是用后缀数组做,如果我们每次在末尾添加一个字符,就相当于在改变

P4069 [SDOI2016]游戏 树剖+李超树

题意: 戳这里 分析: 首先树上路径操作,要用树剖 其次,操作等价于区间加一条线段,然后查询区间最小值 但是与普通李超树不同,这次 \(x\) 值并不连续,每次插入的线段下标是和给定起点的距离,那么我们更改一下维护的信息,线段树上 \(a\) 点的 $x $ 值是它离根的距离,然后我们将操作转化,每次插入

题解 LuoguP4071 【[SDOI2016]排列计数】

对于任何一个卡读入的题,我都只能说醉了…… 这是一篇通俗的题解,没有多大的技术含量,适合初学者使用 自然也就不用懂什么错不错排啦(我就没听说过) 这道题的题意非常简单,就是说给出n长度的序列,有m个数的大小等于自己的下标,叫我们求合法的方案数。 在没有真正接触容斥原理之前,我对于这

[SDOI2016]储能表

一、题目 点此看题 二、解法 不要把这道题从图形的角度考虑,我们考虑它的本质就是求: ∑i=0n−1∑j=0m−1max⁡((i xor j)−k,0)\sum_{i=0}^{n-1}\sum_{j=0}^{m-1}\max((i\space xor\space j)-k,0)i=0∑n−1​j=0∑m−1​max((i xor j)−k,0)可以考虑数位dpdpdp,只不过特殊

BZOJ 4602: [Sdoi2016]齿轮

超级SB题,写题解纯粹是为了水博客,刚开始WA了一发因为又被题意杀了,我以为不连通就不能同时转(脑洞清奇) 首先我们容易想到先给原图同一颗生成树出来(不连通的话就是森林),然后假定某个点转\(1\)圈,顺带求出其它每个点转的圈数 然后再枚举非生成树边,判断是否可行即可,注意精度要用EPS判断 PS

P4075 [SDOI2016]模式字符串

总结 P4075 [SDOI2016]模式字符串 题目描述 给出n个结点的树结构T,其中每一个结点上有一个字符,这里我们所说的字符只考虑大写字母A到Z,再给出长度为m的模式串s,其中每一位仍然是A到z的大写字母。 Alice希望知道,有多少对结点<u,v>满足T上从u到V的最短路径形成的字符串可以由模式串S重复

Luogu P4070 [SDOI2016]生成魔咒

题意:求本质不同的子串数。 \(SA\) \(SAM+DP\) 答案即为路径条数。 我们设 \(f[u]\) 表示从 \(u\) 出发的路径条数:\(f[u]=1+\sum_{(u,v,ch)} f[v]\) ,其中 \(1\) 代表空串。 最后答案即为 \(f[0]-1\) \(SAM+parent树\) 每个子串只会出现一次,并且每个点的 \(sz\) 即为 \(maxlen[u]-mi

luoguP4068 [SDOI2016]数字配对

题意 看见配对数最多,想到这是最大流。看到代价,想到这是最大费用流。 于是这题是最大费用最大流。 做完了,撒花! 我们发现这题没有明显的组别之分,也就是说我们并不知道建图时谁连源点谁连汇点。 再次观察题中给出的配对的条件:\(a_i\)是\(a_j\)的倍数且满足\(\frac{a_i}{a_j}\in prime

P4069 [SDOI2016]游戏

题意 显然书剖套李超树。 考虑怎么算函数值: 设\((x,y)\)的\(lca\)为\(z\),我们插一条斜率为\(k\),截距为\(b\)的线段。 \((x,z)\)上的点\(u\): \(f(u)=k*(dis[x]-dis[u])+b=-k*dis[u]+(k*dis[x]+b)\) 所以对这条路径插入斜率为\(-k\),截距为\(k*dis[x]+b\)的线段 \((y,z)\)上的点\(u\)

[SDOI2016] 生成魔咒 - 后缀数组,平衡树,STL,时间倒流

[SDOI2016] 生成魔咒 Description 初态串为空,每次在末尾追加一个字符,动态维护本质不同的子串数。 Solution 考虑时间倒流,并将串反转,则变为每次从开头删掉一个字符,即每次从后缀集合中删掉一个后缀。 预处理出后缀数组和高度数组后,用平衡树维护所有后缀集合(按照后缀排序),要删除一个后

BZOJ 4517 [SDOI2016] 排列计数(组合 错排)

题目 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的。序列恰好有 m 个数是稳定的 满足条件的序列可能很多,序列数对 10^9+7 取模。 题解 n个选m个,剩下的错排。直接预处理组合数和错排就行了。 CO

luogu P4076 [SDOI2016]墙上的句子

luogu loj 题意看了我半天(逃 (应该是我语文太差了) 题意是要确定每一行和每一列的看单词的顺序,使得同时正着出现和反着出现在里面的单词数量最少,每行和每列的性质是这一行所有单词反过来的单词要么字典序大于等于原来的,要么小于等于原来的 首先回文单词一定会出现,可以直接加入

[SDOI2016]数字配对

[SDOI2016]数字配对 [题目链接] 链接 [思路要点] 神仙构图(一点也不神仙) 毫无疑问是一道网络流题 很明显的费用流结构,每种数字单独建一个点,两个点代表的数字能够配对那么连一条边,边权就是 \(c_ic_j\) 但是问题在于从源点和汇点出发的边不知道怎么连 但是如果将目前连的图画出来,你会

【洛谷 P4070】 [SDOI2016]生成魔咒(后缀自动机)

题目链接 建出\(SAM\)后,不同子串个数就是\(\sum len(i)-len(fa(i))\) 因为\(SAM\)在线的,所以每加入一个字符就能直接加上其贡献,于是这道题就没了。 因为\(x\)有点大,所以把\(ch\)改成\(map\)就行。 #include <cstdio> #include <cstring> #include <algorithm> #include <map> using

[SDOI2016]排列计数

[SDOI2016]排列计数 有一个长度为n的1~n的全排列,如果一个数i出现在第i个位置上,则称该数是稳定的,询问恰好有m个数是稳定的全排列的方案数,\(n≤1000000,m≤1000000\)。 解 显然为组合计数题,于是我们来相办法划分问题,如果事先选出m个数让其稳定,不难得知剩下的问题就是一个错排问题,而对

洛谷P4069 [SDOI2016]游戏(李超线段树)

题面 传送门 题解 如果我们把路径拆成两段,那么这个路径加可以看成是一个一次函数 具体来说,设\(dis_u\)表示节点\(u\)到根节点的距离,那么\((x,lca)\)这条路径上每个节点的权值就会加上\(-dis_ua+dis_xa+b\),而\((lca,y)\)这条路径上每个节点就会加上\(dis_ua+a(dis_x+2\times dis_{lc

【LG4070】[SDOI2016]生成魔咒

【LG4070】[SDOI2016]生成魔咒 题面 洛谷 题解 如果我们不用在线输的话,那么答案就是对于所有状态\(i\) \[ \sum (i.len-i.fa.len) \] 现在我们需要在线询问,那么因为\(SAM\)是在线算法,我们考虑每次的对答案的贡献。 那么产生的贡献就是\(last.len-last.fa.len\)。 与\(yyb\)的对话: Q