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