摘要: Jennie 和常规的求逆序对差不多 在从根节点往下走的时候,我们必须要避免不在他子树内的点的影响 那就先减去他们呗。 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> 阅读全文
posted @ 2021-10-21 23:18 Simex 阅读(23) 评论(0) 推荐(0) 编辑
摘要: Jennie 经过一番思考,我们可以意识到最后数列里肯定只会有$0,1,-1$,这样我们就对此进行dp #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using na 阅读全文
posted @ 2021-10-21 23:12 Simex 阅读(31) 评论(0) 推荐(0) 编辑
摘要: Jennie 转移的时候要知道区间最值 那何不利用线段树来解决 \(O(nlogn)\) #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace 阅读全文
posted @ 2021-10-21 23:10 Simex 阅读(30) 评论(0) 推荐(0) 编辑
摘要: Jennie 因为要记录余数的问题,不能单纯追求最大 那么就加上一维来记录维数 再开一个数组记录是怎么转移的 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #includ 阅读全文
posted @ 2021-10-21 23:00 Simex 阅读(33) 评论(0) 推荐(0) 编辑
摘要: Jennie 搞出一个二维dp'还是比较显然的 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #include<algorithm> #define int long l 阅读全文
posted @ 2021-10-21 22:59 Simex 阅读(36) 评论(0) 推荐(0) 编辑
摘要: Jinnie 显然还是一个线性基的问题,那么很显然要用线性基 对于一堆石头$S_1,S_2,S_3 $,如果加入X会令异或值为0的话,那么显然我们可以拿出一块再把x放进去 这样只需要线性基检查能不能放,从大到小放就行。 这告知了我们求线性基可以考虑改变顺序 #include<bits/stdc++. 阅读全文
posted @ 2021-10-21 11:33 Simex 阅读(25) 评论(0) 推荐(0) 编辑
摘要: Jinnie 显然是一个线性基的问题,那么很显然要用线性基 想要知道所有的方案数,线性基的性质就是用其中的元素$xor$ 出来的元素保证互不相等 这样的话只要知道线性基内元素的数量就可以了 #include<bits/stdc++.h> #define int long long using nam 阅读全文
posted @ 2021-10-21 11:22 Simex 阅读(21) 评论(0) 推荐(0) 编辑