摘要: 思路 注:上图只是个例子,其实建图时 $5$ 是不会连向 $6$ 的 \(Code\) #include<cstdio> #include<cstring> #include<iostream> using namespace std; int n , m , mp[55][55] , f[55 * 阅读全文
posted @ 2020-08-10 21:02 leiyuanze 阅读(155) 评论(0) 推荐(0)
摘要: 思路 考虑一个点要不要翻,如果它左边的点为 $1$,那么它必须翻 所以我们可以从左往右一列一列地翻 先枚举第 $0$ 列的状态 然后之后的列就确定了 判断一下最后一列是不是 $0$ 就行了 状压快速翻 \(Code\) #include<cstdio> #include<cstring> using 阅读全文
posted @ 2020-08-10 16:10 leiyuanze 阅读(90) 评论(0) 推荐(0)
摘要: 状压玩疯了 \(Code\) #include<cstdio> #include<iostream> #include<cstring> using namespace std; int f[16][1 << 16] , st[1 << 16] , t[16] , d[16] , up[16]; i 阅读全文
posted @ 2020-08-10 14:28 leiyuanze 阅读(147) 评论(0) 推荐(0)
摘要: 解析 考场时想多了,其实根本不用分阶段 一维状压 \(DP\) 就行了 可我没想清楚,加了个第几次去稳固一个点的阶段 然后时间就炸了!!! \(Code\) #include<cstdio> #include<cmath> #include<algorithm> using namespace st 阅读全文
posted @ 2020-08-10 14:20 leiyuanze 阅读(102) 评论(0) 推荐(0)
摘要: 题目大意 维护一个 $01$ 序列最长的连续相邻两个数不同的子序列的长度 解析 很裸的线段树题。。。 要维护的信息很多 区间长度 区间最左端点 区间最右端点 区间最长前缀 区间最长后缀 区间最终的答案 前三个直接从左右儿子获取即可 区间最长前缀先为左儿子的区间最长前缀 如果左儿子的区间最长前缀为左区 阅读全文
posted @ 2020-08-09 21:32 leiyuanze 阅读(129) 评论(0) 推荐(0)
摘要: 【模板】普通平衡树 平衡树模板 解析 虽然是平衡树模板,然而我要写的是权值线段树... 珍贵的好看的我自己写的标... \(Code\) #include<cstdio> using namespace std; const int N = 1e5 + 5 , Len = 2e7 + 10 , V 阅读全文
posted @ 2020-08-09 20:33 leiyuanze 阅读(118) 评论(0) 推荐(0)
摘要: 题目 洛谷等许多 \(OJ\) 都有 思路 考试题,今日无意又做了一次 然后发现自己读错题了······ 其实询问时只要 \(k\) 轮排序后的逆序对个数并不需要真的对序列进行更改 很显然 \(k\) 轮操作后每一个位置产生逆序对个数比 \(k\) 小的都没了,比 \(k\) 大的都减了 \(k\) 阅读全文
posted @ 2020-08-09 19:52 leiyuanze 阅读(221) 评论(0) 推荐(0)
摘要: 题目 求满足 \(i < j < k,a_i < a_j < a_k\) 的三元组的个数 思路 考虑三元组中间的数 那么它对答案的贡献是它前面比他小的数的个数乘上它后面比他大的数的个数 树状数组维护就好了 \(Code\) #include<cstdio> #include<cstring> #in 阅读全文
posted @ 2020-08-08 15:20 leiyuanze 阅读(230) 评论(0) 推荐(0)
摘要: 题目 自己上网搜 题解 发现每个数开方次数不超过六次 所以我们对于修改可以暴力更改(因为不能打标记) 查询仍然用上某种数据结构 但修改太暴力了 每个数开方到了小于等于 $1$ 时 我们就不需要再更改它了(无意义) 为了高效地修改,我们要用某种方法快速过掉一堆不需要修改的数 没错,并查集!! 它的祖先 阅读全文
posted @ 2020-08-08 07:47 leiyuanze 阅读(88) 评论(0) 推荐(0)
摘要: 题目 自己找 思路 大致过程见 JZOJ 3232. 【佛山市选2013】排列 而本题改成种类数 那么我们不需要 \(ln\) 这个东东 直接转移 \(f\) 改成种类数 对于可能转移过来的状态,直接加上他们的 \(f\) 值就行了 \(Code\) #include<cstdio> #includ 阅读全文
posted @ 2020-08-07 21:50 leiyuanze 阅读(86) 评论(0) 推荐(0)
摘要: 题目 解析 很神奇的一道题 显然,对于一种排列,相当于给出了数字 $1..n$ 的对应关系,且不重复不遗漏,刚好把 $1$ 到 \(n\) 又包含了一遍。 对,连边! 每个数向它对应的数连边,这样我们就得到了一幅图,且这幅图很有特点——全是简单环。 因为每个数的对应有且仅有一个,且不重复不遗漏,所以 阅读全文
posted @ 2020-08-07 21:34 leiyuanze 阅读(108) 评论(0) 推荐(0)
摘要: [FJOI2016]神秘数 题目 仍然自己上网搜~~~~~~ 思路 不得不说这题很~~~ 规律,永远是宇宙的终极杀器 我们考虑当前的集合可以表示的数的值域为 \([1..Max]\) 这段区间是连续的 为什么我们只考虑从 $1$ 开始连续的区间? 因为这样我们可以知道答案显然为 \(Max + 1\ 阅读全文
posted @ 2020-08-06 20:51 leiyuanze 阅读(119) 评论(0) 推荐(0)
摘要: 最大异或和 可持久化字典树经典题 题目网上自己找 来波模板 \(Code\) #include<cstdio> #include<iostream> using namespace std; const int N = 6e5 + 5; int n , m , a[N] , size , s[N] 阅读全文
posted @ 2020-08-06 15:39 leiyuanze 阅读(111) 评论(0) 推荐(0)
摘要: 题目 网上自己搜 解析 区间异或很容易想到可持久化字典树 但本题的关键是如何高效率求出以某个数为区间最大值时这个区间的范围 依题我们知道区间最长可到比它第二大的位置(开区间) 所以我们如果能找到每个数比他大的 这个问题就迎刃而解了 我们可以排序后从小到大算答案 用双向链表记录前一个比他大的和后一个比 阅读全文
posted @ 2020-08-06 11:19 leiyuanze 阅读(77) 评论(0) 推荐(0)
摘要: #区间第 \(k\) 小 \(Code\) #include<cstdio> #include<algorithm> using namespace std; const int N = 2e5; int n , m , rt[N + 5] , ind[N + 5] , a[N + 5] , len 阅读全文
posted @ 2020-08-05 21:37 leiyuanze 阅读(78) 评论(0) 推荐(0)