BZOJ5288 HNOI/AHOI2018游戏】的更多相关文章

首先将之间没有锁的房间合并.显然可达性具有传递性和反交换律(即若a能到达b,则b不能到达a). 考虑对每个房间找到其左右第一个(即与其最接近的)能作为起点到达它的房间.如果能求出这个,对此建两棵树,问题就变为终点是否在起点的子树内. 容易想到单调栈.不妨考虑求左边第一个.栈内维护当前房间左边能作为起点到达它的房间.一旦栈顶的房间不能再到达当前点,显然其也不能再到达之后的点.而如果栈顶的房间能到达当前点,栈里的其他点也一定可以,因为它们都能到达栈顶房间.于是一直弹栈至栈顶房间能到达当前房间即可.至…
原题传送门 \(n^2\)过百万在HNOI/AHOI2018中真的成功了qwqwq 先将没门分格的地方连起来,枚举每一个块,看向左向右最多能走多远,最坏复杂度\(O(n^2)\),但出题人竟然没卡(建议JSOI的出题人好好学学) #include <bits/stdc++.h> #define N 1000005 #define getchar nc using namespace std; inline char nc(){ static char buf[100000],*p1=buf,*…
https://www.lydsy.com/JudgeOnline/problem.php?id=5288 https://www.luogu.org/problemnew/show/P4436 https://loj.ac/problem/2508 看洛谷题解里面清一色的暴力,连唯一正解也是用了奇技淫巧才过(当然本题解参考了那个题解). 于是难受的我来简单说一下“正解”(如有错误请指出orz). 先从暴力开始,对于每个点我们暴力找到其能够到达的最大的区间[l,r]. 一个优化:我们在加入新的点…
问题描述 一次小G和小H在玩寻宝游戏,有n个房间排成一列,编号为1,2,...,n,相邻的房间之间都有一道门.其中一部分门上锁(因此需要有对应的钥匙才能开门),其余的门都能直接打开.现在小G告诉了小H每把锁的钥匙在哪个房间里(每把锁有且只有一把钥匙与之对应),并作出p次指示:第i次让小H从第\(S_i\)个房间出发到\(T_i\)个房间里.但是小G有时会故意在指令中放入死路,而小H也不想浪费多余的体力去尝试,于是想事先调查清楚每次的指令是否会存在一条通路. 你是否能为小H作出解答呢? 输入格式…
题目描述 https://lydsy.com/JudgeOnline/upload/201804/%E6%B9%96%E5%8D%97%E4%BA%8C%E8%AF%95%E8%AF%95%E9%A2%98.pdf 题解 这道题其实是让我们对于每个位置,求出它的一个合法区间. 先考虑如果所有的限制都满足y<=x的限制,说明如果我们如果从一个点出发,就不用来回跑腿了,直接一路向右走就好了. 那么这时对于每个点,它能扩展到的最左的点就是他向左遇到的第一个门,至于右端点,我们可以倒着扫描一个序列,维护…
题目 我们要求出\(l_i,r_i\)表示\(i\)最远能够到达的最左边和最右边的格子. 首先有一个比较简单的暴力,就是每次我们选择一个格子,然后从当前格子开始往左右暴力扩展,找到能够到达的最远的格子. 然后对于这个暴力,我们有一个小小的优化:就是假如我们从左往右处理,当前的点是\(i\),新扩展到了一个左边的节点\(j\),那么我们可以直接拿\(l_j\)赋给\(l_i\),如此重复.右边同理. 这样的暴力是可以被卡成\(O(n^2)\)的.但是题目数据水所以可以通过. 现在我们通过一些优化来…
P4424 [HNOI/AHOI2018]寻宝游戏 某大学每年都会有一次Mystery Hunt的活动,玩家需要根据设置的线索解谜,找到宝藏的位置,前一年获胜的队伍可以获得这一年出题的机会. 作为新生的你,对这个活动非常感兴趣.你每天都要从西向东经过教学楼一条很长的走廊,这条走廊是如此的长,以至于它被人戏称为infinite corridor.一次,你经过这条走廊时注意到在走廊的墙壁上隐藏着nn 个等长的二进制的数字,长度均为mm .你从西向东将这些数字记录了下来,形成一个含有nn 个数的二进制…
[BZOJ5288][HNOI2018]游戏(拓扑排序) 题面 BZOJ 洛谷 题解 去年省选的时候这题给我乱搞整过去整过去了,也是虐心了.... 所以当然是来讲正儿八经的正确做法啦. 很明显,我们需要预处理答案.设\(L[i],R[i]\)表示从\(i\)出发能够到达的区间范围. 现在我们要做的就是预处理这个\(L[i],R[i]\). 首先考虑一个点如何向外暴力拓展,如果它在拓展过程中碰到了一个已经被拓展过的节点,那么显然也可以到达那个点可以到达的所有位置,然后直接并一下就好啦. 然后现在我…
gugu  bz lei了lei了,事独流体毒瘤题 一句话题意:任选一个点开始,每个时刻向前走一步或者站着不动 问实现每一个点都在$T_i$之后被访问到的最短时间 Step 1 该题可证: 最优方案必然是从某一格开始后一直等着然后走一圈正好全部访问到 证明: 如果时间倒流那就是从时刻T开始每一时刻向前走或是停着不动,每个元素过了T[i]会消失 如果这样的话你肯定是马不停蹄往前走对吧 所以反过来就是上面的结论 Q.E.D 上面的结论还有其他正确的表示方法,该方法仅供参考 如果您能想出其他证明,那么…
[LG4437][HNOI/AHOI2018]排列 题面 洛谷 题解 题面里这个毒瘤的东西我们转化一下: 对于\(\forall k,j\),若\(p_k=a_{p_j}\),则\(k<j\). 也就是说若\(y=a_x\),则\(y\)排在\(x\)前面, 那么我们在原数组编号中\(a_x\)向\(x\)连边可以表示出这种拓扑关系. 那么我们连玩边后肯定是以\(0\)为根的一颗有根树,否则一定会形成一个环,无解. 贪心地想一下,对于权值最小的点,我们肯定让它尽量往前选,那么在它父亲选完后,我们…