Noip模拟54 2021.9.16】的更多相关文章

T1 选择 现在发现好多题目都是隐含的状压,不明面给到数据范围里,之凭借一句话 比如这道题就是按照题目里边给的儿子数量不超过$10$做状压,非常邪门 由于数据范围比较小,怎么暴力就怎么来 从叶子节点向上$dp$,状态$i$表示每个儿子选/不选. 考虑找到那些点可以延伸到当前的$x$节点. 我们记录一下$x$的所有直接儿子$y$,开一个$vector:son_{i,j}$记录所有可以延伸到$i$节点的$j$ 转移的时候先看单点能否直接延伸到$x$,然后枚举任意两个$y,yy$,看看其子树有无两个点…
这次时间分配还是非常合理的,但可惜的是$T4$没开$\textit{long long}$挂了$20$ 但是$Arbiter$上赏了蒟蒻$20$分,就非常不错~~~ T1 F 直接拿暴力水就可以过,数据无法精心构造,根本卡不掉,除非测评姬像老奶奶(详情见这一篇) 考场经过 造个大的数据试试跑几秒........ woc,2.7秒,不行,还是得卡常....... (30min later.....) 终于1.4秒了,就这样吧,拿个60分走人.....不对,这题时限4秒........ 然后就比较自…
T1 你相信引力吗 对于区间的大小关系问题,往往使用单调栈来解决 这道题的优弧和劣弧很烦,考虑将其等价的转化 由于所有的合法情况绕过的弧都不会经过最高的冰锥, 又因为环可以任意亲定起点,这样可以直接把最大的点当作起点 那么我们所找的合法的答案就应该是: 在起点的右侧的冰锥配对,以及可以绕过来和起点配对的组合 这样就可以用单调栈维护,去重再开一个数组记录栈顶元素个数就行 1 #include<bits/stdc++.h> 2 #define LL long long 3 using namesp…
我愿称这场考试为STL专练 T1 世界线 巧妙使用$bitset$当作vis数组使用,内存不会炸,操作还方便,的确是极好的. 但是这个题如果不开一半的$bitset$是会炸内存的,因为他能开得很大,但是也有很大代价 相比bool是好的,所以这题要用一个节点池来存放节点卡内存限制 但是当时考试的时候还不知道有这种东西.. 考试时候的想法是: 因为发现如果暴力的话只用$floyd$循环找一遍无法将所有边找全,于是想到使用多次$floyd$ 记一个ans数组记录每一次新产生的连边,如果这一次的ans为…
T1 暴雨 放在第一道的神仙题,不同的做法,吊人有的都在用线段树维护$set$预处理 我是直接$dp$的,可能代码的复杂度比那种的稍微小一点 设$f[i][j][p][0/1]$表示考虑了前$i$列,里面的最大值高度是$j$, 并且后面还至少存在高度为$j$的土块,在前$i$列挖平了$p$个土块,积水的体积是奇数或者偶数的方案数 采用刷表更新$dp$值的方法,更新$f[i][j][k][u]$的所有可能到达的状态 可能有人问数组怎么开,因为$k \leq 26$所以最大值的哪一维只记录前$k+1…
T1 洛希极限 上来一道大数据结构或者单调队列优化$dp$ 真就没分析出来正解复杂度 正解复杂度$O(q+nm)$,但是据说我的复杂度是假的 考虑一个点转移最优情况是从它上面的一个反$L$形转移过来 然后维护一个冰茶姬,处理出$le,dw$数组就可以单调队列优化$dp$了 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #define in…
考场拼命$yy$高精度结果没学好$for$循环痛失$50pts$,当场枯死 以后一定打对拍,要不考后会... T1 石子游戏 首先要知道典型的$NIM$博弈,就是说如果所有堆石子个数的异或和为$0$则先手必输 那么这道题给出了取石子上限,那么每堆石子$\mod x+1$然后异或就可以知道谁必胜了 然后这道题就转化为如何求$\sum \limits_{i=1}^{n}\oplus a_i \mod(x+1)$. 分段考虑每一段$[k(x+1),(k+1)(x+1)]$,然后预处理一个$f$数组 $…
T1 电压机制 把题目转化为找那些边只被奇数环包含. 这样的话直接$dfs$生成一棵树,给每个点附上一个深度,根据其他的非树边都是返祖边 可以算出环内边的数量$dep[x]-dep[y]+1$,然后判断 如果在统计时使用差分的思想,可以复杂度降到$O(n)$,也可以用$set$多一个$log$都能过 1 #include<bits/stdc++.h> 2 using namespace std; 3 namespace AE86{ 4 inline int read(){ 5 int x=0,…
T1 交通 考场上想了一个$NPC$.应该吧,是要求出图里面的所有可行的不重复欧拉路 无数种做法都无法解出,时间也都耗在这个上面的,于是就考的挺惨的 以后要是觉得当前思路不可做,就试着换一换思路,千万不能在一道题上花费太多时间 正解是一个关系的判断 每一条边选还是不选都会跟另一条边产生连锁关系,那么给他们编上号建边,用并查集判断环就行 然后每个环上选择$n$个不相邻的点,总共$2^{环数}$种方案 1 #include<bits/stdc++.h> 2 #define ll long long…
新机房首模拟变倒数 T1 柱状图 关于每一个点可以做出两条斜率分别为$1,-1$的直线, 然后题意转化为移动最少的步数使得所有点都在某一个点的两条直线上 二分出直线的高度,判断条件是尽量让这条直线上部的点和下部的点个数尽量相等 这一部分直接使用动态开点线段树维护即可, 具体实现是每个点左右两边分别维护一棵树,开始的时候吧所有点都放在右边树上 然后扫每一个点作为最高柱子的情况,同事把右树上的点移动到左树上 1 #include<bits/stdc++.h> 2 #define LL long l…