摘要: 传送门 现在给定你一个字符串 s 以及一个整数 k,请求出 s 的字典序最小的长度为 k 的子序列。 利用单调栈维护一个栈 如果栈顶元素字典序大于当前字符的字典序,而且剩下的字符足够使得栈里的元素长度为k个,那么就把栈顶元素pop掉,而加入当前字符。 同理可以维护最大的那个字典序 #include 阅读全文
posted @ 2020-08-09 13:29 Emcikem 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 传送门 就是求生成树的个数 在于建图,建立无向图,如果说两点之间有点,就不能建图,否则,两点之间建立边 也就是说点与点之间最多只有一条边,然后最多能构成一个完全图 首先判断两点之间的距离是否满足,然后判断三点是否贡献 最后利用矩阵树定理求解即可 #include <iostream> #includ 阅读全文
posted @ 2020-08-07 16:40 Emcikem 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 传送门 给出n和m表示矩阵大小,矩阵的值是$gcd(i,j)$ 再给出k个长度的序列,请问,这个序列是否在矩阵中出现过 对于在n*m的矩阵找,那么必定需要先找到横坐标,然后在这个横坐标里找k个数字 发现如果说横坐标是$lcm(a_i)$,是可能存在解的 假设这一行存在序列$[x + i, x + i 阅读全文
posted @ 2020-08-05 14:08 Emcikem 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 令f(x)表示每个点的权值,初始化都是0 操作: 令f(x) = w, 且所有点y的值 + w - dis(x, y) f(x) = min(f(x,) 0); 查询f(x); 设计到的操作有 区间修改 区间查询 对于第一个操作,修改某个点的值,然后把所有点都加上w,再减去与这个点的距离。明显无法直 阅读全文
posted @ 2020-08-03 10:30 Emcikem 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 建立两个线段树,第一个线段树是维护边的起点,即出边,第二个线段树维护边的终点,即入边 同时对每个线段树上的点命名,叶子节点的命名用$[1,n]$即可,其他用线段树建立的顺序命名。 比如对于第一棵线段树的建立 在建立过程中,同时add边权为0的边,比如编号$n + 1$的点到$n+2$的点建立边,边权 阅读全文
posted @ 2020-08-02 10:21 Emcikem 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 由hdu多校自闭场衍生出的几题 题目1 求$$\sum_nF_ik (\mod 10^9 + 9)$$ 感觉像是矩阵快速幂,其实不是 \(F_{n} = \frac{(\frac{1+\sqrt5}{2})^n- (\frac{1-\sqrt 5}{2})^n}{\sqrt 5}\) 因为$3830 阅读全文
posted @ 2020-07-21 21:01 Emcikem 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 传送门 题意是给出一个n*n的矩阵,表示每回合如果有居民就生产的粮食数,以及一个起点x,y,然后主人公可以没回合进行选择,是移动还是建造城市,如果建造城市,那么主人公就不能再移动,也就是说,只能建造一个城市,然后在这个城市进行生产粮食,最后得到人口,再派遣到周围去生产粮食。求得到人口为9时的最小回合 阅读全文
posted @ 2020-07-20 10:30 Emcikem 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 特别简单的题 随便搞搞就能过吧,根据抛物线顶点和另外一个点,就可以求出抛物线的方程,然后再用一般式求出直线方程 函数就是抛物线减去直线,区间就是$[p_2.x,p_3.x]$,然后自适应辛普森积分积分一下就行了 抛物线方程$y = Ax^2 + Bx + C$,直线方程$y = Kx + b$ #i 阅读全文
posted @ 2020-07-17 10:20 Emcikem 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 传送门 给出一个无向图,已知连接情况和每条边上的费用。 先给出q个查询,每次查询规定了每条边的容量都为$\frac$,求出每次查询时,从源点1到汇点n,流量为1的最小费用值 因为容量一样,那么每个增广路的流量都是$\frac\(,也就是说需要\)\frac$条增广路,才能使得总流量为1 考虑扩大容量 阅读全文
posted @ 2020-07-15 21:29 Emcikem 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 设有$n$个对象,$G$是这$n$个对象上的置换群,用$m$种颜色涂染着$n$个对象,每个对象涂一种颜色,问有多少种染色方案 \[ M = \frac{1}{|G|}\sum_{i = 1}^{|G|}m^{c(\sigma_i)} \] \(G = {\sigma_1,\sigma_2,\dots 阅读全文
posted @ 2020-07-11 09:51 Emcikem 阅读(431) 评论(0) 推荐(1) 编辑
该文被密码保护。 阅读全文
posted @ 2020-07-09 13:56 Emcikem 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 传送门 和我上一篇博客的思路很像,区别在于每一个任务的$s_i,e_i$不一样,这题的$e_i - s_i$很大,所以无法直接全部进行建立 那么考虑对其进行离散化,也就是或对于区间[l,r]的作为一个结点,然后按照前面的方法去建立 对于第一层边的建立,容量就是烤肉数 * 单个烤肉的时间 第二层边的建 阅读全文
posted @ 2020-07-07 14:28 Emcikem 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 传送门 网络流主要还是在于如何去建图,就比如这题 有n个任务,m个机器,每个任务有3个值,工作时间,起始时间,终止时间。 建图思路是以s = 0为源点,t = 1001为汇点。 最多有500天,也就是说,可以编号0位源点,[1,500]是时间节点,[501 ,1000]是任务节点,1001是汇点 先 阅读全文
posted @ 2020-07-07 10:49 Emcikem 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 传送门 以前博弈论都是靠找规律,这个题给我了新的思路,就是如果说博弈论里面的操作是对数字操作,那么可以采用递推的形式 先初始化$\sqrt(n)$的数据,然后有种杜教筛的思想,对于$n > N$时,才回去继续查找,而在求dp[n / j]时,继续查看,n / j 是否 < N 设dp[i], 如果d 阅读全文
posted @ 2020-07-01 10:54 Emcikem 阅读(170) 评论(0) 推荐(0) 编辑
摘要: CDQ分治和整体二分都是基于分治思想的,把复杂的问题拆成许多可以简单求解的子问题,但必须是离线的 普通分治 一维偏序 时间复杂度$O(nlogn)$ 逆序对,树状数组或者归并排序去求 注意用树状数组时离散化一下,即可。先初始化id,然后排完序后再赋值排名就行了 void MergeSort(int 阅读全文
posted @ 2020-06-28 22:15 Emcikem 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 传送门 很棒的题。 有两个序列a和b,长度都为n,对于a序列需要知道区间的最大值,对于b序列需要知道区间的最小值 求出符合式子 \(max_{i = l}^ra_i = min_{i = l}^rb_i\) 的所有区间个数。 方法很简单,用st表分别维护a序列的最大值的b序列的最小值,明显,a序列的 阅读全文
posted @ 2020-06-27 18:32 Emcikem 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 传送门 就是简单的ST表问题+ LCA,用ST表预处理好连续区间的LCA,然后进行查询 注意HDU是多组输入,把相应的值清零即可。 LCA采用倍增法,lg是常数优化。 ST表用模板,维护$[i,i + 2^j - 1]$这个区间的LCA 时间复杂度为预处理$O(nlogn)$ 查询$O(mlogn) 阅读全文
posted @ 2020-06-27 09:09 Emcikem 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 多项式乘积 阅读全文
posted @ 2020-06-26 11:13 Emcikem 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 函数值是小于或等于N且与N互质的数的个数 \[ \varphi(x)=x \prod_{i=1}^{n}\left(1-\frac{1}{p_{i}}\right) \] (其中$p_{1}, p_{2}……p_$为x的所有质因数,x是不为0的整数) \(\varphi(1) = 1\) 欧拉函数值 阅读全文
posted @ 2020-06-02 18:53 Emcikem 阅读(388) 评论(0) 推荐(0) 编辑
摘要: 一个凸包不稳定是指能在原来的凸包上加一个点,得到更大的凸包 题目 那么要想成为一个稳定凸包,就必须要满足凸包的每条边至少有3个点 #include <iostream> #include <cstdio> #include <algorithm> #include <cmath> using nam 阅读全文
posted @ 2020-05-28 21:43 Emcikem 阅读(143) 评论(0) 推荐(0) 编辑