随笔分类 -  题解

摘要:注意:本文中的一切数字即数字运算均在$k$的同余系内(即$x\leftarrow x\bmod k$), 只用于表示向量点积。 暴力的算法是,从小到大枚举向量$A[x]$,判定$A[1]$到$A[x 1]$中是否存在与$A[x]$点积为$0$的向量:若存在,暴力搜索答案;否则枚举下一个向量$A[x+ 阅读全文
posted @ 2019-05-16 15:02 nosta 阅读(438) 评论(0) 推荐(0)
摘要:记录一部分的推导过程 $k$进制下,某个合法纯循环数的分数表示为$\frac{x}y,(x\le n,y\le m)$,其循环节长度为$L$,有约束 $$ \begin{cases} (x,y)=1\\ \dfrac{xk^L}{y} \lfloor\dfrac{xk^L}{y}\rfloor=\d 阅读全文
posted @ 2019-05-15 09:59 nosta 阅读(294) 评论(0) 推荐(0)
摘要:臭名昭著的巧合: "CF750G" 题意:在无限深度的一颗线段树中询问编号和为S的简单路径条数。 "题解传送门" 这道题相当于在原来基础上多了询问两点间简单路径的编号的的问题。 直觉告诉我们只需要求出两点在线段树上的lca,然后套用上个问题中所推得的式子即可。而线段树上两点的lca的二进制表示正好是 阅读全文
posted @ 2019-05-08 15:30 nosta 阅读(491) 评论(0) 推荐(0)
摘要:[TOC] "题目链接" 简单的 设从节点$x$开始不断往左儿子走h 1步,则编号和为$x\sum_{i=0}^{h 1}2^i=x(2^h 1)$。 若倒数第$i$步走向的是右儿子,则编号和会增加$\sum_{j=0}^{i 1}2^j=2^i 1$。 这样,从$x$往下走形成的长为$h$的链中, 阅读全文
posted @ 2019-05-08 09:39 nosta 阅读(602) 评论(0) 推荐(0)
摘要:怎么做的?? 考虑至少有k组人在讨论cxk,给他们按位置的因数是C(n 3k,k) 剩下n 4k个位置,设第i类人物出现了di个, 满足d0+d1+d2+d3=n 4k,di+k include include using namespace std; const int N=1000+5; con 阅读全文
posted @ 2019-05-05 21:58 nosta 阅读(565) 评论(0) 推荐(0)
摘要:题目大意:给出一个串$S$,$q$次询问每次询问字符串$T$不在$S[l,r]$出现的本质不同的子串数目。 0.68 有条件$l=1,r=|S|$。考虑$SAM_T$上的parent树的结构特点,~~不难~~可以得出:若设$lim_i$为$T[1,i]$在$S$中出现的最长后缀长度(在$SAM_S$ 阅读全文
posted @ 2019-05-04 21:36 nosta 阅读(246) 评论(0) 推荐(0)
摘要:题意 给定一棵n个点,每个点带颜色的有根树。点的编号和颜色编号都在1到n,根的编号为1。m次询问,求x子树中与x距离边数不超过k的点中,颜色的种类数目。每个测试点有多组数据。 分析 不妨设1的父亲为0,0包含了所有颜色。不考虑深度限制,对于单独一种颜色c,易知颜色c对于任意两个色c的点之间的路径上的 阅读全文
posted @ 2019-04-11 20:27 nosta 阅读(286) 评论(0) 推荐(0)
摘要:反演拾遗,设'~'表示min(n,m),推狮子 $$ \prod_{i=1}^n\prod_{j=1}^n\mathbb{fib}_{\gcd(a,b)} =\prod_{d=1}^\sim\mathbb{pow}(\mathbb{fib}_d,\sum_{i=1}^{n/d}\sum_{j=1}^ 阅读全文
posted @ 2019-04-01 16:42 nosta 阅读(205) 评论(0) 推荐(0)
摘要:~~「前言」为防止在某巨巨的毒瘤idea 紫荆花之“店" 面前一脸懵,特滚来补此题。~~ ~~我还是太naive了。~~ 「题义」给出一棵单点度数很小的无根带边权、点权的树,每次询问在所有点权在\[l,r\]的点到c的距离之和。 「分析」考虑建立点分树,分治结构每个点都储存对应分治范围(简称范围)内 阅读全文
posted @ 2019-03-24 21:58 nosta 阅读(267) 评论(0) 推荐(0)
摘要:由题意可得出递推式$f[i ,j]=\sum_{e\in S} f[i 1,\frac{j}{e}]$,初值$f[0,0]=1$,答案为$f[n,x]$,具体意义不表。 分析可知$f[1,e(e\in S)]=1$,$f[i,ab]=\sum_{a\in S,b\in S}f[i 1,a]f[1,b 阅读全文
posted @ 2019-03-20 22:04 nosta 阅读(166) 评论(0) 推荐(0)
摘要:首先理清这奇葩题意表述 给出一个$1$到$n$的排列$p[]$和$m$次询问,每次询问覆盖区间$[l,r]$的最小区间$[a,b]$,满足$[a,b]$内的元素排序后是连续整数序列。$n,m\le 10^5,\;1\le l\le r\le n$。 方便表述,称满足(省略)的区间是“好”的,否则是“ 阅读全文
posted @ 2019-03-20 16:20 nosta 阅读(226) 评论(0) 推荐(0)
摘要:显然答案与杆的顺序无关(按每个高度考虑)。 从高到低考虑杆,设此时的状态为$S$,$S "i]$是高度$i$的帆的数目,初始全为$0$,当前杆的高度为$h$,杆上需要放置的帆的数目为$k$,贪心地,假设两个高度的同等宜选,优先选择更高的;帆尽量放置在$S[i]=0(i\le h)$的高度上,若还有剩 阅读全文
posted @ 2019-03-19 12:01 nosta 阅读(337) 评论(0) 推荐(0)
摘要:推石子 首先设$d[i]=\sum_{t=1}^{U[i]}t^{n R[i]}(U[i] t)^{R[i] 1}$,即第$i$门课程分数的合法分布方案数; 然后设$f[i,j]$表示前$i$门课程中$j$个人被碾压的合法方案数,转移有: $$ \begin{aligned} &f[i,j]=d[i 阅读全文
posted @ 2019-03-18 20:57 nosta 阅读(241) 评论(0) 推荐(2)
摘要:idea1 可能会死掉的想法:考虑点分治维护每个分治中心x到达分治块内的个点距离,具体是用堆维护分治快内的x的儿子y到y的子树内的所有点距离(记为C[y]),取所有C[y]的top+e(x,y)放入x的堆里(记为B[x]),答案为所有B[x]的top+top2的最大值,可以在用一个堆维护(记为A)。 阅读全文
posted @ 2019-03-18 17:12 nosta 阅读(226) 评论(0) 推荐(0)
摘要:推狮子的部分 $$ \sum_{i=1}^A\sum_{j=1}^B\sum_{k=1}^C\sigma(ijk) =\sum_{i=1}^A\sum_{j=1}^B\sum_{k=1}^C\sum_{x|i}\sum_{y|j}\sum_{z|k}\epsilon(\gcd(x,y))\epsil 阅读全文
posted @ 2019-03-16 21:57 nosta 阅读(168) 评论(0) 推荐(0)
摘要:题意 每次新建一个节点,并与一个已知节点连边。(或者不连)。多次询问以某个已知点点出发的最远路径长度。 分析 显然,在任何时候图都是一个森林。由树的直径算法可知,与某点最远距的点必然是树的直径的一段。那么考虑在lct中维护直径。 实现 一篇精彩的LCT,应该像少女穿的迷你裙,越短越好。——林语堂 ( 阅读全文
posted @ 2019-03-13 20:41 nosta 阅读(247) 评论(0) 推荐(0)
摘要:分析 题目要求在一共加入若干条边是的不同B序列的个数;方便统计,我们不妨让一个B序列对应一种特定的操作来构造,具体如下 从1开始按从小到大加入点,始终维护一个顺序为加点次序的链;每次加入一条有向边 不会影响SCC个数的 1)连上新点:链末尾与新点连 2)连上废边:加上一条不改变强连通情况的边,不改变 阅读全文
posted @ 2019-03-04 22:14 nosta 阅读(140) 评论(0) 推荐(0)
摘要:题意 设把$n$个不同元素分成若干个大小相等的集合的方案个数为$res$,求$m^{res}$模$10^9 401$后的余数。 (n,m不超过2\ 10^9) 分析 可以知道,所求答案为$m^r \bmod P$其中$r=\sum_{d\mid n} \dfrac{n!}{\frac{n}{m}!^ 阅读全文
posted @ 2019-03-03 21:50 nosta 阅读(337) 评论(0) 推荐(0)
摘要:分析 設$g[i,j]$表示底邊長爲$i$,底部恰好有$j$行全部安全,沒有面積大於$k$的子矩陣(下稱:合法)的概率,$s[i, ]$為$g[i, ]$的前綴和,意義為最下面至少有$j$行全部安全的合法概率。 我們枚舉第一個在第$i+1$行的危險點來轉移$g$和$s$,設這個危險點在第$k+1$列 阅读全文
posted @ 2019-02-27 20:46 nosta 阅读(245) 评论(0) 推荐(0)
摘要:考虑一对情侣(x,y)x using namespace std; const int N=1e5+10; int head[N],to[N 1; if(Lb||c d) return; s[++cnt]=(seg){1,c,a,b}; s[++cnt]=(seg){ 1,d+1,a,b}; } l 阅读全文
posted @ 2019-02-25 16:38 nosta 阅读(198) 评论(0) 推荐(0)