[冬令营模拟]wzj的题目#1】的更多相关文章

T1 少膜一个,T3 暴力写挂 强势 rank1 -> rank2 一场比赛两道线段树分治,给力 T1 password 给你 m 个禁止字符串,求长度为 n 的所有字符串中至少包含这些禁止字符串各一次的字符串数量 $n \leq 10^9,m \leq 4,\sum len \leq 50$ sol:容斥一下就变成了“m 个禁止字符串,一个都不出现的字符串数量” 这个可以转化成从 init 节点走 x 步走不到任意一个节点的方案数 矩阵加速即可 需要注意的是状态压缩被卡了,这种状压 + 矩乘可…
[2018冬令营模拟测试赛(二十一)]Problem A: Decalcomania 试题描述 输入 见"试题描述" 输出 见"试题描述" 输入示例 见"试题描述" 输出示例 见"试题描述" 数据规模及约定 见"试题描述" 题解 最优解一定是在一段连续的包含 \(0\) 号点的区间中选择最小的 \(k\) 个印花,其中一边需要折返(即代价为两倍距离). 所以我们先将一边的距离 \(\times 2\),然后…
上学期没有去 GTSG,于是今天老师让我们来做一下 GTSG2018 Day1 & Day3 Day1 在上午当成一场考试来搞了,Day3 由于锅太多而且 T3 玄学而被放到下午自学... 上午 100 + 45(老师放的是后 19 组原数据和一组 hack 数据,所以只有 40,现场的话应该是 45 )+ 80 = 225 T1 假面 faceless n 个人,每个人有血量,q 次操作,现在有 2 种操作 1.指定一个人 x ,有 p 的概率扣他 1 滴血,一个人没有血,就死了 2.选出 k…
Problem 1 高级打字机(type.cpp/c/pas) [题目描述] 早苗入手了最新的高级打字机.最新款自然有着与以往不同的功能,那就是它具备撤销功能,厉害吧. 请为这种高级打字机设计一个程序,支持如下3种操作: 1.T x:在文章末尾打下一个小写字母x.(type操作) 2.U x:撤销最后的x次修改操作.(Undo操作) (注意Query操作并不算修改操作) 3.Q x:询问当前文章中第x个字母并输出.(Query操作) 文章一开始可以视为空串. [输入格式] 第1行:一个整数n,表…
题目 其中n,q≤500000n,q\leq 500000n,q≤500000 题目大意 让你维护一个堆.支持一下操作: 在某个点的下面加上另一个点,然后进行上浮操作. 询问某一点的权值. 思考历程 一眼看这题,诶,不就是那道中学生数据结构题吗? 直接树链剖分,然后splay一波搞定! 思想还是很简单的! 但是感觉有点长-- 正解 上面的这个解法算是一个正解吧. 但是我还是没打,因为代码可能很长--(想一想,又树链剖分,又splay的有点麻烦) 然后这题LCT也可以做!就是LCT和一个splay…
题目 题目大意 给你一棵树,在树上的某一些节点上面有人,要用最小的步数和,使得这些人靠在一起.所谓靠在一起,即是任意两个人之间的路径上没有空的节点(也就是连在一起). N≤200N \leq 200N≤200 思考历程 看了题目好久,没有什么思路. 想到DP,但不知道怎么用DP做. 然后去翻翻题解,然后一脸懵逼,再去问问几位大佬. LYL.ZHJ.GMH这三个大爷都说这题很水,是联赛难度. 不屑于给我讲. 天哪,这就是人与人之间的差距!太恐怖了. 然后我只能依靠我自己硬是刚了四天,对,是四天.…
题面 题解 我永远讨厌dp.jpg 搞了一个下午优化复杂度最后发现只要有一个小trick就可以A了→_→.全场都插头dp就我一个状压跑得贼慢-- 不难发现我们可以状压,对于每一行,用状态\(S\)表示有哪些格子是已经被上一行推倒了的,那么我们可以枚举本行所有格子的字母情况,然后计算一下这个时候下一行格子被推倒的情况,把这一行的贡献加到下一行就行了. 简单来说就是记一个\(f[pos][S]\)表示第\(pos\)行,格子被推倒的情况为\(S\)时的方案数,\(dp[pos][S]\)为所有方案中…
题面 题解 好迷-- //minamoto #include<bits/stdc++.h> #define R register #define ll long long #define fp(i,a,b) for(R int i=a,I=b+1;i<I;++i) #define fd(i,a,b) for(R int i=a,I=b-1;i>I;--i) #define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)…
题面 题解 为了一点小细节卡了一个下午--我都怕我瞎用set把电脑搞炸-- 观察一次\(1\)操作会造成什么影响,比如说把\(A[i]\)从\(x\)改成\(y\): \(D[x]\)会\(-1\),导致\(E[x]=B[x]/D[x]\)会修改 \(D[y]\)会\(+1\),导致\(E[y]=B[y]/D[y]\)会修改 连边关系会修改 当某个\(E[x]\)改变时,所有跟它距离不超过\(1\)的点的\(C[]\)值都要修改 \(C[A[x]]\):单点修改 \(C[x]\):单点修改 儿子…
题面 题解 数据结构做傻了.jpg 考虑每一个节点,它的儿子的取值最多只有\(O(\sqrt {m})\)种,那么可以用一个双向链表维护儿子的所有取值以及该取值的个数,那么对儿子节点修改一个值就是\(O(\sqrt{m})\),整体修改可以通过在自己身上打一个标记做到\(O(1)\) 然后还要修改父亲,那么可以通过修改父亲的父亲的儿子实现,并把父亲打上一个加一标记 然后还需要知道该时刻某个点的具体取值,可以通过父亲身上整体加一的标记和自己身上被儿子打的标记的总和求出 //minamoto #in…