随笔分类 -  题库—BZOJ

上一页 1 2 3 4 5 6 7 8 ··· 12 下一页
摘要:题意 "题目链接" Sol 这题挺考验阅读理解能力的。。 如果能读懂的话,不难发现这就是在统计有多少入度为$0$的点 缩点后判断一下即可 当然有一种例外情况是$1 3, 2 3$,也就是存在一个孤立点,判掉即可 判断的时候应当满足三个条件:所在联通块大小为$2$,入度为0,所有指向的点入度均大于$2 阅读全文
posted @ 2018-10-22 08:19 自为风月马前卒 阅读(371) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 震惊,HNOI竟出NOI原题 直接在反图上贪心一下。 cpp // luogu judger enable o2 // luogu judger enable o2 include define Pair pair define MP(x, y) make_pair(x, 阅读全文
posted @ 2018-10-19 18:03 自为风月马前卒 阅读(306) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 非常妙的一道题。 首先不难想到拓扑排序,但是直接对原图按$k$从小到大拓扑排序是错的。因为当前的$k$大并不意味着后面的点$k$也大 但是在反图上按$k$从大到小拓扑排序就是对的。为什么呢?因为题目中给出的条件是下限, 而在反图上拓扑排序就相当于卡着下限做,因此一定是最优 阅读全文
posted @ 2018-10-19 14:33 自为风月马前卒 阅读(314) 评论(0) 推荐(1)
摘要:题意 "题目链接" Sol 第一问的答案是$2^M$,因为每个位置只有$0 / 1$两种情况,最优情况下一定是每个位置代表着一个长度为$K$的字符串 考虑相邻两个字符串之间的转化,第二个字符串可以由第一个字符串在后面加$0 / 1$转移而来,因为转移关系会形成环,所以我们只需要找一条欧拉回路即可,每 阅读全文
posted @ 2018-10-15 14:37 自为风月马前卒 阅读(644) 评论(1) 推荐(2)
摘要:题意 "题目链接" Sol Orz xudyh F个毛T啊。。直接bitset一波就赢了啊。。。(~~虽然复杂度很假~~) 就是记录匹配串中每个元素出现的位置,将第$i$个位置的bitset右移$i$位后与起来 最后找1出现的位置就行了 复杂度:$O(\frac{n^2}{32})$ cpp inc 阅读全文
posted @ 2018-10-10 09:48 自为风月马前卒 阅读(814) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 很显然的一个dp方程 $f_i = min(f_j + (sum_i sum_j 1 L)^P)$ 其中$sum_i = \sum_{j = 1}^i len_j + 1$ 这个东西显然是有决策单调性的。 单调队列优化一下 我好像已经做过三个这种类型的题了,而且转移的时候 阅读全文
posted @ 2018-10-09 21:27 自为风月马前卒 阅读(323) 评论(0) 推荐(1)
摘要:题意 "题目链接" Sol 结论:每次选择的区间一定满足首位元素相同。。 仔细想想其实挺显然的,如果不相同可以删掉多着的元素,对答案的贡献是相同的 那么设$f[i]$表示到第$i$个位置的最大价值,$s[i]$表示到$i$位置,$a[i]$的出现次数,转移方程为 $$f[i] = max(f_{j 阅读全文
posted @ 2018-10-09 16:02 自为风月马前卒 阅读(286) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 比较套路的一个题。 第一问二分答案check一下 第二问设$f[i][j]$表示前$i$个数,切了$j$段的方案数,单调队列优化一下。 转移的时候只需要保证当前段的长度小于最大限度即可。 cpp include using namespace std; const int 阅读全文
posted @ 2018-10-09 09:10 自为风月马前卒 阅读(294) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 挺显然的树形背包吧。。 $f[i][j]$表示$i$这棵子树中答案为$j$的最大价值,转移的时候背包一下。。 第一次写树形背包,犯了两个错误 1. 枚举根节点的贡献时需要倒着枚举 2. 转移时需要注意$k = 0$的情况,不要出现重复转移 阅读全文
posted @ 2018-10-09 08:22 自为风月马前卒 阅读(384) 评论(1) 推荐(0)
摘要:题意 "题目链接" Sol 二维矩阵hash,就是对行和列分配一个不同的base,然后分别做一遍hash,这样会减少冲突的概率。 预处理出所有大小为$A \times B$的矩阵的hash值,判断一下即可 ~~mdzz居然卡常数~~ cpp include define ull unsigned i 阅读全文
posted @ 2018-10-08 14:29 自为风月马前卒 阅读(373) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 挺套路的一道题 首先把式子移一下项 $x \oplus 2x = 3x$ 有一件显然的事情:$a \oplus b \leqslant c$ 又因为$a \oplus b + 2(a \& b) = c$ 那么$x \& 2x = 0$ 也就是说,$x$的二进制表示下不能 阅读全文
posted @ 2018-10-07 10:25 自为风月马前卒 阅读(417) 评论(0) 推荐(1)
摘要:题意 "题目链接" Sol 又是一道非常interesting的题目 很显然要按位考虑 因为最终答案是xor之后or,所以分开之后之后这样位上1的数量是一定是偶数,否则直接加到答案里面 同时,这里面有些部分是不能切的(分开之后会产生奇数个1),把这些位置记出来 如果能保证每次都有大于$m$个位置能切 阅读全文
posted @ 2018-10-05 21:14 自为风月马前卒 阅读(286) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 神仙二分Orz 首先二分一个答案,表示假设询问的位置为$x$,把$ = x$的看成$1$,$ define Pair pair define MP(x, y) make_pair(x, y) define fi first define se second using n 阅读全文
posted @ 2018-10-02 22:23 自为风月马前卒 阅读(289) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 按照dls的说法,一般这一类的题有两种思路,一种是枚举一个点$M$,然后check它能否成为答案。但是对于此题来说好像不好搞 另一种思路是枚举最小的区间长度是多少,这样我们把所有区间按长度排序后可以二分出满足条件的最短的区间长度 观察后不难发现,较长区间的长度一定是随着短 阅读全文
posted @ 2018-10-01 19:44 自为风月马前卒 阅读(269) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 设$sum[i]$表示$1 i$的异或和 首先把每个询问的$x \oplus sum[n]$就变成了询问前缀最大值 可持久化Trie树维护前缀xor,建树的时候维护一下每个节点被遍历了多少次 注意设置好偏移量,不然询问区间为$[1, 1]$的时候可能挂掉 cpp incl 阅读全文
posted @ 2018-09-30 21:56 自为风月马前卒 阅读(293) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 首先维护出前缀xor和后缀xor 对每个位置的元素插入到Trie树里面,每次找到和该前缀xor起来最大的元素 正反各做一遍,取最大。 记得要开log倍空间qwq。。 cpp include using namespace std; const int MAXN = 4e5 阅读全文
posted @ 2018-09-30 19:28 自为风月马前卒 阅读(404) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 直接倒着并查集一波就行了 cpp include // define int long long using namespace std; const int MAXN = 1e6 + 10; inline int read() { char c = getchar(); 阅读全文
posted @ 2018-09-28 15:57 自为风月马前卒 阅读(398) 评论(1) 推荐(1)
摘要:题意 题目链接 Sol 如果给出的树是链的话显然就是LIS 不是链的时候直接当链做,每个节点维护一个multiset表示计算LIS过程中的单调栈 启发式合并即可 时间复杂度:$O(nlog^2n)$ 阅读全文
posted @ 2018-09-21 21:28 自为风月马前卒 阅读(439) 评论(0) 推荐(0)
摘要:题意 题目链接 Sol 分块打表,非常好的思想。 对于这种求$[A, B]$区间内xxx的数的个数,然后$B$又不算是特别大的题,考虑分段打表 每个块的大小为$10^5$,打$3 * 10^3$个。然后块内的暴力查,块外的暴力算 /* */ #include<cstdio> #include<cst 阅读全文
posted @ 2018-09-20 12:16 自为风月马前卒 阅读(1207) 评论(0) 推荐(0)
摘要:题意 题目链接 Sol 很nice的决策单调性题目 首先把给出的式子移项,我们要求的$P_i = max(a_j + \sqrt{|i - j|}) - a_i$。 按套路把绝对值拆掉,$p_i = max(max_{j = 1}^i (a_j = \sqrt{i - j}), max_{j = i 阅读全文
posted @ 2018-09-20 10:47 自为风月马前卒 阅读(259) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 8 ··· 12 下一页

Contact with me