「NOI2017」游戏 解题报告】的更多相关文章

「NOI2017」游戏 \(d\)这么小,你考虑直接对\(d\)个东西暴力 枚举\(x\)为\(a\)或\(b\)(\(c\)就不用了,因为\(a,b\)已经包含\(c\))了,剩下的就是个\(2-sat\)问题了 但是你发现有个情况是,在若\(A\)即\(B\)时,如果\(B\)被\(ban\)了,那么\(A\)也要被\(ban\) 我们记录一下被\(ban\)的点,然后在球方案的时候判一下(不得不用topo排序了.. 但是其实也可以\(A\)连\(\lnot A\),就可以直接比较SCC编号…
「NOI2017」蔬菜 首先考虑流 可以从 \(s\) 流入表示得到蔬菜,流出到 \(t\) 表示卖出蔬菜,给每个蔬菜拆点,并给它它每天应得的蔬菜. 但是我们没办法直接给,注意到如果把变质看成得到并可以留给上一天,我们每天就可以得到变质的蔬菜并获得从后一天没用完的蔬菜,这就是建图的大体思路. 然后你发现这个东西需要对询问天数动态加点,加点后发现需要退流,可以暴力退 \(m\) 的流,复杂度是正确的. 期望得分 \(60\) 分 然后研究一下,发现退流是没有必要的,也就是说第 \(i\) 天选择的…
「NOI2017」整数 有一些比较简单的\(\log^2n\)做法 比如暴力在动态开点线段树上维护每个位置为\(0\)还是\(1\),我们发现涉及到某一位加上\(1\)或者减去\(1\)实际上对其他位的影响只有区间覆盖,通过线段树上二分可以得到区间覆盖的位置,然后暴力区间覆盖即可. 反正我这种菜鸡大常数写法只得到了68分.. 考虑利用势能,注意到如果同时改变加法和减法,势能很容易被\(b\)搞掉 如果分开维护加法和减法,把位置上的\(1\)的个数当做势能,可以发现,暴力修改是均摊\(O(n\lo…
「NOI2017」游戏 题目描述 小 L 计划进行 \(n\) 场游戏,每场游戏使用一张地图,小 L 会选择一辆车在该地图上完成游戏. 小 L 的赛车有三辆,分别用大写字母 \(A\).\(B\).\(C\) 表示.地图一共有四种,分别用小写字母 \(x\).\(a\).\(b\).\(c\) 表示. 其中,赛车 \(A\) 不适合在地图 \(a\) 上使用,赛车 \(B\) 不适合在地图 \(b\) 上使用,赛车 \(C\) 不适合在地图 \(c\) 上使用,而地图 \(x\) 则适合所有赛车…
LOJ_2305_「NOI2017」游戏 _2-sat 题意: 给你一个长度为n的字符串S,其中第i个字符为a表示第i个地图只能用B,C两种赛车,为b表示第i个地图只能用A,C两种赛车,为c表示第i个地图只能用A,B两种赛车. 另有d(d<=8)个字符x,表示这个地图三种车都能用.有m个要求,(i,hi,j,hj)表示如果在第i场用了hi,在第j场必须用hj. 求一种满足要求的方案,若无解输出-1. 样例输入 3 1 xcc 1 1 A 2 B 样例输出 ABA 分析:先思考如果没有万能的x该怎…
#2305. 「NOI2017」游戏 题目描述 小 L 计划进行 nnn 场游戏,每场游戏使用一张地图,小 L 会选择一辆车在该地图上完成游戏. 小 L 的赛车有三辆,分别用大写字母 AAA.BBB.CCC 表示.地图一共有四种,分别用小写字母 xxx.aaa.bbb.ccc 表示. 其中,赛车 AAA 不适合在地图 aaa 上使用,赛车 BBB 不适合在地图 bbb 上使用,赛车 CCC 不适合在地图 ccc 上使用,而地图 xxx 则适合所有赛车参加. 适合所有赛车参加的地图并不多见,最多只…
「NOI2017」游戏 题目背景 狂野飙车是小 L 最喜欢的游戏.与其他业余玩家不同的是,小 L 在玩游戏之余,还精于研究游戏的设计,因此他有着与众不同的游戏策略. 题目描述 小 L 计划进行$n$场游戏,每场游戏使用一张地图,小 L 会选择一辆车在该地图上完成游戏. 小 L 的赛车有三辆,分别用大写字母A.B.C表示.地图一共有四种,分别用小写字母x.a.b.c表示.其中,赛车A不适合在地图a上使用,赛车B不适合在地图b上使用,赛车C不适合在地图c上使用,而地图x则适合所有赛车参加.适合所有赛…
「ZJOI2016」旅行者 对网格图进行分治. 每次从中间选一列,然后枚举每个这一列的格子作为起点跑最短路,进入子矩形时把询问划分一下,有点类似整体二分 至于复杂度么,我不会阿 Code: #include <cstdio> #include <cctype> #include <cstring> #include <queue> #include <vector> #include <algorithm> using std::mi…
「HNOI2016」树 事毒瘤题... 我一开始以为每次把大树的子树再接给大树,然后死活不知道咋做,心想怕不是个神仙题哦 然后看题解后才发现是把模板树的子树给大树,虽然思维上难度没啥了,但是还是很难写的. 大值思路是对每个子树维护成一个大节点,存一些根啊,深度啊,到大节点根距离啊,节点编号范围啊之类的信息. 然后发现维护相对节点标号大小是个区间第k大,得对dfs序建一颗主席树 然后每次询问倍增跳一跳,讨论个几种情况之类的. ps:别吐槽名字 Code: #include <cstdio> #i…
「HNOI2016」序列 有一些高妙的做法,懒得看 考虑莫队,考虑莫队咋移动区间 然后你在区间内部找一个最小值的位置,假设现在从右边加 最小值左边区间显然可以\(O(1)\),最小值右边的区间是断掉的,但注意它是单调的 于是每个点假装向左边第一个小于它的位置连边,就可以处理出前缀和一样的东西,然后预处理后也是\(O(1)\)的 Code: #include <cstdio> #include <cctype> #include <algorithm> #include…