自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(109)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 ZCETHAN の板子们

CSP 赛前的模板复习。其中代码一般以洛谷模板题为基础。变量类型一般为 int,数据范围一般为 10510^5105,算法范围一般为 提高级 。具体还是看代码。LIST:数据结构倍增表(ST 表)线段树树状数组SAM笛卡尔树TreapSplayFHQ-Treap数据结构倍增表(ST 表)QQQ 次询问长度为 nnn 区间内的最大值。#include<bits/stdc++.h>#define ll long long#define inf (1<<30)#def

2021-10-22 19:47:59 259

原创 CF1467D Sum of Paths

传送门题目大意数轴上有 nnn 个点,一个机器人从任意位置出发,每个时刻任意向左或者向右,到达一个位置就加上这个位置的分数,求最后走 kkk 步所有可能的分数之和。并且有 qqq 次询问,每次修改一个点权。Solution显然不能直接做。所以考虑拆开算贡献。对于一个点,我们考虑会在路径中出现多少次。考虑用 dpdpdp 算。设 cnti,jcnt_{i,j}cnti,j​ 为第 iii 步的时候走到 jjj 号点的路径数,那么有:cnti,j=cnti−1,j−1+cnti−1,j+1cnt

2021-10-07 17:33:10 155

原创 CF715C Digit Tree

传送门题目大意给你一棵带边权的树,求有多少点对 (u,v)(u,v)(u,v) 满足从 uuu 到 vvv 路径上经过的边依次写出来构成的十进制数能够被给出的整数 MMM 整除。Solution从 dsu on tree 过来的,所以直接开始想 dsu 的暴力。首先很显然我们会想到用两个数组来维护依次写出十进制数,设 upxup_xupx​ 表示从 xxx 到根节点所构成数,downxdown_xdownx​ 表示从根节点到 xxx 所构成的数。两者可以简单一次大法师解决。具体可以看代码,重点不是

2021-10-07 12:02:44 232

原创 2021 CSP-S 初赛知识补天

前面的话近几年的初赛,尤其是题型变成选择后,对计算机基础知识的要求不那么高,反而对程序理解、数学知识之类的东西是愈加重视。所以,我在这两方面选取了几类不是那么好做的题型,分享做法。特征方程这种题目通常是给出二项递推式,形如 cf(n)=af(n−1)+bf(n−2)cf(n)=af(n-1)+bf(n-2)cf(n)=af(n−1)+bf(n−2),然后让你写出,在 nnn 不断增大的过程中,f(n)f(n)f(n) 趋近于多少。我以前的做法是强算到 f(7)f(7)f(7) 左右,然后选一个最接

2021-09-17 12:11:30 610

原创 CF803G Periodic RMQ Problem

CF803G Periodic RMQ Problem题目大意给你一个序列 aaa,序列 bbb 是 aaa 重复拼接 kkk 次后的结果。现要你实现区间赋值区间最值。Solution一道氵黑吧,CF 只有 *2300。首先考虑维护,一个非常简单的线段树,基操了。但是这道题唯一的困难之处就是无法在拼接后的长度为 10910^9109 的序列中用线段树。然后我们发现询问只有 10510^5105 个,于是我们考虑放弃掉一些无用的数据。第一个想到的应该是只保留每次询问和修改的两个端点。想做到这样

2021-09-16 18:40:09 157

原创 CF1416D Graph and Queries

传送门题目大意给一张图,有两种操作。查询与一个点 vvv 联通的点中权值的最大值。输出后最大值赋为 000。删去一条边。Solution感觉题解区用倒着加边做的人比较多,我这里给出一种比较正向的做法。首先我摊牌了,我是为了练习克鲁斯卡尔重构树而做的,因此我拿到题我就往着上面想了。还是一样的套路,考虑边的优劣性。由于我们希望图尽可能联通,所以在重构树的时候,要选择一条最晚被断开的路径才不会影响正确性。于是我们考虑这个只删不增的特性,先离线所有询问,这样我们就可以得到每一条边在图中存在的最晚

2021-09-12 19:38:18 90

原创 P7834 [ONTAK2010] Peaks 加强版

传送门题目大意感觉题目描述已经足够清楚了。Solution这道题需要的东西有点多,我们不妨先来分解一下题目的需求。经过权值 ≤x\le x≤x 的边所能到达的点。马上想到最小生成树,很明显了,和货车运输一样。不赘述了。所有点中权值第 kkk 大。好的,又是裸的静态区间第 kkk 大。由于是强制在线,所以一发主席树就结束了。好接下来我们把这两个玩意儿结合一下,哦,然后我们掏出一个克鲁斯卡尔重构树就做完了。我是 fyy,我一眼秒了,感觉这题没啥技巧啊。好的我具体讲一下。我们对于

2021-09-12 15:37:39 503

原创 [NOI2018] 归程

传送门题目大意给定一张无向图,每条边有一个海拔 aaa,每次询问一个 vvv 和 ppp 表示起点和水位。可以从起点开始先花费 000 到达任意点,条件是不经过 a≤pa\le pa≤p 的边。如果必须要经过这样的边,那么在进入这条边的端点开始,经过每条边的花费就是其长度。求 v→1v\to 1v→1 的最小花费是多少。Solution题意非常神必,还强制在线。不过有一个很直观的想法就是做最大生成树。现在我介绍一下最大生成树的思路:首先跑最大生成树,然后以每次询问可以分成两种情况:水位没有超

2021-09-08 12:02:48 207

原创 [COCI2017-2018#5] Pictionary

传送门题目大意给定 nnn 个点,第 iii 次会把所有编号满足 gcd⁡(a,b)=m−i+1\gcd(a,b)=m-i+1gcd(a,b)=m−i+1 的点对连边,对于每个询问 a,ba,ba,b,求点 aaa 和点 bbb 什么时候联通。Solution场上没做出来,还是逊了。脑洞不够,套路不够。其实想通了还是蛮简单的。首先我们考虑把连边转化一下。如果 gcd⁡(a,b)=k\gcd(a,b)=kgcd(a,b)=k,那么显然 aaa 和 bbb 都是 kkk 的倍数。而每一次把 gcd⁡

2021-09-06 14:26:31 170

原创 [CEOI2015 Day2]世界冰球锦标赛

传送门题目大意给定 nnn 个正整数,从中选出若干个数,使得和不超过 mmm,问有多少种合法的方案。Solution乍一眼看一脸不可做,但是看到数据范围就豁然开朗了。N≤40N\le40N≤40很显然是爆搜。Yes,brute force yyds.好吧很快发现爆搜会炸,复杂度是 O(2n)O(2^n)O(2n),是过不了的。然后我们一拍脑瓜,掏出一个折半搜索,然后就做完了。先考虑爆搜前一半,复杂度是 O(220)O(2^{20})O(220),非常可以。然后总共最多也就 2202^

2021-09-06 14:07:47 153

原创 [BJOI2019]光线

传送门题目大意有 nnn 层玻璃,每一层都有 a%a\%a% 的透光率和 b%b\%b% 的反光率(剩下的会被吸收),现有 111 单位光打向第一层玻璃,求有多少单位的光透过所有玻璃,对 109+710^9+7109+7 取模。Solution不要 nt 了,这题模拟会吐的。看样例的图就知道了。那很自然会想到线性递推。首先很容易想到设 dpidp_idpi​ 表示 111 单位光线透过前 iii 层玻璃后的光线数。则:dpi=dpi−1×ai+sth.dp_i=dp_{i-1}\times a_

2021-09-05 20:57:44 131

原创 学习笔记——Splay

前言前几天有幸听学长讲平衡树,想着好久没写博客了,记录一下。简介Splay,平衡树的一种,依靠每次将访问到的点旋到根来保持树的平衡。并且,Splay 还可以高效解决序列翻转等操作。实现前提以下代码是基于这样的定义的:struct Tree{int ch[2],val,siz,fa;}nd[MAXN];//表示某一个节点void pushup(int rt){nd[rt].siz=nd[nd[rt].ch[0]].siz+nd[nd[rt].ch[1]].siz+1;}//更新某个节点子树的

2021-07-30 21:12:33 161

原创 CF1542C Strange Function

Before all唉又没有时间打 CF,只好事后自己做了。。。题目大意定义一个函数 f(i)f(i)f(i) 表示不为 iii 的因子的最小正整数,比如 f(1)=2,f(2)=3,f(4)=3f(1)=2,f(2)=3,f(4)=3f(1)=2,f(2)=3,f(4)=3。现给出一个 n(n≤1016)n(n\le 10^{16})n(n≤1016),求 ∑i=1nf(i)\sum_{i=1}^{n}f(i)∑i=1n​f(i) 的值 mod⁡109+7\operatorname{mod} 10^

2021-07-04 09:03:11 261

原创 CF1527C Sequence Pair Weight

传送门题目大意给定一个长度为 nnn 的序列 aaa,求:∑1≤l<r≤n∑l≤x<y≤r[ax=ay]\sum_{1\le l<r\le n}\sum_{l\le x<y\le r}[a_x=a_y]1≤l<r≤n∑​l≤x<y≤r∑​[ax​=ay​]即:求每一个连续区间内的相等数对之和。Solution套路题,如果直接求不好求,那么算每一部分的贡献。首先考虑如果两个数 ai=aja_i=a_jai​=aj​(i<ji<ji<j),那么

2021-05-26 08:58:43 121

原创 CF1525C Robot Collisions

传送门题目大意在一条数轴上有 nnn 个机器人,每个机器人有一个初始的朝向,之后每一秒,它会向着它朝向的方向走一个单位,如果到达了 000 或者 mmm 那么就会立即掉头。如果多个机器人在同一整数点相遇,那么它们就会碰撞炸掉,在此之后就不会与其他机器人碰撞了。现需要你求出每个机器人最早在第几时刻炸掉,如果不会,则输出 -1。Solution首先是注意一点:当且仅当两个机器人奇偶性相同时才会相撞,并且没有意外是一定会相撞的。可以很简单地证一下,每一次移动每一个机器人的位置奇偶性都会改变,如果两个机器

2021-05-19 10:27:20 239

原创 学习笔记——斜率优化 dp

引入斜率优化,是单调队列优化的一个进阶版本,为了更好地理解,先来回顾一下单调队列吧~所谓单调队列优化,就是对于形如:dpi=max⁡{dpj+aj}dp_i=\max\{dp_j+a_j\}dpi​=max{dpj​+aj​}的 dpdpdp 式,我们把所有的 dpj+ajdp_j+a_jdpj​+aj​ 放进单调队列里,实现 O(1)O(1)O(1) 的转移。这个时候,只有在式子中,每一项只有关于 jjj 或者只有关于 iii 的。但是如果有这样一个式子:dpi=max⁡{dpj+aj×a

2021-05-18 10:50:53 422

原创 CF1194D 1-2-K Game

传送门题目大意nnn 个石子,一次可以取 1,21,21,2 或 kkk 个,两人轮流取,取到最后一个胜利,问谁有必胜策略。Solution一眼巴什博奕。如果没有可以取 kkk 个这一条件,那么就是裸的博弈,那么我们来考虑可以取 kkk 个这一条件对答案产生了什么影响。首先,我们做巴什博奕是利用了分组的思想,即以 333 个为一组,如果我在一组中是后手,那么显然有必胜的策略。那么如果取 kkk 个,会对最后分组有什么影响呢?我们分两种情况考虑:Case1:kkk 不是 333 的倍数此时,如

2021-05-14 11:00:08 102

原创 CF1519B The Cake Is a Lie

传送门题目大意有 TTT 组询问。每组询问个给出 n,m,kn,m,kn,m,k。表示在一个 n×mn\times mn×m 的网格图中,可以向下或向右走,起初在 (1,1)(1,1)(1,1),并且到达 (n,m)(n,m)(n,m),且花费和为 kkk。问是否有这样的方案。走一步的花费是:如果从 (x,y)(x,y)(x,y) 走到 (x+1,y)(x+1,y)(x+1,y),则花费 yyy;如果从 (x,y)(x,y)(x,y) 走到 (x,y+1)(x,y+1)(x,y+1),则花费 x

2021-05-03 08:22:10 114

原创 CF1519D Maximum Sum of Products

传送门题目大意给定两个序列 aaa 和 bbb。你可以对 aaa 的一段区间翻转,也可以不翻转,要求翻转后 aaa 与 bbb 对应位置之积的和最大。即求下式的值最大:∑i=1nai×bj\sum_{i=1}^na_i\times b_ji=1∑n​ai​×bj​Solution首先看到 n≤5000n\le 5000n≤5000,想到 O(n2)O(n^2)O(n2) 做法。可以设 dpi,jdp_{i,j}dpi,j​ 表示 aaa 翻转 i∼ji\sim ji∼j 这段区间内的元素后,表达

2021-05-03 07:47:06 190

原创 CF631C Report

传送门题目大意给出一个长度为 nnn 的序列 aaa,并且有 mmm 个操作,每个操作包含一个 tit_iti​ 和 rir_iri​。若 ti=1t_i=1ti​=1,则将 aaa 中前 rir_iri​ 个从小到大排序。若 ti=2t_i=2ti​=2,则将 aaa 中的前 rir_iri​ 个从大到小排序。求最终的序列 aaa。Solution首先有一个显而易见的结论,如果某个操作之后有一个 rrr 大于等于该操作,那么当前操作相当于白给,因为之后会被覆盖。(这与 ttt 无瓜)因此,我们

2021-05-01 09:50:40 219 2

原创 国内有哪些好用的 Online Judge

前言很多 oier 和 acmer 都会去找一个比较好的 OJ 来刷题以提高自身的能力,而很多国外的网站极其不稳定,比如说 C 某和 V 某。所以很多人都会倾向于在国内 OJ 上刷题,那么国内有什么好用的 OJ 呢?很多人会说洛谷啊,LOJ 啊,等等。但都不是我想推荐的 OJ,我想推荐的 OJ,虽然年龄不过数月,技术人员寥寥无几,但是这个 OJ 真的,非常好用。先重磅推出:Hydro OJ接下来我将逐一介绍其非常好用的功能。域这绝对是 Hydro 的最大特色。每个用户可以在 OJ 上创建一个

2021-04-28 10:22:23 870 1

原创 帕秋莉的手环

传送门题目大意给定一个长度 nnn,求有多少个长度为 nnn 的 010101 环,使得没有两个相邻的 000。不得不说 Luogu 上的翻译是真的差劲。Solution看完题面就知道是裸的 dpdpdp 题,有点 dpdpdp 基础的人很快就能写出 dpdpdp 的转移式子。设 dpi,0/1dp_{i,0/1}dpi,0/1​ 表示第 iii 位填入 0/10/10/1 的方案数是多少。则有:如果当前这位是 000,则前一位必须是 111。即:dpi,0=dpi−1,1dp_{i,0}=

2021-04-22 09:06:29 198

原创 CF26D Tickets

传送门题目大意卖足球赛的票,票价是 10元/张,你手中有 kkk 张 10 元钱,并且知道有 nnn 个人来买票时会带 10 元,mmm 个人会带 20 元钱。你可以顺利卖票,即每次都能找得出钱的概率是多少。Solution首先分析顺利卖票,由于票价是 10 元,所以带 10 元的人是不需要你找钱,相反,他们来买票还可以为你提供找 20 元的钱。所以,得出结论,10 元是好的,20 元是不好的。我们可以先算有多少合法的序列,然后除以总方案即可。于是,我们开始转化模型。step 1由上面的结论

2021-04-18 15:33:09 98

原创 学习笔记——二分图及建图技巧

简介二分图是一种特殊的图。其定义为:节点由两个集合组成,且两个集合内部没有边的图。那啥时候可以用二分图呢?当且仅当图可以进行合法的黑白染色的时候,可以考虑二分图。二分图匹配匈牙利算法最基础的问题就是二分图的最大匹配。所谓最大匹配,就是对于左右两个集合内的点,每个点都只能选一次,并且左右匹配的点之间有连边,求最多能左右匹配的点对数。举个最简单的例子,就是有 nnn 个男生和 mmm 个女生,之间有相互喜欢的关系,求最终最多能牵几根红线。由于这个问题比较基础,所以具体可以看网上其它博客,这里仅

2021-04-13 20:29:15 656

原创 AT2163 [AGC006B] Median Pyramid Easy

AT2163题目大意给定这样一个 nnn 层的方格金字塔:然后最后一行是 1∼n×2−11\sim n\times 2-11∼n×2−1 的排列,之后每一格都是正下方、左下方、右下方 333 个格子中的数的中位数。然后给定第一层的数 xxx,要求你构造一个合法的最后一层。Solution显然不可能枚举然后验证,那么这显然是一道构造题(阿巴阿巴)首先观察它构造的规律。如果三个数中,有 222 个是相等的,那么这三个数“合成”的数也一定是与那两个数相等。所以在任意位置,一旦有 222 个相邻的并

2021-04-01 11:26:03 225

原创 CF891C Envy

CF891C Envy题目大意给出一个nnn个点mmm条边的无向图,每条边有边权,共QQQ次询问,每次给出kik_iki​条边,问这些边能否同时在一棵最小生成树上。Solution首先明确两件事:连通图中所有最小生成树中,所有权值的边的数量都是相等的。各权值的边之间是无影响的。分别说明:对于第一点,显然,由于用KruskalKruskalKruskal求出来的结果一定是最优的,如果某一权值的边少了,势必会多出一条权值更大的边,如果多了,那么势必会导致后面的边会无法加入,最终导致答案更劣

2021-03-17 08:45:27 169

原创 [ZJOI2012]灾难

题目大意给定一张食物网,对于每一种生物,求其灾难值。灾难值的定义为如果它突然灭绝,那么会跟着一起灭绝的生物的种数。Solution很多dalaodalaodalao说是支配树。呃?不知道支配树??没事,我也不知道,但是这题看完之后自然就知道了。如果给你的不是一个DAGDAGDAG,而是一棵树,那么怎么做?这不简单?每个节点的答案就是子树大小−1-1−1,因为要减去自己。那我们就把图变成一棵树。我们以样例为例。首先草是一切生物的食物来源,所以其等级最高,就会被建在我们新建的树的根

2021-03-13 13:04:18 196

原创 [SHOI2005]树的双中心

题目大意给定一棵无根树,函数S(x,y)=∑v∈V(W(v)∗min(d(x,v),d(y,v)))S(x,y)=\sum\limits_{v\in V}(W(v)*min(d(x,v),d(y,v)))S(x,y)=v∈V∑​(W(v)∗min(d(x,v),d(y,v))),其中VVV是点集,W(v)W(v)W(v)是vvv点的权值,d(x,y)d(x,y)d(x,y)表示树上两点之间的距离。求当xxx和yyy取多少时,S(x,y)S(x,y)S(x,y)能取到最小值,并输出这个最小值。Solut

2021-03-10 09:26:38 194

原创 学习笔记——高斯消元

简介高斯消元是一个用于求方程组的解的算法。在线性代数中非常重要。一般而言,其复杂度为O(n3)O(n^3)O(n3),可以承受200200200及以下的数据范围(当然有的题目时限是10000ms10000ms10000ms什么的,特殊情况特殊对待)。算法理解考虑一个二元一次方程组怎么解。{a1x1+a2x2=a3b1x1+b2x2=b3\begin{cases}a_1x_1+a_2x_2=a_3\\b_1x_1+b_2x_2=b_3\end{cases}{a1​x1​+a2​x2​=a3​b1​x1

2021-02-05 18:14:19 284 1

原创 AT2005(单调栈,差分)

传送门SolutionStep 1Step\,1Step1分析整个操作过程是什么特点。如果之后有一个长度比之前最短的还要短,那么后面的统统截掉,相当于白给,所以,任何降序的操作都是无意义的。所以先利用单调栈处理出一个严格单调上升的序列(注意nnn也要放进去,因为nnn是初始长度)。Step 2Step\,2Step2面对一个单调上升的序列,需要一个方法来处理答案。考虑从长度为a→ba\to ba→b,则必定是长度为aaa时的若干个循环加上一个aaa的前缀构成长度为bbb。而这样的两个

2021-01-17 20:00:41 144

原创 洛谷P7263 Something Comforting

传送门分析通俗粗糙的理解通俗粗糙的理解通俗粗糙的理解这是我比赛时的思路,由于题目中给出的是一个合法的序列,则一定可以分成若干个子括号序列。具体地,如(())()(()())(())()(()())(())()(()()),可以分成(())  ()  (()())(())\;()\;(()())(())()(()()),则对于每一个子序列,可以将它反过来,也可以不反,就构成了不合法的序列(当然,如果都不反也是一种,此时是合法的),所以只要求出这样的子序列的个数xxx,则通过题目中给出的方式得到给定

2021-01-10 20:31:16 142 1

原创 Kruskal重构树(AT1998 Stamp Rally)

引入大家都知道KruskalKruskalKruskal求最小生成树吧,这个算法就是建立在前面说的算法的基础上的一个奇妙的想法。有这么一个问题,给你一张图,每条边都有权值,然后规定一堆东西后问:满足条件的路径中,所经过边权最大值最小是多少。初步想法二分,一定是最先想到的,我们接下来就以标题中的那题为例讲讲这个算法。我们很容易想到二分最大边权,然后验证。但是每次验证都跑dfsdfsdfs肯定得炸。那么怎么办呢。来看看重构树算法的实现吧。实现首先,根据KruskalKruskalKruskal

2021-01-03 16:09:53 114

原创 3060 ProjectEuler 108

传送门分析看到这么个窒息的式子,难道不想化简吗?1x+1y=1n\dfrac{1}{x}+\dfrac{1}{y}=\dfrac{1}{n}x1​+y1​=n1​n(x+y)=xyn(x+y)=xyn(x+y)=xynx+ny=xynx+ny=xynx+ny=xyxy−nx=nyxy-nx=nyxy−nx=nyx(y−n)=nyx(y-n)=nyx(y−n)=nyx=nyy−nx=\dfrac{ny}{y-n}x=y−nny​诶还是没有什么用啊。那么不妨换元,设a=y−na=y-na=y

2020-12-29 19:43:26 199

原创 Codeforces Round #691 (Div. 2) A~C题解

A-Red-Blue Shuffle水题,速切。比一比红比蓝大的个数和蓝比红大的个数,大的那个概率大。#include<bits/stdc++.h>#define ll long long#define inf 1<<30using namespace std;char r[1010],b[1010];int main(){ int T,n; scanf("%d",&T); while(T--){ scanf("%d",&n); sca

2020-12-20 21:36:07 175 1

原创 2020NOIP-B-字符串匹配(哈希,思维)

题目传送门分析题目要求原字符串可以分解成多少种(AB)iC(AB)^iC(AB)iC的形式,该式子的意义见题面。如果不考虑那个奇怪的奇偶限制,那么应该怎么做?首先有两种想法,肯定是先枚举一部分,然后通过一些奇怪的优化来解决。比较方便的做法,就是枚举ABABAB,这样可以在之后找循环节来解决,然后确定CCC,而接下来的问题就是我需要知道循环节。于是正解用exKMPexKMPexKMP,于是……大炮打蚊子—xinjun于是参照了字符串的题目,想到哈希。我可以预处理出到每个位置的哈希值,然后

2020-12-15 19:54:09 442

原创 ST表-RMQ问题(洛谷P3865)

前置芝士用倍增思想求静态区间最值(无法求和)。dp[i][k]dp[i][k]dp[i][k]表示区间[i,i+2k−1][i,i+2^k-1][i,i+2k−1]的最大或最小值。预处理O(nlog⁡n)O(n\log n)O(nlogn)则dp[i][0]=a[i]dp[i][0]=a[i]dp[i][0]=a[i]。则:dp[i][j]=min/max(dp[i][j−1],dp[i+2j−1][j−1])dp[i][j]=min/max(dp[i][j-1],dp[i+2^{j-1}][j

2020-11-05 20:07:49 148

原创 2020牛客NOIP赛前集训提高组#6-B-艰难睡眠(RMQ,单调队列)

题目描述样例input:3 6 31 13 24 30 1 2 7 1 21 2 0 3 4 57 9 5 0 4 6output:4PS: 本题需快读,若采用出题人给的快读,需要从文件读入,测试的时候要freopen,但是提交的时候不用。分析由于对于每个吵闹的人,可以算出从iii开始睡觉的情况下,这个吵闹的人需要被调到那个区间开始吵。设其他量与题目描述一致,lenlenlen表示吵闹的人可以开始吵闹的区间SSS的大小,则易得:len=m−k−bi+1len=m-k-b_i+1

2020-10-30 19:58:23 180

原创 2020牛客NOIP赛前集训提高组#5-C-经典字符串问题(主席树,权值线段树)

题目描述样例input:5 11 5 3 4 21 3 2output:3分析静态区间第k大,用主席树。在一般的线段树中,查找整段的第k大的数,可以用权值线段树。然后在主席树中,要求一段区间l,rl,rl,r的第k大,只要用前缀和的思想,对于每一层,只要将kkk与lvr+1−lvllv_{r+1}-lv_llvr+1​−lvl​比较,并相减就可以了,其他操作一样。然后解决最后一个问题:字典序。可以先用string读入,然后sort先排好,在用一个数组将其大小离散化成数字就可以了。

2020-10-28 21:16:15 143

原创 2020牛客NOIP赛前集训提高组#5-B-K匹配(KMP,容斥)

题目描述样例input:10 2abaaaababaaboutput:33分析TTT的长度是kkk,而题目也是要求kkk匹配的,所以实际上,就是求SSS中有多少个子串包含TTT。第一步考虑有多少子串与TTT是相等的,这个很简单,用hashhashhash或者kmpkmpkmp都能,保险起见,用kmpkmpkmp。然后考虑对于每个匹配,有多少子串是包含当前这个匹配位置的。以样例为例(匹配加粗):ab aaa ab ab a那么比如我当前是SSS中选取子串ab(第一个ab),那么显

2020-10-28 20:29:28 190 1

原创 2020牛客NOIP赛前集训提高组#3-B-牛半仙的妹子图(最小生成树)

题目描述样例input:6 6 3 3 110000071 1 1 2 2 31 6 11 2 52 3 43 6 33 4 65 6 20 25 69 11output:587分析可以先跑最小生成树,求出这个图中从xxx到达任意一个节点所需要的最大困难程度的最小值。此时有一个很好的思路:用一个t[i]t[i]t[i]表示种类iii妹子被半仙访问所需要的最少困难程度。最后算的时候枚举妹子的种类,然后判断一下t[i]t[i]t[i]与l,rl,rl,r的大小关系就

2020-10-24 12:30:17 203

三首常用的乐曲《送别》《生日快乐》《新年好》

本资源是用c++语言写成的3首耳熟能详的歌谣。还添加了歌词以及一些插图,生动活泼。程序本身比较简单但是也比较的繁琐,因此蒟蒻在此将之共享,希望各路大佬不弃。用编译器DEV即可运行,用蜂鸣器演奏,音质不好,但是也是比较神奇了。

2020-08-27

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除