题目链接:https://www.luogu.org/problemnew/show/P3946 交好几遍是因为虽然能过一直有提醒..强迫症qwq #include <bits/stdc++.h> #define ll long long using namespace std; const int maxn = 5 * 1e6 + 10; ll n, m, s, t, g, q; ll dis[maxn], h[maxn], l[maxn]; bool vis[maxn]; struct e…
p1993 小康的农场 CSP_S 1=之后就没怎么写题解.. 推荐博客食用 预备知识 明显这是一道差分约束的题,以下简称差分 有些人可能不了解差分,请点 [传送门] 至于用差分做的题的特征,无一都是你可以列出每个变量之间的一些不等关系,就如下 \[ \begin{cases} x_1-x_2 \le a_1 \\ x_2-x_3 \le a_2 \\ x_3-x_4 \le a_3 \\ \ldots \ldots \\ x_n-x_n \le a_{n-1} \\ \end{cases} \…
题目传送门 日本的冬天经常下雪.不幸的是,今天也是这样,每秒钟雪的厚度会增加q毫米. 秋叶原共有n个地点,编号从1到n.每个地点在开始的时候的积雪高度为hi. 有m条双向道路连接这些地点,它们的长度分别为wi米. 雪太大,公共交通系统已经停摆了,所以ことり得走路回家.她走路的速度是1m/s. 为了方便地图的绘制,秋叶原的道路规划使得每条道路严格地连接两个不同的地点,并且不会有两条道路连接的地点相同. 每个地点都有一个极限雪高li,单位是毫米,如果到达这个地点的时候,这里的雪的高度高于li则会被困…
题面 Byteasar 想在墙上涂一段很长的字符,他为了做这件事从字符的前面一段中截取了一段作为模版. 然后将模版重复喷涂到相应的位置后就得到了他想要的字符序列.一个字符可以被喷涂很多次,但是一个位置不能喷涂不同的字符.做一个模版很费工夫,所以他想要模版的长度尽量小,求最小长度是多少.拿样例来说 ababbababbabababbabababbababbaba , 模版为前8个字符ababbaba, 喷涂的过程为: ababbababbabababbabababbababbaba 分析 仔细分析…
题目链接 Luogu P4643 题解 猫锟在WC2018讲的黑科技--动态DP,就是一个画风正常的DP问题再加上一个动态修改操作,就像这道题一样.(这道题也是PPT中的例题) 动态DP的一个套路是把DP转移方程写成矩阵乘法,然后用线段树(树上的话就是树剖)维护矩阵,这样就可以做到修改了. 注意这个"矩阵乘法"不一定是我们常见的那种乘法和加法组成的矩阵乘法.设\(A * B = C\),常见的那种矩阵乘法是这样的: \[C_{i, j} = \sum_{k = 1}^{n} A_{i,…
这里是总链接\(Link\). \(A\) 题意:求\(\sum_{i=1}^{k} a_i\times b^{k-i}\)的奇偶性, \(k = \Theta(n \log n)\) --其实很容易想麻烦,比如说逐个判断,整体判断啥的.但其实只要对结果都\(\bmod ~10\),然后判断奇偶性就好了. cin >> b >> k ; for (i = 1 ; i <= k ; ++ i) scanf("%d", &base[i]) ; reve…
[luogu]P1053 篝火晚会 题目描述 佳佳刚进高中,在军训的时候,由于佳佳吃苦耐劳,很快得到了教官的赏识,成为了“小教官”.在军训结束的那天晚上,佳佳被命令组织同学们进行篝火晚会.一共有n个同学,编号从1到n.一开始,同学们按照1,2,……,n的顺序坐成一圈,而实际上每个人都有两个最希望相邻的同学.如何下命令调整同学的次序,形成新的一个圈,使之符合同学们的意愿,成为摆在佳佳面前的一大难题. 佳佳可向同学们下达命令,每一个命令的形式如下: (b1, b2,... bm -1, bm) 这里…
题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了使题目简单,设目标状态为123804765),找到一种最少步骤的移动方法,实现从初始布局到目标布局的转变. 输入输出格式 输入格式: 输入初试状态,一行九个数字,空格用0表示 输出格式: 只有一行,该行只有一个数字,表示从初始状态到目标状态需要的最少移动次数(测试数据中无特殊无法到达目标状态数据)…
一道清真的数论题 LOJ #3058 Luogu P5293 题解 考虑$ n=1$的时候怎么做 设$ s$为转移的方案数 设答案多项式为$\sum\limits_{i=0}^L (sx)^i\binom{L}{i}=(sx+1)^L$ 答案相当于这个多项式模$ k$的各项系数的和 发现这和LJJ学二项式定理几乎一模一样 我上一题的题解 然而直接搞是$ k^2$的,无法直接通过本题 以下都用$ w$表示$ k$次单位根 设$ F_i$为次数模$ k$为$ i$的项的系数和 单位根反演一下得到$F…
https://www.luogu.org/problemnew/show/P2279 一开始就想到了贪心的方法,不过一直觉得不能证明. 贪心的考虑是在深度从深到浅遍历每个结点的过程中,对于每个没有覆盖的结点选择覆盖他的祖父结点. 仔细想想觉得这是正确的. 在实现的过程中有一个小技巧是o[i]记录i结点距离消防局最近的距离,如果o[i] > 2则需要在他的祖父结点建立一个消防站.用这种方法可以很方便的判断兄弟节点是否被覆盖. 一个细节是要给根节点1建立两个虚结点N + 1和N + 2作为他的父亲…
嘟嘟嘟 由于一些知道的人所知道的,不知道的人所不知道的原因,我来发NOIP2018day2T3的题解了. (好像我只是个搬运工--) 这题真可以叫做NOIplus了,跟其他几道比较水的题果然不一样,无论代码量还是思维难度都有一个更高的层次. 我是看了zhoutb的题解的.而且抄了他代码(还没抄对),所以这里直接推荐各位看luogu的题解吧. 关于这个倍增数组的预处理,实际上只用考虑为父亲结点的时候该怎么办(就是裸dp).而对于\(2 ^ i (i > 0)\)的倍增部分,只用枚举u和祖先的状态转…
题目链接 Luogu P3265 题解 非常正常的线性基! 但是我不会线性基-- (吐槽:#define double long double 才过--) #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <iostream> #define space putchar(' ') #define enter putchar('\n…
P2765 魔术球问题 贪心模拟就可以过.........好像和dinic没啥关系   找找规律发现可以贪心放.n又灰常小. 设答案=m 你可以$O(mn)$直接模拟过去 闲的慌得话可以像我用个$set$维护 复杂度可以降为$O(mlogn)$ 网络流.....不会写(逃   口胡一下dinic 一个点$u$拆成2个表示 1.放在柱子最下面,与S连接(u) 2.满足和下面的数的和为完全平方数,与T连接(u') 满足关系的两个点u.v,建立v-u' 当一个点被加入后,它就相当于放在最下面的点了.…
题目描述 经典区间众数题目 然而是权限题,所以题目链接放Luogu的 题解 因为太菜所以只会$O(n*\sqrt{n}+n*\sqrt{n}*log(n))$的做法 就是那种要用二分的,并不会clj那种不带log的做法 首先数的值域为1e9肯定要离散化一下 因为数最多有40000个所以开40000个vector,存一下每个数出现的位置 预处理出每个以块的端点为左右端点的区间的众数,这种区间一共有O(block^2)个,所以可以用O(n*block)的时间复杂度来预处理 可以发现的一点是,每个区间…
洛谷3197&bzoj1008 越狱 Luogu bzoj 题解 所有状态减合法状态.SBT 答案为\(m^n-m*(m-1)^{n-1}\)太SB不解释 注意取膜的问题.相减可能减出负数,而SB的C++又不给正数结果,所以要加上膜数再膜.被坑了一次. Code // It is made by XZZ #include<cstdio> #include<algorithm> #define Fname "BZOJ1008" using namespac…
题面 luogu CodeForces 题解 \(orz\) yyb 转移蜜罐其实是吓唬人的...... 转移的蜜罐都是尝试过的,所有只关心当前架子上的蜜罐数 设\(f[i][j]\)表示第i个货架有j个蜜罐没有被试吃的概率 然后枚举品尝了几个之前没有品尝过的,组合数转移一下 Code #include<bits/stdc++.h> #define LL long long #define RG register using namespace std; template<class T…
Manacher可以有效的在\(O(n)\)时间内解决一个字符串的回文子串的题目 目录 简介 讲解 推介 简单的练习 恐怖的练习QAQ 小结 简介 开头都说了,Manacher是目前解决回文子串的最有效的方法之一,可以在\(O(n)\)时间内处理出以这个点为中心的最大回文子串长度. 讲解 例题 1. 将偶数的回文子串处理成奇数回文子串 在暴力处理回文子串的过程中,我们会把偶数与奇数的分成两个判断 相信大家一定会有这个疑问,那么,我们在开头.结尾与两两字符中间插入一个没有出现过的字符,如:'#',…
题目描述: luogu loj 题解: 序列自动机(?)+高精+普及dp. 这个是猫老师的序列自动机(字符串从1开始): ]) { memset(t[n],-,sizeof(t[n])); ;i>=;i--) { memcpy(t[i],t[i+],sizeof(t[i])); t[i][ci(s[i+])] = i+; } } 序列自动机 $t$数组记录在位置$i$的后面加字符$j$能到达的最左边的位置. 对于这道题,直接对两个串构造序列自动机,然后爆搜即可. $k=1$没啥好说的,$k=0$…
题目描述 PDF 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例#1: 复制 abcd aaaa ababab . 输出样例#1: 复制 1 4 3 题解 Luogu的题解 这里是对目前最高赞题解结论的证明. 结论:设字符串长度为$n$,最长相同前后缀的长度为$next[i]$, 如$n$%$(n-next[n])=0$,则答案为$n/(n-next[n])$,否则为$1$. 证明: 我们求$next$数组的时候,相当于每次把当前串这样对齐了一下↓ 而$next$求到$n$时,上面…
1099 字串变换 2002年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold   题目描述 Description 已知有两个字串 $A$, $B$ 及一组字串变换的规则(至多6个规则): $A1$ -> $B1$ $A2$ -> $B2$ 规则的含义为:在$ A$中的子串 $A1$ 可以变换为 $B1$.$A2$ 可以变换为 $B2$ …. 例如:$A='abcd' B='xyz'$ 变换规则为: $‘abc’->‘xu’ ‘u…
题目描述: bzoj3545,luogu bzoj3551 题解: 重构树+线段树合并. 可以算是板子了吧. 代码(非强制在线): #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; *N; template<typename T> inline void read(T&x) { T f = ,c = ;char ch=getchar(); ;ch…
鲜有的在luogu发题解以及使用LaTex??? 就丢链接跑了.…
什么是并查集? 合并!查询!集合! 专业点说? 动态维护若干不重叠的和,支持合并查询的数据结构!(lyd老师说的) 数据结构特点:代表元.即为每个集合选择一个固定的元素,作为整个集合的代表,利用树形结构存储,每个节点都是一个元素,树根是集合的代表元素.(还是lyd老师说的) 两大基本操作 一.合并(merge()) 即把两个集合合并到一个的操作.通俗的说,即令其中一个树根为另一个树根的子节点. void merge(int x,int y) { fa[getf(x)]=getf(y); } 二.…
结论:一个图的生成树个数等于它的度数矩阵减邻接矩阵得到的矩阵(基尔霍夫矩阵)的任意一个n-1阶主子式的行列式的绝对值 证明:不会 求法:高斯消元 例题:[HEOI2013]小Z的房间 #include <iostream> #include <cstdio> #include <cstring> #define int long long using namespace std; const int dx[]={0,1,0,-1},dy[]={1,0,-1,0},mod…
Bill的挑战 题目链接:https://www.luogu.org/problem/P2167 数据范围:略. 题解: 因为$k$特别小,想到状压. 状压的方式也非常简单,就是暴力枚举. 但是会不会存在重复的问题呢? 我想到这里就转到容斥了. 就是暴力多步容斥就好了. $Luogu$的题解们的状压还有一步,算了算了不管了.…
第一次是用 ODT 过的...(虽说跑得飞慢但它就是能过) 而且还写了发题解... 第二次是在考场上碰到了这道题,然后居然打了线段树,各种 bug 直接让代码爆零 但还是补好了代码重新交了一发,发现跑得还可以... 于是题解也再来一发,不过鉴于 luogu 审题解有点麻烦于是就 cnblogs 上写好了... ODT 联动 请点赞谢谢...QWQ 关于线段树咱其实就是把原来的环破成链,然后维护这个序列,对于旋转和翻转操作打标记,然后其余四种操作都是线段树上询问和维护就能解决了 然后注意维护的方式…
NOI Day1T1归程(Kruskal重构树+Dijkstra) 题目 洛谷题目传送门 题解 其实我不想写......,所以...... 挖个坑......我以后一定会补的 luogu的题解讲的还是很详细的...... 恩,感谢cwen详细教我做这道题,让我2遍A 然后我丑陋的代码(代码太长,所以压得很丑) #include<iostream> #include<cstdlib> #include<cstdio> #include<cmath> #incl…
[WC2018]州区划分(FWT,FST) Luogu loj 题解时间 经典FST. 在此之前似乎用到FST的题并不多? 首先预处理一个子集是不是欧拉回路很简单,判断是否连通且度数均为偶数即可. 考虑朴素状压dp很容易得到 $ f_{ S } = \sum\limits_{ T \subseteq S } f_{ S - T } \times ( \frac{ val_{ T } }{ val_{ S } } )^{p} $ . 直接dp时间复杂度 $ 3^{ N } $ 当场去世. 但由于是…
引入 什么是 \(\text{FFT}\) ? 反正我看到 \(\text{wiki}\) 上是一堆奇怪的东西. 快速傅里叶变换(英语:Fast Fourier Transform, FFT),是快速计算序列的离散傅里叶变换(DFT)或其逆变换的方法.傅里叶分析将信号从原始域(通常是时间或空间)转换到频域的表示或者逆过来转换.FFT会通过把DFT矩阵分解为稀疏(大多为零)因子之积来快速计算此类变换.-- \(\text{wikipedia}\) 反正我没脑子我看不懂. 对我来说,\(\text{…
原题传送门 这题和Luogu P1972 [SDOI2009]HH的项链很像,只是数据大小有些差别,题解 我博客里对莫队的介绍 我们在排序询问时,普通是这样qaq inline bool cmp(register query a,register query b) { return a.bl==b.bl?a.r<b.r:a.bl<b.bl; } 我加了一个奇偶优化:按奇偶块排序.如果区间左端点所在块不同,那么就直接按左端点从小到大排:如果相同,奇块按右端点从小到大排,偶块按右端点从大到小排.…