摘要:
博主现在是一位$ACMer$萌新,目前阶段在CF上找1800分左右的思维题做做。 在此记录一下吧。 CF1010C -1800' 由裴蜀定理可知,由这$n$个数能得到的余数集和他们的$gcd$一个数得到的余数集是相同的 CF1096D -1800' $f[i][j]$表示前$i$个数最多拼到$har 阅读全文
摘要:
博主变成ACMer了呢。 多写点总结唤醒下沉睡的记忆。 阅读全文
摘要:
RT 如果$NOIP$出成绩后此帖不在了,说明我的退役时间延期至了省选后 阅读全文
摘要:
# TypeORM简介 TypeORM是一个ORM框架,是使用TypeScript和JavaScript编写的,它支持多种关系型数据库,包括MySQL、PostgreSQL、SQLite和Microsoft SQL Server等。TypeORM可以帮助我们更轻松地管理数据库,不需要编写大量的SQL 阅读全文
摘要:
第二次打南京了,去年是在南京拿的第一块铜(上海太卷了打了次铁) Day0 南京站的热身赛真就万年不变,一直用那套袋鼠题。 Day1 首先中文题面好评。 开局我直接先敲板子,试图跟榜秒杀签到题,不久后$I$有人过了,马上看题,7分钟$1A$。 然后就是$G$不久后就开始有人过了,于是看题,马上想了一个 阅读全文
摘要:
自适应辛普森法,用于求定积分。 原理是不断二分区间直到区间的积分和二次函数的积分拟合程度足够高,然后用二次函数的积分值来代替原积分值。 #include <bits/stdc++.h> #define lowbit(x) (x&(-x)) #define pb push_back #define r 阅读全文
摘要:
CDQ是一中思想,用来求点对数列。 定义$solve(l,r)$用来求$[l,r]$区间的数对, 那么先递归处理$solve(l,mid)$, 然后考虑前半段对后半段的影响, 然后再递归处理后半段$solve(mid+1,r)$ 对于这道题,具体就是,先按$a$排序,然后$solve(l,r)$先递 阅读全文
摘要:
拿到了本校第一个区域赛银。 本来目标只是拿铜的,因为这场队伍实在太多了 ,但没想到质量不是很高。 赛前就决定要拼速度。 Day-1 赛前我一直在看数学(生成函数、多项式那些)还有字符串(主要是SAM),想着赌到就是赚到。 Day0 热身赛测了下栈的问题,虽然没开无线栈,但似乎$C++17$默认的栈空 阅读全文
摘要:
题目链接 2种方法 结论版 一个很显然的结论就是$n$个数里两两之间最小异或和一定是相邻的$2$个数 于是就有了以下$DP$, 先将原数列排序 令$f[i]$表示最大的数为$a_i$的情况下最多能选几个数 显然有以下转移 \(f[i]=\max_{a_j \text{ xor } a_i \geq 阅读全文
摘要:
#include <bits/stdc++.h> using namespace std; #define ll long long int cnt, n; map<int, long long> mpu, mpphi; int prime[10000010], mu[10000010], v[10 阅读全文
摘要:
第一道莫比乌斯反演的题 答案是 \(\sum_{T=1}^{n}\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor\sum_{k|T,k\in prime}\mu(\frac{T}{k})\) 具体推导过程以后再补吧。 #include <bits/ 阅读全文
摘要:
简单的写一下吧,Polya定理就是用来求等价类的数目的。 什么是等价类?经过某些置换操作能相等的两个的状态属于同一个等价类。 然后是一些基本的定理, 等价类的数目$C$为置换群的不动点的平均值, 即$C=\frac{1}{|G|}\sum {f\in G}k^{m(f)}$ 其中,$G$为置换群,$ 阅读全文
摘要:
给定若干条件 比如 \(a - b \le c\) 这样的话从b到a连一条边权为c的边。 最后要求$x-y$的最大值直接跑x到y的最短路即可。 同理 也可以从a到b连一条边权为-c的边,最后跑最长路。 注意能不能跑dijkstra 阅读全文
摘要:
这是第一次CSP~~(Counter Strike Professor)~~,也是最后一次。 Day 1 上午考试,日常被虐。 下午颓mc Day0 上午考试,日常被虐。 下午颓mc 晚上看了下悬线法、最小表示法,然后复习了下$splay$的模板,还背了下windows下对拍模板。 Day1 ~~R 阅读全文
摘要:
"题目链接" 简单区间dp 令$f[i][j]$表示$[i,j]$的最短长度 先枚举区间,然后在区间中枚举长度$k$,看这个区间能不能折叠成几个长度为$k$的,如果能就更新答案。 cpp include include include using namespace std; char s[110] 阅读全文
摘要:
"题目链接" 算是巩固了一下斜率优化吧。 设$f[i]$表示前$i$分钟最少等待时间。 则有$f[i]=\min_{j=0}^{i m}f[j]+(cnt[i] cnt[j]) i (sum[i] sum[j])$ 其中$cnt[i]$和$sum[i]$分别表示前$i$分钟去等车的学生数量和他们去等 阅读全文
摘要:
令原数组为$\{a_n\}$,差分数组$\{d_i=a_i a_{i 1}\}$ 显然$a_x=\sum_{i=1}^x d[i]$ 我们现在要求$\sum_{i=1}^x a_i$ 把每个$a_i$都按上面的形式表示,就有$\sum_{i=1}^x a_i=\sum_{i=1}^x d_i(x i 阅读全文
摘要:
"题目链接" 考虑建一棵树,使一个生物灭绝时他的子树都会灭绝,显然这样答案就是以每个点为根的子树大小 1. 为什么原图不是一棵树,因为一个生物可能会以多个生物为食,所以按拓扑序来建树,把每个遍历到的点的父亲设为它的所有食物的$LCA$。 因为是按拓扑序来的,所以当遍历到这个生物时,它的所有食物肯定是 阅读全文
摘要:
[题目链接](http://poj.org/problem?id=3613) 先离散化,假设有$P$个点 定义矩阵$A_{ij}$表示$i$到$j$只经过一条边的最短路, $${(A^{a+b})_{ij}=\min_{1\le k\le p} \{ (A^a)_{ik}+(A^b)_{kj} \} 阅读全文
摘要:
"题目链接" 优先队列bfs第一次出队就是最短路,那么~~显然~~第k次出队就是k短路 ~~??????????????????????????????~~ ~~书上写的~~ 但是直接优先队列bfs会T,所以用A 优化就行,估价函数就是到终点的最短路。 阅读全文
摘要:
"题目链接" IDA ,估价函数为当前除了左上角的连通块以外颜色的种类数,因为每次最多消去一个颜色。 维护位于当前连通块的边缘但颜色不同的点,每次从这些点拓展就行。 cpp include include int a[10][10], n, l[] = { 1, 1, 0, 0}, r[] = {0 阅读全文
摘要:
"题目链接" 如果没有特殊边的话显然答案就是权值最小的点向其他所有点连边。 所以把特殊边和权值最小的点向其他点连的边丢一起跑最小生成树就行了。 cpp include include using namespace std; const int MAXN = 200010; typedef long 阅读全文
摘要:
"题目链接" 之前用线段树写了一遍,现在用$ddp$再写一遍。 cpp include define lc (now b ? a : b; } const int INF = 2147483647 2; const int MAXN = 50010; inline int read(){ int s 阅读全文
摘要:
"题目链接" 可以看成在坐标系中从$(0,0)$用$n+m$步走到$(n+m,n m)$的方案数,只能向右上$(1)$或者右下$(0)$走,而且不能走到$y= 1$这条直线上。 不考虑最后那个限制条件的话就是$n+m$次中选$m$次往右下走,即$C(n+m,m)$。 然后根据对称原理,从$(0,0) 阅读全文
摘要:
"题目链接" 二维$Hash$类似二维前缀和,每一行看成一个$h$进制数,每一个以(1,1)为左上角的矩阵看成一个由每一行的$Hash$值组成的$l$进制数。 然后自己推推柿子就行。 cpp include include include using namespace std; define Op 阅读全文
摘要:
"题目链接" 摘自https://www.cnblogs.com/wyboooo/p/9829517.html xjc大佬还提出了一个hash+二分的做法,也能AC。 就是用二分长度+hash check求出每个位置的答案,然后直接用桶记录秒出答案。 时间复杂度$O(n\log n)$ cpp in 阅读全文
摘要:
"题目链接" 思维难度0 实现难度7 建出主席树后用两点的状态减去lca和lca父亲的状态,然后在新树上跑第$k$小 cpp include include include using namespace std; const int MAXN = 100010; const int MAXM = 阅读全文
摘要:
"题目链接" 建出$sam$,求出parent tree上每个点的$endpos$集合大小。 如果等于$k$,说明到达这个点的都可以。给$(len[fa(i)],len[i]]$的$cnt$都加$1$,差分即可。 cpp include include include using namespace 阅读全文
摘要:
"题目链接" 广义sam+不同子串个数。。 找到所有入度为$0$的点开始$dfs$,建出广义sam。 然后就是 "不同子串个数" 了 cpp include include include using namespace std; const int MAXN = 1000010; struct S 阅读全文
摘要:
"题目链接" 广义sam。。 cpp include include include using namespace std; const int MAXN = 1000010; struct SAM{ int ch[26]; int len, fa; }sam[MAXN 阅读全文
摘要:
很久很久以前 (小学时)那时候我喜欢用这种APP做点任务赚点小钱。就是那种下载一个APP给几毛钱那种。 然后不知道怎么都下载了一个叫《红包锁屏》的APP。 这类APP为了推广,肯定会实行邀请好友奖励政策的。 这个APP也不例外,邀请一个APP奖励$2$元。 就是每个用户都有一个邀请码,如果别的用户下 阅读全文
摘要:
"题目链接" 容易发现,可能答案只有$0$、每个数,每个数$+1$ 于是把这$2n+1$个数建立一个权值线段树,可持久化一下,每个节点记录这个子树中最后加入数加入的时间的最小值$latest$(好好理解一下)。 对于查询$(l,r)$,线段树上二分找到最小的$latest include inclu 阅读全文
摘要:
"题目链接" 因为每个数都是$10^5$以内,考虑直接用$bitset$维护。 $a b=x$,其实就是看是否有$p$和$p+x$同时存在,直接$bitset$移位按位与一下就好了。 $a+b=x$,这个直接搞不好搞,所以考虑转化。 $$a (N b)=a+b N=x N$$ 其中$N$为一个常数, 阅读全文
摘要:
"题目链接" ~~第一道Ynoi~~ 显然每次询问的答案为三个区间的长度和减去公共数字个数 3. 如果是公共数字种数的话就能用莫队+bitset存每个区间的状态,然后3个区间按位与就行了。 但现在是个数,bitset中除了保存每个数是否出现外,还要保存出现的次数。 这时我们发现每个数字的出现次数之和 阅读全文
摘要:
"题目链接" 首先拆点,把每个点拆成4个点,表示到达这个点的时候赛车的朝向。 然后考虑连边。 相邻同向并且都是可以走的点直接连边权1的边。 至于怎么转向,只需在每个点$i$向每个方向一直拓展直到不能走为止,如果当前点的深度大于灵敏度,从$i$向这个点的其它3个方向都连一条边权为这个点的深度的边。 然 阅读全文
摘要:
"题目链接" 建出$SAM$后,不同子串个数就是$\sum len(i) len(fa(i))$ 因为$SAM$在线的,所以每加入一个字符就能直接加上其贡献,于是这道题就没了。 因为$x$有点大,所以把$ch$改成$map$就行。 cpp include include include includ 阅读全文
摘要:
"题目链接" 对第一个串建出$SAM$,然后用第二个串去匹配。 如果能往下走就往下走,不能的话就跳parent tree的父亲,直到能走为止。如果跳到$0$了还是不能走,重新匹配。 cpp include include include using namespace std; const int 阅读全文
摘要:
"题目链接" 裸体就是身体。 建出$SAM$,$DAG$上跑$DP$,$f[u]=1+\sum_{(u,v)\in DAG}f[v]$ 答案为$f[1] 1$(因为根节点没有字符) cpp include include include using namespace std; const int 阅读全文
摘要:
"题目链接" $$ans=\sum_{1 include include using namespace std; const int MAXN = 1000010; struct SAM{ int ch[26]; int len, fa; }sam[MAXN 阅读全文
摘要:
"题目链接" 建出后缀自动机。 T=0,每个子串算一次,否则每个子串算该子串的$endpos$集合大小次。 用$f[i]$表示结点$i$表示的$endpos$集合大小,则$f[i]$为其parent tree的子树的$f$之和(T=0时,f[i]均为1)。 用$g[i]$表示从结点$i$出发的子串个 阅读全文
摘要:
"题目链接" cpp include include include using namespace std; const int MAXN = 1000010; struct SAM{ int ch[26]; int len, fa; }sam[MAXN 阅读全文