自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 2019牛客CSP-S集训营 #1 B-乃爱与城市拥挤程度(树形DP)

DescriptionSolution

2021-08-19 20:20:50 123

原创 CF Round #737 D. Ezzat and Grid(DP)(线段树)

Description\mathscr{Description}DescriptionSolution\mathscr{Solution}Solution每行是否承接上行仅与此行状态有关,考虑DPdpidp_{i}dpi​表示1−i行最多合法行数1-i行最多合法行数1−i行最多合法行数用线段树区间修改,区间最大值#include <bits/stdc++.h>#define ls x<<1#define rs x<<1|1#define P pair

2021-08-10 22:23:35 140

原创 CF 1557C Moamen and XOR(DP)

StatementDP时初始状态尽量简单#include <bits/stdc++.h>#define ll long longusing namespace std;const ll N=2e5+10,M=1e9+7;ll T,n,k;//sc=sum of all x(even & <=n) C(n,x)/* (x+1)^n=x^n+C(n,1)x^n-1+...+C(n,n-1)x+1 n odd (x-1)^n=x^n-C(n,1)x^n-1+..

2021-08-10 18:43:06 182

原创 2021牛客多校#4 D-Rebuild Tree(Prufer序列)(树形DP)

Description\mathscr{Description}Description一棵树删k条边,再加k条边还是树,求方案数 Solution\mathscr{Solution}Solution前置知识:prufer结论nk−2∗∏i=1ksin^{k-2}*\mathop{\prod}\limits^{k}_{i=1}s_ink−2∗i=1∏k​si​ (k为联通块数量,sis_isi​为联通块大小)本题中nk−1∗∏i=1k+1sin^{k-1}*\mathop{\prod}\li.

2021-07-29 20:28:20 188

原创 Prufer序列学习笔记

HNOI2004树的计数(LuoguP2290)#include <bits/stdc++.h>#define ll long longusing namespace std;const int N=210;ll T,n,ans,d[N],c[N][N];int main(){ scanf("%lld%lld",&n); if(n==1){scanf("%lld",&d[1]);return printf(d[1]==0?"1\n":"0\n"),0;} fo

2021-07-29 15:29:04 85

原创 2021牛客多校#4 B-Sample Game(概率DP)

Description\mathscr{Description}Description Solution\mathfrak{Solution}Solution先考虑简单的再来一瓶问题设买一瓶可乐有ppp概率再来一瓶,E(ξ)=xE(\xi)=xE(ξ)=x x=1+px⟹x=11−px=1+px\Longrightarrow x=\frac{1}{1-p}x=1+px⟹x=1−p1​同理 设当前选了xxx,之后还能选的数期望为fxf_xfx​             fx=1∗∑i.

2021-07-27 20:43:45 651

原创 ST table

建表设dp(i,k)dp(i,k)dp(i,k)为区间 [i,i+2k][i,i+2^k][i,i+2k]内min⁡,max⁡\min,\maxmin,maxdp(i,k)=max⁡,min⁡(dp(i,k−1),dp(i+2k−1,k−1))dp(i,k)=\max,\min(dp(i,k-1),dp(i+2^{k-1},k-1))dp(i,k)=max,min(dp(i,k−1),dp(i+2k−1,k−1))因此建表是O(NlogN)O(NlogN)O(NlogN)的查询把区间[l,r

2020-11-05 19:32:40 226

原创 2020牛客NOIP赛前集训营-提高组(第五场)C-经典字符串问题

StatementSolution我们对每个字符串离散化,就是一道静态区间第k大裸题需要用到可持久化线段树—主席树(模板)附上自己的模板#include <cstdio>#include <string>#include <iostream>#include <algorithm>#define ll long longconst int N=1e5+10,M=N<<5;using namespace std;int

2020-10-28 20:35:03 152

原创 2020牛客NOIP赛前集训提高第四场C-斐波(矩阵快速幂,数学)

题目链接Problem StatementSolution简洁解释一下题意,相信很多人都是卡在了题意理解上我们要求:题目所给[l,r][l,r][l,r]区间的任意一个子区间中的数组成的集合的子集合中元素的和作为下标的斐波那契数的平方和之和所给fff含义是f(f(f(集合)))=所有子集的数字和作为下标的斐波那契数的平方和我们一层一层来做Subtask 1:区间的数字和作为下标的斐波那契数复习:fibonaccifibonaccifibonacci矩阵区间的

2020-10-25 16:48:02 308 1

原创 2020牛客NOIP赛前集训营-提高组B-牛半仙的妹子图(Kruskal)

StatementSolution题目其实是求[l,r][l,r][l,r]内颜色数之和我们看到ci≤600c_i \leq600ci​≤600快乐~于是考虑每一种颜色,可以做到6∗1076*10^76∗107时复,约等于O(nn)O(n\sqrt n)O(nn​)先用KruskalKruskalKruskal跑出MSTMSTMST然后记录到达每一种颜色路径上最大边权(#困难接受程度)那么就可以算r−max⁡(l,ti)+1r-\max(l,t_i)+1r−max(l,ti​)+1次答案

2020-10-23 20:40:41 185

原创 2020牛客NOIP赛前集训营-提高组(第二场)前缀-C(字符串,序列自动机)

题目描述StatementSolution有序列自动机思想如图思路就是用resresres处理循环的整个字符串,余数为remremrem#include <bits/stdc++.h>using namespace std;const int N=1e6+10,A=27,mod=998244353;char sc[N];int M1(int x){return x>=mod?x-mod:x;}int M2(int x){return x<0?x+mod:x

2020-10-21 22:01:58 123

原创 2020牛客NOIP集训营-提高组(第二场)B-包含(DP)

题目链接StatementSolution看到数据范围ai≤106a_i \leq 10^6ai​≤106,首先想到DPDPDP若考虑11011,它包含随便一位1变0的数因此我们从大到小枚举每个插入的数,将它随便一位^成0状态转移式为$$

2020-10-21 18:56:40 109

原创 2020牛客多校第九场G-Groundhog Playing Scissors(计算几何)(暴力)

Description题目给你一个凸多边形,可以绕原点随便转,剪刀固定方向,限制长度,求可以剪开的概率Solution这是一种巧妙的暴力做法转多边形很麻烦,我们相对地想到转剪刀方向我们每次把剪刀转一点点“一点点”来自精度要求10−410^{-4}10−4,2π3∗105  rad\cfrac{2\pi}{3*10^5}\,\,rad3∗1052π​rad绰绰有余算出剪刀沿此方向需要剪的距离,与LLL比较如果超过LLL说明剪不开#include <bits/stdc++.h&

2020-08-11 15:54:46 247

原创 2020牛客多校第十场C-Decrement on the Tree

DescriptionSolution首先,问有几次操作等价于问有几条路径显然我们只需要关心路径的起讫点路径数为起讫点数/2如图如图C情况,当有一条边权值很大,超过其他所有边权和时,必然出现许多像粉色边一样的起讫点,点数为粉边数若没有超过,如AB所示,则像欧拉一笔画问题一样,边权和为奇数则有起讫点,否则没有维护时可以用STL中的multiset方便的查最大值,插入和删除边可以做到优秀的O(logN)O(logN)O(logN)复杂度#include <bits/stdc++.

2020-08-11 13:10:28 387

原创 2020牛客多校第十场D-Hearthstone Battlegrounds

DescriptionSolution又是榜被带歪的一天超级大水题我们发现剧毒圣盾亡语⇒被藤蔓撞\Rightarrow^{被藤蔓撞}⇒被藤蔓撞剧毒亡语剧毒圣盾⇒被藤蔓撞\Rightarrow^{被藤蔓撞}⇒被藤蔓撞剧毒剧毒亡语⇒被怪撞\Rightarrow^{被怪撞}⇒被怪撞藤蔓剧毒⇒被怪撞\Rightarrow^{被怪撞}⇒被怪撞西内圣盾相当于两个怪因此我们尽量用藤蔓破对面盾,让1/11/11/1发挥1/1091/10^91/109的力量!由此可见,藤蔓是最有用的我们要用312

2020-08-10 20:52:58 206

原创 2020牛客多校第十场I-Tournament

DecriptionSolution首先,看到这题会有一种冲动怎么办!问题在于,我们让第一个人尽快离开,其他人等了很久我们把它拆成四部分记住最优宗旨要让所有人尽量一块一块地出现Case 1前1→n21 \rightarrow \cfrac{n}{2}1→2n​个人互相比要让所有人尽量一块一块地出现For instance,n=10premulationpremulationpremulation121\qquad212131\qquad313232\q

2020-08-10 20:21:58 383

原创 牛客多校第九场C-Groundhog and Gaming Time

DescriptionSolution计算期望有两种常用方法,计算贡献和期望DP,这里我们选择前者,后者可参考官方题解我们把区间左右端点升序排序,考虑每一段区间的贡献设区间QQQ出现在aaa个线段中P(Q)=2a−12nP(Q)=\cfrac{2^a-1}{2^n}P(Q)=2n2a−1​,减一是因为不能全部不选∴E(Q)=2a−12n∗∣Q∣\therefore E(Q)=\cfrac{2^a-1}{2^n}*|Q|∴E(Q)=2n2a−1​∗∣Q∣那么在nnn条线段中,PiP_iPi​的

2020-08-09 21:02:24 335

原创 牛客多校第九场J-The Escape Plan of Groundhog(桶)(前缀和)

DescriptionSolution首先发现n∈[1,500]n \in[1,500]n∈[1,500]的数据不要看成1500料想复杂度O(N3)O(N^3)O(N3)我们枚举上下边缘,再一起扫过去我们考虑四边都为1的条件上下可以轻松维护,对左右,我们记dijd_{ij}dij​为第jjj列从上到下的前缀和dij=j−i+1d_{ij}=j-i+1dij​=j−i+1表示当前列都是1再看内部01差不超过1的条件我们把0变成-1记sks_ksk​为到kkk列为止iii行和jjj行中间的

2020-08-09 14:01:42 251

原创 牛客多校第九场A-Groundhog and 2-Power Representation(高精)

DescriptionSolution10180≤260010^{180} \leq2^{600}10180≤2600所以我们只要去掉最外面一层括号就可以int处理每层匹配括号之间递归处理最后高精加乘#include <stack>#include <cstdio>#include <cstring>#include <algorithm>#define ll long longusing namespace std;const

2020-08-08 20:30:05 169

原创 牛客多校第九场K-The Flee Plan of Groundhog(树形DP)

DescriptionSolution设ttt为ttt秒后Groundhog追到的地方∴dis(x,t)=dis(x,n)2\therefore dis(x,t)=\cfrac{dis(x,n)}{2}∴dis(x,t)=2dis(x,n)​时被追到令mdimd_imdi​为iii周围离nnn最远的点∴ans=min⁡(depx,mdx+12)\therefore ans=\min(dep_x,\cfrac{md_x+1}{2})∴ans=min(depx​,2mdx​+1​)#inclu

2020-08-08 20:20:13 200

原创 牛客多校第七场C-A National Pandemic(树链剖分)

DescriptionSolution对operation-1f(y)←f(y)+w−dis⁡(x,y)f(y) \gets f(y)+w-\operatorname{dis}(x,y)f(y)←f(y)+w−dis(x,y)  =w−(dep(x)+dep(y)−2∗dep(lca(x,y)))\qquad\,\,=w-(dep(x)+dep(y)-2*dep(lca(x,y)))=w−(dep(x)+dep(y)−2∗dep(lca(x,y)))  =w−dep(x)−dep(y)+2∗d

2020-08-06 14:08:41 258 1

原创 2020牛客多校第八场E-Enigmatic Partition(隔项差分)

DescriptionSolution

2020-08-04 14:30:02 1159 6

原创 2020牛客多校第七场B-Mask Allocation

Statement把n∗mn*mn∗m个口罩分成最少几部分,使其既能平均分成nnn份又能均分成mmm份Solution设n≤mn \leq mn≤m则前nnn个答案必定为nnn个nnn,大了分不了,小了非最优继续考虑后m−nm-nm−n个和nnn个发现也是找最小值,分成最小值个最小值你想起了什么?gcd(a,b)=gcd(b,a  mod  b)gcd(a,b)=gcd(b,a\,\,mod\,\,b)gcd(a,b)=gcd(b,amodb)没错,这道题就是gcdgcdgcd的

2020-08-02 20:58:21 158

原创 2020牛客多校第七场J-Pointer Analysis

指针是C语言的精髓Statement有四种操作求每个指针可能指向位置Solution首先,这是道暴力模拟题小写字母一定是指针指成的有向图中出度为零的点(结尾)我们考虑从后往前考虑一层一层遍历…是不是很像bfs?bfs?bfs?再想,更像SPFASPFASPFA的思想每次从队列中取出点,合并如果合并后答案变了,就放进队列里Pseudo CodeLet worklist be a set//set or queueFor every allocation statemen.

2020-08-02 20:41:25 174

原创 2020牛客多校第七场G-Topo Counting

Statement搬运工Solution我们可以发现, 在删除节点的过程中, 架子和与架子相连的肉片的整体形态, 只有大致三种情况:Case 1第一种是一个完整的DRG(n)DRG(n)DRG(n)只删除了第一个节点, 不妨设该类形态为h(n)h(n)h(n)对于h(n)h(n)h(n), 接下来只有两种删除方法, 分别会变成 f(n–2,n)f(n – 2, n)f(n–2,n)以及g(n–1,n)g(n – 1, n)g(n–1,n)Case 2第二种是在一个完整的DRG(n)DR

2020-08-02 17:02:45 180

原创 2020牛客多校第七场A-Social Distancing

Statement在半径为rrr的圆中塞进nnn个人,使他们两两相距最远,求最远距离CF原题Solution

2020-08-02 16:37:17 424

原创 2020牛客多校第六场G-Grid Coloring(思维)

DescriptionSolution当k∤nk\nmid nk∤n时只要依次1,2,3,...,k1,2,3,...,k1,2,3,...,k即可当k∣nk\mid nk∣n时依次1,2,3,...,k1,2,3,...,k1,2,3,...,k会重复每行(列)后+1+1+1错开即可#include <bits/stdc++.h>int T,n,k,p;int main(){ scanf("%d",&T); while(T--){ sc

2020-07-28 20:27:27 168

原创 2020牛客多校第六场H-Harmony Pairs(数位DP)

Description题解1010010^{100}10100的数据明示算法:数位DP令状态dp[x][d][l][s]dp[x][d][l][s]dp[x][d][l][s]x x~x :搜到位置d d~d :AAA前面位数和−B-B−B前面位数和(防负数偏移100010001000)l l~l :limit,当前位之前BBB是否等于NNN,反映限制B≤NB\leq NB≤Ns s~s :当前位之前AAA是否

2020-07-28 13:17:40 1180

原创 牛客多校第六场K-K-Bag

Statement题解我们寻找两个相邻的相同元素则它们必属于两个不同排列记它们相距长度为len[i]len[i]len[i]枚举起点(无重复)之后往后面跳如果有一处长度不是kkk就不行细节由于过大的元素([1,109][1,10^9][1,109])如果不想用慢慢慢的map或比赛用不了的unordered_map就只能进行离散化完整版for(int i=1;i<=n;i++) scanf("%d",a+i),b[i]=a[i];sort(b+1,b+n+1);

2020-07-27 19:47:36 674

原创 牛客多校第六场B-Binary Vector(线性代数linear algebra)

Statement题解利用线性代数易得f(n)=∏i=1n2n−2i2nf(n)=\prod_{i=1}^n\cfrac{2^n-2^i}{2^n}f(n)=∏i=1n​2n2n−2i​ =∏i=1n2n−i−12n−i\,\qquad=\prod_{i=1}^n\cfrac{2^{n-i}-1}{2^{n-i}}=∏i=1n​2n−i2n−i−1​ =∏i=1n2i−12i\,\qquad=\prod_{i=1}^n\cfrac{2^i-1}{2^i}=∏i=1n​2i2i−1​然后就

2020-07-27 17:42:57 1149 1

原创 2020牛客多校Graph(boruvka)(Trie字典树)

StatementSolution可以发现任意两个点之间连边的权值都是固定的。由于图始终联通,所以两点间始终存在至少一条 路径,如果存在多条,根据环的异或和为0,两点间的路径的异或和应该相等,且始终是固定的。所以可以给每个点一个权值,那么两点间的连边权值就应该是两端点权的异或。接下来的问题就是01字典树。Code#include <bits/stdc++.h>#define ll long longconst int N=1e5+10,M=6e6+10;using nam

2020-07-26 14:42:44 267 1

原创 2020牛客暑期多校训练营(第五场)A-Portal(DP,最短路)

简洁题意mission:mission:\qquadmission:依次通过1,a1,b1,a2,b2,...,an,bn1,a_1,b_1,a_2,b_2,...,a_n,b_n1,a1​,b1​,a2​,b2​,...,an​,bn​的最短路Portal:Portal:\qquadPortal:可以在所在点设传送门,两个传送门之间可以瞬移RC controller:RC\,controller:\qquadRCcontroller:可以随时关闭任何一个传送门Solution直接DPDP.

2020-07-26 14:12:46 248 1

原创 2020牛客暑期多校训练营(第五场)D- Drop Voicing

Statement有两种操作operation−1operation-1operation−1 取倒数第二个移到首位operation−2operation-2operation−2 把第一个移到末尾要求多次operation−1operation-1operation−1连在一起时次数最小Solution 1由operation−2operation-2operation−2易得这是一个随便转的圆盘而圆盘旋转并不改变元素的相对位置只有operation−1operation-1ope

2020-07-25 19:51:59 354 2

原创 2020牛客暑期多校训练营(第四场)H-Harder Gcd Problem

Statement把1 N1~N1 N的数选尽量多的组,使得每组gcdgcdgcd大于111。输出一组特解。题解2p>n2p>n2p>n的ppp必然不能匹配,将它们除去。倒序枚举所有质因子ppp,考虑所有是ppp的倍数、且未被匹配的数,任意将它们进行匹配。如果个数是奇数就留下2p2p2p。最后把剩下的偶数都随意匹配一下。Code#include <queue>#include <cstdio>#include <cs.

2020-07-21 20:43:28 155

原创 2020牛客暑期多校训练营(第四场)B-Basic Gcd Problem

传送门Description求fci(ni)mod(109+7)f_{c_i}(n_i)mod(10^9+7)fci​​(ni​)mod(109+7)题解设n=∏i=1npibin=\prod_{i = 1}^{n}p_i^{b_i}n=∏i=1n​pibi​​sumpow=∑i=1nbisumpow=\sum_{i = 1}^{n}b_isumpow=∑i=1n​bi​fci(ni)=nisumpowf_{c_i}(n_i)=n_i^{sumpow}fci​​(ni​)=

2020-07-21 20:04:57 116 1

原创 2020牛客暑期多校训练营(第四场)D- Dividing Strings

传送门DescriptionWith powerful decision-making skills, ZYB can solve complex problemsZYB has a decimal string {s}s of length {n}n. He wants to split the string into several (at least 2) non-empty continuous substrings and minimize the difference between th

2020-07-21 19:30:59 363 1

原创 HDU 1176 免费馅饼 (DP)

Problem Statement都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了,所以gameboy马上卸下身上的背包去接。但由于小径两侧都不能站人,所以他只能在小径上接。由于gameboy平时老呆在房间里玩游戏,虽然在游戏中是个身手敏...

2019-12-28 12:48:15 115

原创 POJ 3126 Prime Path (BFS)

POJ 3126 Prime Path (BFS)【题目链接】http://poj.org/problem?id=3126【题目大意】给你两个四位数的素数,通过改变其中的一个数,每次只允许改变一位数,而且改变之后的数也必须是素数,问最少通过改变几次变成后一个四位的素数。如果不能改变成后面的四位素数则输出Impossible【题解】不罚时,每次改变四位中的一位入队;可以先处理出四位素数,...

2019-12-26 21:42:42 114

空空如也

空空如也

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

TA关注的人

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