[NOI 2017]蚯蚓排队】的更多相关文章

Description 题库链接 蚯蚓幼儿园有 \(n\) 只蚯蚓.幼儿园园长神刀手为了管理方便,时常让这些蚯蚓们列队表演. 所有蚯蚓用从 \(1\) 到 \(n\) 的连续正整数编号.每只蚯蚓的长度可以用一个正整数表示,根据入园要求,所有蚯蚓的长度都不超过 \(6\) .神刀手希望这些蚯蚓排成若干个队伍,初始时,每只蚯蚓各自排成一个仅有一只蚯蚓的队伍,该蚯蚓既在队首,也在队尾. 神刀手将会依次进行 \(m\) 次操作,每个操作都是以下三种操作中的一种: 1.给出 \(i\) 和 \(j\) ,…
[题目]#2303. 「NOI2017」蚯蚓排队 [题意]给定n条长度不超过6的蚯蚓,初始各自在一个队伍.m次操作:1.将i号蚯蚓和j号蚯蚓的队伍合并(保证i为队尾,j为队首).2.将i号蚯蚓和它后面的蚯蚓分离成两个队.3.询问:给定字符串S和正整数k,求f(每个长度为k的子串)的乘积.其中f(S)定义为蚯蚓在其队伍向后延伸k位组成的字符串等于S的蚯蚓个数.\(n \leq 2*10^5,m \leq 5*10^5,k \leq 50,\sum |s| \leq 10^7,c \leq 10^3…
[BZOJ4943][NOI2017]蚯蚓排队(哈希) 题面 BZOJ 洛谷 UOJ 题解 记得去年看网络同步赛的时候是一脸懵逼的. 昨天看到\(zsy\)做了,今天就看了看.. 这不是\(Hash\)的傻逼题吗... 呜... 开链表存一下前驱后继,因为询问长度不超过\(50\) 那么,总的串的个数不超过\(50n\),暴力\(hash\)一下然后拿哈希表存一下就好了. 我开始用的map然后TLE飞了 #include<iostream> #include<cstdio> #in…
「NOI2017」蚯蚓排队 题目描述 蚯蚓幼儿园有$n$只蚯蚓.幼儿园园长神刀手为了管理方便,时常让这些蚯蚓们列队表演. 所有蚯蚓用从$1$到$n$的连续正整数编号.每只蚯蚓的长度可以用一个正整数表示,根据入园要求,所有蚯蚓的长度都不超过$6$.神刀手希望这些蚯蚓排成若干个队伍,初始时,每只蚯蚓各自排成一个仅有一只蚯蚓的队伍,该蚯蚓既在队首,也在队尾. 神刀手将会依次进行$m$次操作,每个操作都是以下三种操作中的一种: 给出$i$和$j$,令$i$号蚯蚓与$j$号蚯蚓所在的两个队伍合并为一个队伍…
NOI 2017 游记 又到了OIer退役了的季节 Day -1 今天是报到日. 中午11点多的动车.动车上和dick32165401和runzhe2000谈笑风生.顺便用dick32165401的流量把FA的第一集给看了. 下午抵达绍兴.绍兴比福州还热,太阳好像要把人烧焦了似的. 傍晚抵达绍一.住宿环境还不错,和福一比起来各有千秋.我觉得床.工作环境比不上福一宿舍,但洗澡的环境真的比福一好太多了.晚餐还是绍一那怀念的自助餐,我拿了一些爱吃的海鲜.(听说考试前吃海鲜有什么flag?) 吃完饭以后…
「NOI2017」蚯蚓排队 这题真的草 你考虑\(k\)这么小,每次合并两个串,增加的有用串的数量是\(O(k^2)\)的,暴力加入这些串,求一下这些串的Hash值,塞到Hash表里面去 这里采用类似双hash的方法,一个表进行拉表,另一个表存这个串的权值 然后就是暴力搞了 犯了个很sb的错误,我把每个蚯蚓长度都-1了,这样很容易爆Hash 不过我最开始是对每个长度的串开一个Hash数组搞,这样空间大,时间常数大,卡不过去,但不会因为长度为0的情况爆hash 最后回来的时候,一直爆Hash到自闭…
被虐爆了... T1 整数 题目传送门 Description 有一个整数 \(x\),有 \(n\) 此操作,每次操作为以下两种情况: 给出 \(a,b\),将 \(x\) 加上 \(a\times 2^b\) 给出 \(k\),询问 \(2^k\) 位置的值(二进制下第 \(k\) 位) \(b\le 30\times n,a\le 10^9\) Solution 做的时候特别愚蠢,写了一个 \(\Theta(30n\log n)\) 的代码交上去了... 实际上,我们可以直接暴力搞,我们可…
能看懂题就能想到正解.维护所有长度不超过k的数字串的哈希值即可,用链表维护一下蚯蚓间连接情况.由于这样的数字串至多只有nk个,计算哈希值的总复杂度为O(nk),而分裂的复杂度为O(ck^2),询问复杂度为O(Σ|s|).于是总复杂度为O(nk+ck^2+Σ|s|). 手写哈希注意插入元素时考虑清楚,如果没有哈希冲突不需要更新哈希使用的链表,所以特判一下. #include<iostream> #include<cstdio> #include<cmath> #inclu…
题面:洛谷 题解: 我们暴力维护当前所有队伍内的所有子串(长度k = 1 ~ 50)的出现次数. 把每个子串都用一个hash值来表示,每次改变队伍形态都用双向链表维护,并暴力更新出现次数. 现在考虑复杂度. 如果只有连接,没有断开,那么复杂度为不同的子串个数:50n(注意只要O(n)预处理前缀和后缀hash就可以做到O(1)得到一个子串的hash值) 如果有断开,那么最多就每断开一次就对应要再重连一次.所以复杂度最多增加2500 * 断开次数,而断开次数1e3.... 所以复杂度就是正确的了.…
https://www.lydsy.com/JudgeOnline/problem.php?id=4943 http://uoj.ac/problem/315 https://www.luogu.org/problemnew/show/P3823#sub 题面太长自己看吧orz. 参考:洛谷题解. 用链表暴力维护每个蚯蚓,每次合并和分离只对k*k的元素有影响,哈希一下存起来query时候比较就好了. 没了. (具体复杂度我不会证明,以及bzoj卡空间,正常的哈希表空间总觉得不能开如代码所示的这么…