随笔分类 -  其他

上一页 1 2 3 4 5 6 7 8 9 ··· 33 下一页
摘要:由于只有取 max 标记,所以直接在线段树上维护就行. 然后取前 k 大的话就用一个堆来维护四元组 $(l,r,v,pos)$ 表示区间 $[l,r]$ 的最小值为 $v$ ,位置为 pos. 查询的时候按照 $v$ 递增的顺序取出堆顶,然后按照 pos 分裂,再扔回堆里就行了. code: #in 阅读全文
posted @ 2020-06-22 10:41 EM-LGH 阅读(193) 评论(0) 推荐(0)
摘要:显然可以直接凑左面全是左括号,右面全是右括号的情况. 然后区间翻转就用 splay 模拟好了. splay 的时候一定注意一点: 如果没有调用 find(x),就一定要手动把 x 及其祖先的节点 pushdown. code; #include <bits/stdc++.h> #define N 1 阅读全文
posted @ 2020-06-18 09:53 EM-LGH 阅读(146) 评论(0) 推荐(0)
摘要:省队选拔前复习一下线性基. 证明不会,永远都不会,学习证明是不可能的 有如下结论: 1. 线性基大小是固定的,不会因为加入顺序不同而改变. 2. 设线性基大小为 k,则一共有 $2^k$ 种不同的异或结果. 3. 每种异或结果出现次数恰好为 $2^{n-k}$. 4. 线性基内的数随便异或线性基也不 阅读全文
posted @ 2020-06-17 10:17 EM-LGH 阅读(181) 评论(0) 推荐(0)
摘要:自己独立想出来的,开心. 首先,对于 $x$ 不等于 $y$ 的情况,显然只限制前缀/后缀. 然后如果没有 x 与 y 相等的情况的话我们完全可以枚举总的 1 的个数,然后限制后缀的就可以转化成限制前缀的. 如果引入 x 与 y 相等的情况,也就是说要求前缀或后缀都填满也按照上述方式处理即可. 但是 阅读全文
posted @ 2020-06-16 18:58 EM-LGH 阅读(214) 评论(0) 推荐(0)
摘要:往届学长的一场比赛. 总结:三道水题 haha! Task 1 省选 jloi.cpp/in/out 给你一个字符串,你每次只能删除一个回文串,问你最少需要几步将字符串删完,或输出无解. 题解:显然,答案最多为 2,而如果这个串本身就不是回文串答案就是 1,所以难点就是判断无解的情况. 手画几组发现 阅读全文
posted @ 2020-06-16 14:20 EM-LGH 阅读(155) 评论(0) 推荐(0)
摘要:这道题中我们要考虑这么几件事情: 1.前 2 个数是什么.2.是否已经合法了. 3.是否顶上界.4.是否有4/8 那么设状态的时候就是 $f[num_{i-1}][num_{i-2}][state][l][4][8]$ 记忆化搜索的时候如果搜过该状态且补丁上界就返回. 然后转移的时候注意:1.是否新 阅读全文
posted @ 2020-06-12 10:50 EM-LGH 阅读(153) 评论(0) 推荐(0)
摘要:这道题细节并不算太多,但是求方案数的时候一定不要乱取模! 如果非要取模的话也要遵循欧拉定理. code: #include <bits/stdc++.h> #define N 57 #define ll long long #define mod 10000007 #define setIO(s) 阅读全文
posted @ 2020-06-12 09:48 EM-LGH 阅读(148) 评论(0) 推荐(0)
摘要:数位dp. 细节真的很多. 1. 考虑清楚每个数的贡献. 2. 0 特殊考虑. code: #include <bits/stdc++.h> #define ll long long #define setIO(s) freopen(s".in","r",stdin) using namespace 阅读全文
posted @ 2020-06-12 08:43 EM-LGH 阅读(163) 评论(0) 推荐(0)
摘要:基本上把数位dp那一套给忘了,今天重学一遍. 感觉采用递推的方式还是蛮方便的,然后要注意几个细节: 1. 通常算 f(x+1)=calc(1,x),这样更方便算一些. 2. 每种小于最大长度的所有结果都要累加. 3. 很多时候不要忘记 0 的贡献. 4. 要特判前缀合不合法. code: #incl 阅读全文
posted @ 2020-06-11 21:53 EM-LGH 阅读(159) 评论(0) 推荐(0)
摘要:写代码时间:30-40min,调试时间:5min 我们发现,如果一个城市的一个点被选,则该城市其他点也都必须被选,可以考虑用点分治来解. 假设当前分治到的重心为 $x$,则只需考虑必经 $x$ 的连通块即可. 我们可以维护一个队列,开始的时候将重心的颜色放入,然后对每一种颜色的所有节点进行扩展:向上 阅读全文
posted @ 2020-06-11 14:44 EM-LGH 阅读(234) 评论(0) 推荐(0)
摘要:感觉是比较基础的子集 DP. 令 $dp[S]$ 表示点集 $S$ 构成的价值和,然后枚举最后一个区域就行. 也就是 $dp[S]=\sum_{T \subseteq S } dp[S-T] \times (\frac{sum[T]}{sum[S]})^k$ 化简得 $dp[S] \times su 阅读全文
posted @ 2020-06-10 15:45 EM-LGH 阅读(210) 评论(0) 推荐(0)
摘要:满分做法需要用到很神仙的优化方式,这里只给出 部分分的做法. 想出了 70pts 做法还是十分开心的. 开始的时候先想了一个 35 pts 做法: 考虑连续段,那么连续段的长度不会超过 $K$,高度不会超过 $K$,所以 $K \leqslant 9$ 的状态都能搜出来. 然后令 $f[i]$ 表示 阅读全文
posted @ 2020-06-10 11:33 EM-LGH 阅读(227) 评论(0) 推荐(0)
摘要:朴素的矩阵乘法时间复杂度会爆炸,但是我们发现矩阵乘法的形式是一个 $(1 \times n) \times (n \times n)$ 的形式. 所以如果提前预处理出来 $(n \times n)$ 矩阵的 $2^i$ 次幂,然后每次询问的时候二进制拆分,复杂度就是 $O(n^2 \log 1e9) 阅读全文
posted @ 2020-06-10 10:02 EM-LGH 阅读(235) 评论(0) 推荐(0)
摘要:由于集合内的数不能有交集,所以显然是子集 dp 的形式. 但是这道题为了不算重不太能用 FWT 优化,直接暴力 dp 的话是 $O(3^{18})$ 的,洛谷上开 O2 能过. 转移 DP 的时候一定注意是 $many[i] \times f[j]$,而不是 $f[i] \times f[j]$,否 阅读全文
posted @ 2020-06-10 09:21 EM-LGH 阅读(174) 评论(0) 推荐(0)
摘要:按照套路,考虑将数字从小到大插入到序列中. 令 $f[i][j]$ 表示将 $1$ ~ $i$ 插入到序列中,形成了 $j$ 对不合法的方案数. 然后考虑将 $i+1$ 插入时的情况: 1. 插入到不合法的空位中,消掉一个不合法. 2. 插入到合法的空位中 3. 插入到 $i$ 旁边,形成一个不合法 阅读全文
posted @ 2020-06-09 21:07 EM-LGH 阅读(128) 评论(0) 推荐(0)
摘要:求 $,\sum_{x=0}^{\infty} get(l,r,x)get(l_{2},r_{2},x),q$ 组询问. 由于这里的 $get$ 会涉及到两个区间,所以十分不好处理. 那么我们就要想办法把这个式子转化成只和一个区间有关的东西. 考虑拆成前缀和,即 $(s[r]-s[l-1])\tim 阅读全文
posted @ 2020-06-09 16:54 EM-LGH 阅读(164) 评论(0) 推荐(0)
摘要:这场比赛的题都偏水,比赛的时候切了 A ~ E A Matrix Game 刚开始看错题了,以为是不能相邻,然后就不会了. 又读了一遍题,发现不能同行或同列,那就判断一下奇偶性就行了. code: #include <bits/stdc++.h> #define ll long long #defi 阅读全文
posted @ 2020-06-09 16:03 EM-LGH 阅读(142) 评论(0) 推荐(0)
摘要:调都没调就 1 A 了,开心. 一些细节: 1. 当 3 个点中强制一个点不选时,又有 $(h_{i},h_{j})$ 这种限制时直接跳过即可. 2. 当有 $(h_{i},h_{j})$ 且 $i$ 这个位置存在,但是 $j$ 不存在的时候显然是不可以选择 $i$ 的,那就直接让 $i$ 连 $i 阅读全文
posted @ 2020-06-09 15:29 EM-LGH 阅读(145) 评论(0) 推荐(0)
摘要:一共有 60 次询问机会,显然可以用 30 次来确定序列的最大值(二分) 然后再用 30 次随机获得 30 个位置的值,那么有 $a_{j}=a_{i}+k\times d$,($d$ 为公差) 那么 $d$ = $gcd(d1,d2,d3,....dn)$,故将 30 个数排序,然后求一下两两之间 阅读全文
posted @ 2020-06-09 14:01 EM-LGH 阅读(163) 评论(0) 推荐(0)
摘要:思路非常巧妙,令 $f[i][j]$ 表示前 $i$ 个数,最大值不大于 $j$ 的权和. 转移的话枚举最大值出现的第一个位置,乘上该位置对应的贡献,然后发现最大值将 $1$ ~ $i$ 分成了两半. 然后两个部分又是互不干扰的子问题,转移一下就行. 把细节都提前考虑清楚后都不用怎么调. code: 阅读全文
posted @ 2020-06-09 13:34 EM-LGH 阅读(149) 评论(0) 推荐(0)

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