NOI 2018 你的名字】的更多相关文章

[LOJ 2720][BZOJ 5417][UOJ 395][NOI 2018]你的名字 题意 给定一个大串 \(S\) 以及 \(q\) 次询问, 每次询问给定一个串 \(T\) 和区间 \([l,r]\), 求 \(T\) 中有多少本质不同的子串不是 \(S[l:r]\) 的子串. \(|S|\le 5\times 10^5,q\le 10^5,\sum|T|\le10^6\). 题解 普通的码农字符串题... 获得成就: \(40\texttt{min}(2400\texttt{s})\)…
因为机房里的小伙伴都在看<你的名字.>而我不想看 所以来写了这道题... 给一个 $S$ 串,$q$ 次询问,每次一个 $T$ 串,问 $T$ 有多少没在 $S[l,r]$ 中以子串形式出现过的本质不同的子串 $|S|,q \leq 5e5,\sum |T| \leq 5e5$ sol: 容斥一下就变成了 $T$ 与 $S[l,r]$ 有多少本质不同的公共子串 首先把 $T$ 串在 $S$ 串上跑,跑不动就跳 $parent$,这样可以预处理出 $T$ 的每一个前缀能在 $S[l,r]$ 中匹…
题目大意:略 令$ION2017=S,ION2018=T$ 对$S$建$SAM$,每次都把$T$放进去跑,求出结尾是i的前缀串,能匹配上$S$的最长后缀长度为$f_{i}$ 由于$T$必须在$[l,r]$上匹配,设现在能匹配的长度为$len$,在后缀自动机的$x$点,添加一个字符$c$,则$trs[x][c]$的$right$集合中必须包含$endpos\in[l+len,r]$,这个操作可以用线段树合并实现 否则$len$就要缩短,直到$len$缩短到$dep[pre_{x}]$,$len$如…
转眼离 NOI 2018 已经过了一个星期了,退役的我还是随便来水水吧. 语法.错字之类的可能会很多,但是我也不拘这点小节了. 恭喜 yww, zjt, sk 进队,zwl, myh au , yay 和 sbypl ag ..我们全都进前 100 了呢.. 开幕式: 我以前一家11口人很穷,所以就立志要搞一个能吸金的组织 于是就有了这个什么CCF 一做就是22年,期间啊国家没有给我们一分钱,全靠我们自己骗钱,资本主义吃枣药丸 我们就弄了个CCF会员,每年定期交钱,只有一年参加所有的赛事才能回本…
[LOJ 2718][UOJ 393][BZOJ 5415][NOI 2018]归程 题意 给定一张无向图, 每条边有一个距离和一个高度. 再给定 \(q\) 组可能在线的询问, 每组询问给定一个点 \(v\) 和一个高度 \(h\), 鸭子德可以先无需花费地在高度大于 \(h\) 的边上任意行动, 然后可以在任意点开始以花费等于距离的模式行动. 问最小的花费. \(|V|\le 2\times 10^5,|E|\le 4\times 10^5,q\le 4\times 10^5,h\le 10…
[LOJ 2721][UOJ 396][BZOJ 5418][NOI 2018]屠龙勇士 题意 题面好啰嗦啊直接粘LOJ题面好了 小 D 最近在网上发现了一款小游戏.游戏的规则如下: 游戏的目标是按照编号 \(1\)~\(n\) 顺序杀掉 \(n\) 条巨龙,每条巨龙拥有一个初始的生命值 \(a_i\) .同时每条巨龙拥有恢复能力,当其使用恢复能力时,它的生命值就会每次增加 \(p_i\),直至生命值非负.只有在攻击结束后且当生命值恰好为 \(0\) 时它才会死去. 游戏开始时玩家拥有 \(m\…
刚中考完那段时间比较无聊,报名了一个同步赛,报完名才发现成绩单是要挂到网上的,而且因为报的早给了一个很靠前的考号...那布星啊,赶紧学点东西,于是在一周内学了网络流,Treap以及一些数论. Day1: 作为一个全国的信息学组织,官网竟然卡成这样,按理说OI选手应该学做网站也会简单一点吧...无法接受.jpg.终于还是在9点前拿到了题.浏览一遍题面感觉只有第一题比较可做,T2T3的暴力也不是很难打? 归程:https://www.luogu.org/problemnew/show/P4768 看…
Description 传送门 Solution 65分做法 先求出每个点到\(1\)号点的最短路,记为\(d[i]\).然后按照海拔从大到小依次加边,并查集维护每个连通块中\(d[i]\)的最小值,并同时回答询问. 70分做法 形态为树,以\(1\)为根,询问时向上倍增. 满分做法 结合上两种做法,按照海拔建出Kruskal重构树,求出每个点子树中的\(d[i]\)最小值,询问时向上倍增. Code #include <queue> #include <cstdio> #incl…
题面 清新友好的题目 跑一个最短路,然后对海拔建Kruskal重构树,从最后接上去的边(最低的一个)开始DFS一下处理子树里路程的最小值. 询问是每次在重构树上倍增找到深度最浅的海拔高于当天水位线的节点,其子树内的点必定可以通过乘车互相到达. #include<queue> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ,M=,X=,inf=2e9; s…
题意理解错了... 一把剑打一条龙,打了$x$次后如果龙不死,你就Game Over了. 显然,面对每条龙使用的剑是固定的,如果所有龙中有一条没打死你就挂了. 可以知道,可行的答案集合就是所有龙的可行集合的交集. 考虑当前面对第$i$条龙,若要打死它,$x$满足条件:$a_{i} - x * v_{i} + y * p_{i} = 0$,其中$a$是血量,$v$是攻击力,$p$是恢复力,$y$是某非负整数. 可以把它转化为同余式:$a_{i} \equiv x * v_{i} (mod \; p…