08 2020 档案

摘要:给出n * n的矩阵,矩阵里有一些点存在值,现在有q个查询,查询某些矩阵里值的和 把每次查询拆成前缀和的形式,那么利用二维偏序,对每一个查询求出比自己坐标小的值的和 传送门 园丁的花园就是这个模板,然后在此基础上加了一个螺旋矩阵, 传送门可以O(1)查询某个点的数值 #include <iostre 阅读全文
posted @ 2020-08-30 20:59 Emcikem 阅读(149) 评论(0) 推荐(0)
摘要:对于异或来说,某一位的数字1出现的次数如果是奇数次,那么偶数个1就会进行异或变成0,还剩下一个1,那么1无论和几个0进行异或都是1 也就是说只需要计算每一位出现的次数是奇数还是偶数,奇数的话,那么就表示答案该位为1,否则为0 对于每一位的统计, 第k位的贡献值是$\lfloor\frac{a + b 阅读全文
posted @ 2020-08-24 16:02 Emcikem 阅读(142) 评论(0) 推荐(0)
摘要:开始刷历年区域赛的题 CCPC2018-Hangzhou B Master of Phi 传送门 积性函数 + 欧拉函数 求$\sum_{d|n}\phi(d)\times \frac \mod 998244353$ 已知$n = \prod_mp_i$带入, 根据公式$$\sum_{d|\prod 阅读全文
posted @ 2020-08-23 21:12 Emcikem 阅读(217) 评论(0) 推荐(0)
摘要:传送门 平面最近点对模型 给出平面上n个点,找出其中一对点的距离,使得在这n个点的所有点对中,该距离为所有点对中最小的 分治法求 $g(i,j)$就是求区间[i + 1, j]的区间的值,也就是前缀和表示$sum[j] - sum[i]$ 那么转换为$(j - i) ^ 2 + (sum[j] - 阅读全文
posted @ 2020-08-22 19:19 Emcikem 阅读(120) 评论(0) 推荐(0)
摘要:分块个数就是交点个数 + 1 那么找到交点个数即可 我们把每一个up或者down看成区间修改,然后对于left或者right看成单点查询 也就是说,每一个up和down进行区间修改 + 1,然后对于每一个left和right进行单点查询,查看交点个数即可 比如这个图,把1 1 U这个当成区间修改,把 阅读全文
posted @ 2020-08-22 15:04 Emcikem 阅读(158) 评论(0) 推荐(0)
摘要:有一个消防队英雄,k个消防队成员,进行比赛,消防队英雄到达n个点的最短路的最大值和消防队成员到达n个点的最短路的最大值的C倍进行比较 方法1: 跑一次DIjkstra,从消防队英雄出发,然后跑K次最短路,求出值即可 方法2: 建立辅助点0点,0点到K个消防队成员有一个有向边,然后跑2次最短路,求出最 阅读全文
posted @ 2020-08-16 21:55 Emcikem 阅读(142) 评论(0) 推荐(0)
摘要:传送门 第一次独立完成div1的F题,😭,不容易啊,因为数组开小了,导致MLE了,不应该是返回RE吗?cf绝了。。。 题意就是每个人,除了根,有一个上司,也就是一棵树,然后进行分工资,上司的工资必须≥下属的工资 如果说d比价小,那么就直接用树形dp解决 也就是说对于每个点,求出当前点的工资为i时, 阅读全文
posted @ 2020-08-15 19:26 Emcikem 阅读(172) 评论(0) 推荐(0)
摘要:给出一个n和k,求$\sum_n ik$ 传送门 当$n \in [1, 106], k \in [1, 106]$时,直接快速幂求即可 当$n \in[1, 109], k \in[1, 106]$时,用拉格朗日插值法 阅读全文
posted @ 2020-08-14 21:36 Emcikem 阅读(316) 评论(0) 推荐(0)
摘要:给一个连通块,删除k个块,使得剩下的块还是连通的 因为是一个连通块,直接dfs一次即可,同时记录一下dfs当前的块坐标。 然后转置下坐标的顺序,删除前k个即可 原理: 对于一个点,如果能从这个点进行dfs,那么也就是说,可以从这个点向多个方向走,如果删除这个点,那么可能造成不连通。 但是对于dfs越 阅读全文
posted @ 2020-08-13 22:07 Emcikem 阅读(127) 评论(0) 推荐(0)
摘要:面积 传送门 求面积,注意下内存开的很小,因为起点在原点,那么直接记录相邻的两个点,然后点积求面积即可 #include <iostream> #include <cstdio> #include <cstring> #define ll long long using namespace std; 阅读全文
posted @ 2020-08-11 21:06 Emcikem 阅读(107) 评论(0) 推荐(0)
摘要:传送门 按理说,在求行列式时,化简成上三角新式,需要除以数字,如果要除以mod,那么肯定会产生逆元 而对于逆元的处理,这里肯定需要保证模是质数。 但对于模是任意数时 不是特别懂,好像是类似gcd的辗转相除法求的 #include <iostream> #include <cstdio> #inclu 阅读全文
posted @ 2020-08-09 14:16 Emcikem 阅读(280) 评论(0) 推荐(0)
摘要:传送门 现在给定你一个字符串 s 以及一个整数 k,请求出 s 的字典序最小的长度为 k 的子序列。 利用单调栈维护一个栈 如果栈顶元素字典序大于当前字符的字典序,而且剩下的字符足够使得栈里的元素长度为k个,那么就把栈顶元素pop掉,而加入当前字符。 同理可以维护最大的那个字典序 #include 阅读全文
posted @ 2020-08-09 13:29 Emcikem 阅读(110) 评论(0) 推荐(0)
摘要:传送门 就是求生成树的个数 在于建图,建立无向图,如果说两点之间有点,就不能建图,否则,两点之间建立边 也就是说点与点之间最多只有一条边,然后最多能构成一个完全图 首先判断两点之间的距离是否满足,然后判断三点是否贡献 最后利用矩阵树定理求解即可 #include <iostream> #includ 阅读全文
posted @ 2020-08-07 16:40 Emcikem 阅读(164) 评论(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 阅读(110) 评论(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 阅读(164) 评论(0) 推荐(0)
摘要:建立两个线段树,第一个线段树是维护边的起点,即出边,第二个线段树维护边的终点,即入边 同时对每个线段树上的点命名,叶子节点的命名用$[1,n]$即可,其他用线段树建立的顺序命名。 比如对于第一棵线段树的建立 在建立过程中,同时add边权为0的边,比如编号$n + 1$的点到$n+2$的点建立边,边权 阅读全文
posted @ 2020-08-02 10:21 Emcikem 阅读(198) 评论(0) 推荐(0)