06 2019 档案

摘要:https://www.luogu.org/problemnew/show/P3966 因为文本串就是字典本身,所以这个和平时的AC自动机不太一样。平时的query要沿着fail树把子树的出现次数依次统计。但是这个的query就是对每个字典里的字符串搞一次。所以就直接按广搜的顺序反过来树形dp统计出 阅读全文
posted @ 2019-06-25 17:57 韵意
摘要:https://oj.gxu.edu.cn/contest/7/problem/D 描述 有一个所有元素皆为0的数组A,有两种操作: 1 l r x表示将A区间[l,r]内所有数加上x; 2 l r表示将A区间[l,r]内从左往右数第i个数加上i; 给出m个操作,请输出操作结束后A中的最大值。 输入 阅读全文
posted @ 2019-06-23 17:14 韵意
摘要:https://scut.online/p/223 给定两个数N,M,构造M个在[0,80000]以内的互不相同的数使之异或和为N。 首先特判一下M using namespace std; typedef long long ll; inline ll read() { ll x = 0; //i 阅读全文
posted @ 2019-06-19 21:01 韵意
摘要:https://scut.online/p/354 跟多项式一点关系都没有。 注意到其实两个多项式在1处求值,那么就是他们的系数加起来。 列一列发现系数就是n以内两两求gcd的值,还自动把0去掉了。 那么就是 $\sum\limits_{i=1}^{n}\sum\limits_{i=1}^{n}gc 阅读全文
posted @ 2019-06-19 19:08 韵意
摘要:https://codeforc.es/contest/77/problem/B 用求根公式得到: $p 4q\geq0$ 换成熟悉的元: $y 4x\geq0$ 其中: $x:[ b,b],\;y:[0,a]$ 那么画个图就发现其实就要算一下面积。 需要注意的是面积为0的情况下,就退化成线段上的几 阅读全文
posted @ 2019-06-18 19:52 韵意
摘要:老版本(kuangbin)那个浪费空间还慢。 把每一位改成极限的9位就是最快的。 压位高精在60000位整数的时候比Python乘法慢了一倍。看来还是需要FFT的。 阅读全文
posted @ 2019-06-18 16:34 韵意
摘要:先收藏一下:https://blog.csdn.net/liangzhaoyang1/article/details/72639208 阅读全文
posted @ 2019-06-17 22:46 韵意
该文被密码保护。
posted @ 2019-06-17 16:22 韵意
摘要:https://scut.online/p/337 这个东西是个阶梯状的。那么可以考虑存两棵树,一棵树是阶梯的,另一棵树的平的,随便一减就是需要的阶梯。 优化之后貌似速度比树状数组还惊人。 cpp include using namespace std; typedef long long ll; 阅读全文
posted @ 2019-06-17 15:22 韵意
摘要:区间线段树: cpp const int MAXM=100000; int a[MAXM+5]; ll st[(MAXM 1; st[o 1; build(o 1; if(a=m+1) update(o 1; ll ans=0; if(a=m+1) ans=ans+query(o 1; build( 阅读全文
posted @ 2019-06-17 14:57 韵意
摘要:https://scut.online/p/321 第一次做区间线段树。 感觉和单点的一样啊。pushdown的时候要注意一些问题,st的值有可能是跟区间长度有关的。 cpp include using namespace std; typedef long long ll; inline int 阅读全文
posted @ 2019-06-17 14:56 韵意
摘要:https://codeforc.es/gym/102222/problem/F 注意到其实用unsigned long long不会溢出。 cpp include using namespace std; typedef long long ll; inline int read() { int 阅读全文
posted @ 2019-06-17 10:18 韵意
摘要:https://codeforc.es/gym/102222/my 好像在哪里见过这个东西?字符的左右移还是小心,注意在mod26范围内。 cpp include using namespace std; typedef long long ll; inline int read() { int x 阅读全文
posted @ 2019-06-17 00:02 韵意
摘要:https://codeforc.es/gym/102222/problem/H 题意:有一堆怪兽,怪兽有HP和ATK。你有一个英雄,英雄每次先被所有怪兽打,然后打其中一个怪兽。打的伤害递增,第一次1,第二次2,以此类推。 为什么感觉是贪心呢?证明一波。 首先开始打一个怪兽肯定一直打到死为止。那么打 阅读全文
posted @ 2019-06-16 23:45 韵意
摘要:https://codeforces.com/contest/1181/problem/B 从中间拆开然后用大数搞一波。 当时没想清楚奇偶是怎么弄,其实都可以,奇数长度字符串的中心就在len/2,偶数长度字符串的中心恰好是len/2和len/2 1。 但是要是作为末尾指针的位置来说的话 奇数长度字符 阅读全文
posted @ 2019-06-16 21:33 韵意
摘要:https://scut.online/p/289 一个水到飞起的模板数位dp。 cpp include using namespace std; typedef long long ll; bool notp[2000]; const int MAXS1=200; const int MAXS2= 阅读全文
posted @ 2019-06-15 23:57 韵意
摘要:其实一般都只是求一个组合数: cpp namespace combinatorics{ //注意需要init(),必要时修改常量 const ll MOD=1e9+7; const int MAXN=2000000; ll inv[MAXN+5],fac[MAXN+5],invfac[MAXN+5] 阅读全文
posted @ 2019-06-15 21:48 韵意
摘要:每个世界可以和别的世界连通,也可以直接联通虚拟的已经毁灭的世界,这样变成一个最小生成树问题。 但是好像哪里不对? 有人用dp过掉的? 不太清楚怎么搞的。 其实就是最小生成树…… 阅读全文
posted @ 2019-06-15 21:22 韵意
摘要:https://scut.online/p/278 第一次遇到不需要并查集的左偏树。 cpp include using namespace std; typedef long long ll; int n,m; const int MAXN=1000005; int tot,v[MAXN],l[M 阅读全文
posted @ 2019-06-15 17:40 韵意
摘要:这个并不是左偏树+并查集。 左偏树+并查集里面,每个节点是主要的元素,要关心的节点当前处在哪棵左偏树的管辖内。 而纯粹的左偏树里面,左偏树本身是主要的元素,只关心左偏树本身的合并。 个堆合并了之后,把其中一个完全加入另一个,空的堆就自己去新建一个位置。 多套一层指针来记录各个工厂对应的树现在到了哪里 阅读全文
posted @ 2019-06-15 17:28 韵意
摘要:https://scut.online/p/299 $dp[i][k]$ 为前 $i$ 个数分 $k$ 组的最大值,那么 $dp[i][k]=max_{p=1}^{i 1}\{dp[p][k 1] sum(p+1,i)\} $ 带FFT优化,反而更慢。这个可以理解。本身乘法是$O(nm)$,这里m小 阅读全文
posted @ 2019-06-15 01:46 韵意
摘要:https://scut.online/p/157 鉴于多年(都没几个月)搞数论的经验,这种时候枚举g肯定是对的。 那么肯定是要莫比乌斯函数作为因子,因为很显然? 但是为什么要搞个负的呢?其实是因为这个题目的g==1的时候并不都是合法的,反而是g==2的时候都是合法的,所以g==6的时候才是重复的。 阅读全文
posted @ 2019-06-14 23:18 韵意
摘要:https://scut.online/p/205 连着做所以一开始就觉得是网络流。 这种至多分配几次的很有网络流的特征。 一开始想从食物和饮料流向牛,但是怎么搞都不对。 其实可以从s流向食物,食物流向牛,牛流向饮料,饮料流向t。 cpp include using namespace std; t 阅读全文
posted @ 2019-06-14 18:34 韵意
摘要:https://scut.online/p/12 可以用矩阵快速幂来做。 阅读全文
posted @ 2019-06-14 17:56 韵意
摘要:写了一个矩阵类,不用到处抄。默认是int矩阵。 阅读全文
posted @ 2019-06-14 17:53 韵意
摘要:https://scut.online/p/15 样例错了,按题目说的去做就AC了。 反向搜索使得最终比较strncmp的时候复杂度下降了很多(虽然应该可行性剪枝也少了) cpp include using namespace std; typedef long long ll; char s[64 阅读全文
posted @ 2019-06-14 17:00 韵意
摘要:https://www.luogu.org/problemnew/show/P3952 这个模拟,注意每次进入循环的时候把新状态全部入栈,退出循环的时候就退栈。 第一次就错在发现ERR退出太及时,把剩余的信息留在流里面。 所以下次还是全部保存在字符串里面就好。一次下载一整段程序。 阅读全文
posted @ 2019-06-13 17:54 韵意
摘要:https://www.luogu.org/problemnew/show/P1631 序列a中每个数首先都和序列b中的最小元素配对(虽然好像不是很必要这么早插进来?) 每次从堆顶取出最小的和输出答案,然后尝试为这个ai配对下一个bj,要是没有的话……说明都是他一个人贡献完了。 cpp includ 阅读全文
posted @ 2019-06-13 13:51 韵意
摘要:https://www.luogu.org/problemnew/show/P1168 https://www.luogu.org/problemnew/show/P3871 cpp include using namespace std; typedef long long ll; struct 阅读全文
posted @ 2019-06-13 13:27 韵意
摘要:https://www.luogu.org/problemnew/show/P1063 这个并不是每次只能从两边扩展的,可以从中间断开。 cpp include using namespace std; typedef long long ll; int a[205]; ll dp[205][205 阅读全文
posted @ 2019-06-13 02:04 韵意
摘要:https://www.luogu.org/problemnew/show/P1381 字符串匹配,用哈希总没有错的。 然后就是尺取了,题目要求首先尽可能多覆盖,那么每次尾巴往后面长。 一开始先找到第一个要的词汇。这个不多说。 然后每次往后面长,遇到非法词汇就继续长。 遇到合法的,就把头部所有合法的 阅读全文
posted @ 2019-06-13 01:08 韵意
摘要:https://www.luogu.org/problemnew/show/P1414 以后这种gcd的还是尽可能往分解那里想一下。 先把每个数分解,他的所有因子都会cnt+1。 然后从最大的可能因子开始往下走,每次把比这个cnt小或等的ans全部更新。 这样明显会超,但是很多更新是没必要的,因为我 阅读全文
posted @ 2019-06-13 00:30 韵意
摘要:https://www.luogu.org/problemnew/show/P5429 很明显是要维护整个连通块的共同性质,并查集一搞就完事了。 cpp include using namespace std; typedef long long ll; const int MAXN=100000; 阅读全文
posted @ 2019-06-12 19:18 韵意
摘要:注意这个乘法是两个数长度相加,但是经过你准确的计算可能并不会有这么长,那么就用MAXLEN截断他。 有时这个大数并不是特别大,可以用变长数据,反而会省空间,还快: FFT高精度乘法 阅读全文
posted @ 2019-06-12 11:34 韵意
摘要:https://www.luogu.org/fe/problem/P4450 应该不分块也可以。 求$F(n,m,d)=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}[gcd(i,j)==d]$ 模板题,直接套。 但是我的分块的上界忘记把n和m换过来了。 实验证 阅读全文
posted @ 2019-06-11 22:43 韵意
摘要:https://www.luogu.org/fe/problem/P3935 求: $F(n)=\sum\limits_{i=1}^{n}d(i)$ 枚举因子$d$,每个因子$d$都给其倍数贡献$1$,倍数一共有$\lfloor\frac{n}{d}\rfloor$个。 $F(n)=\sum\lim 阅读全文
posted @ 2019-06-11 22:23 韵意
摘要:求: $S(n,m)=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}lcm(i,j)$ 显然: $S(n,m)=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}\frac{ij}{gcd(i,j)}$ 枚举g: $S(n,m) 阅读全文
posted @ 2019-06-11 16:07 韵意
摘要:假设我们先天知道:d(xy)= i∣x ∑ ​ j∣y ∑ ​ [gcd(i,j)=1] 阅读全文
posted @ 2019-06-11 15:44 韵意
摘要:```cpp inline ll gcd(ll a,ll b) { if(!b) return a; else { while(1) { ll t=a%b; if(t==0) return b; else { a=b... 阅读全文
posted @ 2019-06-11 10:53 韵意
摘要:https://scut.online/p/114 $A(n)=\sum\limits_{i=1}^{n} \frac{lcm(i,n)}{gcd(i,n)}$ $=\sum\limits_{i=1}^{n} \frac{in}{gcd^2(i,n)}$ 枚举g: $A(n)=n\sum\limit 阅读全文
posted @ 2019-06-10 23:23 韵意
摘要:https://scut.online/p/362 和LCA差不多,注意开大点不怕浪费。 include using namespace std; typedef long long ll; const int MAXN=1e5; int head[MAXN+1],nxt[2 MAXN+1],to[ 阅读全文
posted @ 2019-06-10 20:37 韵意
摘要:https://www.luogu.org/problemnew/show/P3768 $F(n)=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}ijgcd(i,j)$ 首先加入方括号并枚举g,提gcd的g: $\sum\limits_{g=1}^{n}g\su 阅读全文
posted @ 2019-06-10 17:01 韵意
摘要:https://www.luogu.org/problemnew/show/P4861 把好像把一开始b==1的特判去掉就可以AC了。 cpp include using namespace std; typedef long long ll; inline int gcd(int a,int b) 阅读全文
posted @ 2019-06-10 16:43 韵意
摘要:https://www.luogu.org/problemnew/show/P4449 $F(n)=\sum\limits_{i=1}^{n}\sum\limits_{i=1}^{m} gcd(i,j)^k$ 首先加方括号,枚举g,提g:($min$表示$min(n,m)$) $\sum\limit 阅读全文
posted @ 2019-06-10 15:51 韵意
摘要:另一道数据范围不一样的题:https://www.cnblogs.com/Yinku/p/10987912.html $F(n)=\sum\limits_{i=1}^{n} lcm(i,n) $ $\sum\limits_{i=1}^{n} \frac{in}{gcd(i,n)} $ 枚举g,提n。 阅读全文
posted @ 2019-06-10 15:19 韵意
摘要:易得 $\sum\limits_{g=1}^{n} g \sum\limits_{k=1}^{n} \mu(k) \lfloor\frac{n}{gk}\rfloor \lfloor\frac{n}{gk}\rfloor $ 记 $T=gk$ 枚举 $T$ ,注意这里既然满足 $T=gk$ 要保证两 阅读全文
posted @ 2019-06-08 12:30 韵意
摘要:类似的因为模数比较小的坑还有卢卡斯定理那道,也是有时候逆元会不存在,因为整除了。使用一些其他方法避免通过逆元。 https://www.luogu.org/fe/problem/P1593 有坑。一定要好好理解费马小定理等逆元存在的条件。费马小定理求逆元的条件是p是质数且a不为0,扩展欧几里得算法的 阅读全文
posted @ 2019-06-08 03:44 韵意
摘要:https://www.51nod.com/Challenge/Problem.html ! problemId=1363 求$\sum\limits_{i=1}^{n}lcm(i,n)$ 先换成gcd: $\sum\limits_{i=1}^{n}\frac{i n}{gcd(i,n)}$ 显而易 阅读全文
posted @ 2019-06-07 11:57 韵意
摘要:https://www.51nod.com/Challenge/Problem.html ! problemId=1188 求$\sum\limits_{i=1}^{n 1}\sum\limits_{j=i+1}^{n}gcd(i,j)$ 首先交换求和$\sum\limits_{j=2}^{n}\s 阅读全文
posted @ 2019-06-07 00:51 韵意
该文被密码保护。
posted @ 2019-06-06 23:33 韵意
摘要:https://www.luogu.org/problemnew/show/P2283 需要注意max是求解顺序是从右到左,最好保证安全每次都清空就没问题了。 include using namespace std; typedef long long ll; //不要输出 0.0之类的数 cons 阅读全文
posted @ 2019-06-06 22:19 韵意
摘要:https://www.luogu.org/problemnew/show/P2278 题目没有说同时到达的优先级最大的应该处理谁。 讲道理就是处理优先级最大的。 阅读全文
posted @ 2019-06-06 18:20 韵意
摘要:为什么估价是16,因为最后一步复原空格可以恢复两个位置,当然设成17、18都可以。 阅读全文
posted @ 2019-06-05 10:51 韵意
摘要:https://www.luogu.org/problemnew/show/P1663 给定山的性状,求一个最低点可以看见所有的地方。 就是半平面交。 粘贴全家福: cpp include using namespace std; typedef long long ll; //不要输出 0.0之类 阅读全文
posted @ 2019-06-04 14:24 韵意
摘要:这道题里面不用保存 inva[i] ,而且还卡常。事实证明快读快到飞起, 阅读全文
posted @ 2019-06-04 10:37 韵意
摘要:我又来开新坑了,先是不扩展的。 在 $O(\sqrt p)$ 复杂度内,求最小的 $x$ 在 $[0,p)$ 使得,已知 $a,b,p$ 的同余式 $a^{x} \equiv b\: mod\: p$ 成立其中 $p$ 是质数。 首先可以把 $x$ 分解为 $A \lceil \sqrt p \rc 阅读全文
posted @ 2019-06-03 16:05 韵意
摘要:前64个自然数的表: | n | mu(n) | Smu(n) | phi(n) | Sphi(n) | d(n) | Sd(n) | sigma(n) | Ssigma(n) | | | | | | | | | | | | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | 阅读全文
posted @ 2019-06-02 23:20 韵意
摘要:$O(nlogn)$预处理,$O(1)$查询。注意不要越界。 令 $f[i][j]$ 表示 $[i,i+2^j 1]$ 的最大值。 显然, $f[i][0]=a[i]$ 。 根据定义式,写出状态转移方程: $f[i][j]=max(f[i][j 1],f[i+2^{j 1}][j 1])$ 。 我们 阅读全文
posted @ 2019-06-02 20:25 韵意
摘要:打印的时候麻烦把:https://blog.csdn.net/skywalkert/article/details/50500009这个打印下来。 求$\prod\limits_{i=1}^{n} \prod\limits_{j=1}^{n} \prod\limits_{k=1}^{n} m^{gc 阅读全文
posted @ 2019-06-02 16:41 韵意
摘要:这两个经常混在一起用的样子,封成同一个好了。 cpp include using namespace std; typedef long long ll; int solve(); int main() { ifdef Yinku freopen("Yinku.in","r",stdin); end 阅读全文
posted @ 2019-06-01 22:33 韵意
摘要:首先把这个树建出来,然后每一次操作,只能选中一棵子树。对于树根,他的领导力水平是确定的,然后他更新答案的情况就是把他子树内薪水最少的若干个弄出来。 问题在于怎么知道一棵子树内薪水最少的若干个分别是谁。 考虑到原本就是从别的博客过来的,先天知道了这是左偏树。 那么就是每次合并若干个忍者吗? 首先一开始 阅读全文
posted @ 2019-06-01 11:06 韵意