T1 工业题 这波行列看反就非常尴尬.....口糊出所有正解想到的唯独行列看反全盘炸列(因为和T1斗智斗勇两个半小时...) 这题就是肯定是个O(n+m)的,那就往哪里想,a,b和前面的系数分开求,前面系数显然是小学学过的走步数方法问题,排列组合搞掉就行,a,b分别是向下走和向右走的步数.然后会打快速幂,会打费马小定理,会组合数学就可以过掉.这里关于系数有两种不同求法. 第一个是打表出的规律,第二个是按照(i,j)(n,m)的位置求得. 1 #include<bits/stdc++.h> 2…
T1 异或 比较稳的切掉 观察数据范围,无法线性筛啥的,根号复杂度也会死,于是只能考虑$log$级 然后打表 发现当$n$为$2^i$时的答案是一个可递归数列: $1,3,7,15,31,63,127...$ 这样的话直接把$n$进行二进制拆分,然后累加$2^i$的答案就可以出来最终答案 1 #include<bits/stdc++.h> 2 #define int long long 3 using namespace std; 4 namespace AE86{ 5 inline int…
T1 a 跟入阵曲很像,但是忘记入阵曲这题的思路是什么了 这里再提一下,入阵曲是子矩阵和是$k$的倍数,这道题目是子矩阵和是在一段区间内$[L,R]$ 因为这道题$n$特别小,$m$较大,考虑复杂度为$O(n^2m)$的做法 那么按照入阵曲的思想,枚举行的上下边界,每次处理出这两行之间的前缀和,记为$sm_k$ 然后使用双指针,  $l,r$分别维护的是横向框出的这一段前缀和的合法的最左端点和最右端点 只要每次枚举找到这两个量,直接把$r-l+1$累加到$ans$里面就可以完成统记 1 #inc…
T1 队长快跑 本身dp就不强的小马看到这题并未反映过来是个dp(可能是跟题面太过于像那个黑题的队长快跑相似) 总之,基础dp也没搞出来,不过这题倒是启发了小马以后考试要往dp哪里想想 $dp_{i,S}$表示处理到i号水晶,其中选择的要摧毁的水晶A最小为S 正解思路应先考虑出$O(n^3)$的$dp$方程: $(A_i\leq B_i)dp_{i,A_i}=max(dp_{i-1,B_i+1},dp_{i-1,B_i+2}...dp_{i-1,MAX})+1$ $(A_i>B_i)dp_{i,…
T1 洛希极限 上来一道大数据结构或者单调队列优化$dp$ 真就没分析出来正解复杂度 正解复杂度$O(q+nm)$,但是据说我的复杂度是假的 考虑一个点转移最优情况是从它上面的一个反$L$形转移过来 然后维护一个冰茶姬,处理出$le,dw$数组就可以单调队列优化$dp$了 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #define in…
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 Dove打扑克 考场上打的动态开点线段树+并查集,考后发现自己像一个傻子,并查集就行.. 这几天恶补数据结构疯了 用树状数组维护后缀和,$siz_i$表示编号为$i$的牌堆的卡牌个数,并使用桶记录一下这种数量级的牌堆的个数 同时使用$set$维护一下还存在的牌堆的编号 在合并的时候按照题目原理对各种维护数组加加减减操作就行,注意在一类数量级的桶没有东西之后,要将$set$中的相应元素删掉 查询的时候遍历$set$中的元素,查询即可. 1 #include…
苟且Rank#1.第二次分机房结束. 得到了喘息一会的权利. 在最后两场考试中大脸skyh慷慨舍弃264分让出Rank#1的故事也十分感人 然而还是有很多东西值得思考. 虽说是反思,但是还是有一些地方值得适度的肯定(给疲惫的心灵一些勉励) 这几次考试,时间分配比较熟练合理,难易度判断也比较准确,骗分很到位. 但是主要的自然还是不足: 前几次考试,发挥极不稳定. Day7-8不知道发生了什么,考得是真的低. 然后Day9-10接连两个Rank#1把我自己都吓到了. 这四次考试的名次波动非常大,同时…
考场拼命$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 第零题 开场数据结构,真爽 对于这道题首先要理解对于一条链从上向下和从下向上走复活次数相等 (这可能需要晚上躺在被窝里面脑摸几种情况的样例) 然后就不难了,使用倍增,$bz[x][i]$表示节点$x$的第$2^i$级复活点位置 然后询问的话分别找到$s->lca$和$t->lca$的复活次数,是$2^i$ 然后判断一下$lca$两端最后的一对复活点间的距离是否大于$k$,是的话再加一次复活 1 #include<bits/stdc++.…