09 2021 档案

摘要:看到$b$的范围只有$7$,可以往搜索和状压方向想 因为搜索出现频率太低,先考虑状压 显然应该将$b$的意义设为状压集合 所以设$f[i][j][k]\(表示现在打完饭的人是\)[1,i-1]$以及$j$所表示的集合(这里$j$所表示的集合不太好解释,举个例子,如$j$在二进制表示下为$1010$, 阅读全文
posted @ 2021-09-29 21:26 最爱丁珰 阅读(39) 评论(0) 推荐(0)
摘要:事实上,做这题肯定要先打表的 对第一问,打表后不难发现除了$1$的奇数无解,偶数很显然存在一种构造情况 对第二问,打表后其实看不出来什么规律,但是对于这种带模数的题目,可以将前缀积都%\(n\),这样规律就出来了 这个规律出来了之后其实也不太好构造,可以看看其他题解如何构造的 主要是领会这种打表的思 阅读全文
posted @ 2021-09-29 11:53 最爱丁珰 阅读(48) 评论(0) 推荐(0)
摘要:容易知道,速度慢的应该不会对速度快的套圈(显然) 考虑对每一个速度慢的熊进行处理,他被多少个快的熊套圈 设两只熊的速度分别为$v_{1}$,\(v_{2}\)(\(v_{1}\)<\(v_{2}\)),所有熊中速度最大的为$v$ 那么每被套一次圈时间是$\lfloor \frac{A}{v_{2}- 阅读全文
posted @ 2021-09-27 21:04 最爱丁珰 阅读(98) 评论(0) 推荐(0)
摘要:一共有$q$此询问,显然对于每一个$i$(\(1<=i<=n\)),他的贡献最多是$q/i$ 这个时候需要从线段树顶端走到底端,为$O(logn)$(事实上重复走了很多次,根本达不到这个上界) 由调和级数得总时间复杂度为$O(nlog^{2}n)$ 阅读全文
posted @ 2021-09-26 21:49 最爱丁珰 阅读(44) 评论(0) 推荐(0)
摘要:这题数据较恶心,时间复杂度可以达到$O(kn^{2})$ 为什么重复$k$次就是对的呢? 万一氮气加速之间是互相影响的怎么办? 如图,红色区间代表能影响的范围,显然互相独立。 证毕 阅读全文
posted @ 2021-09-25 19:29 最爱丁珰 阅读(30) 评论(0) 推荐(0)
摘要:他的$g[i]$其实指的是$i$与其所在连通块的代表结点的“相对”染色 1.\(g[i]=0\):若其代表结点染色为$1$,则其也为$1$;若为$0$,则其也为$0$ 2.\(g[i]=1\):若其代表结点染色为$1$,则其为$0$;若为$0$,则其为$1$ 显然他这种做法是正确的,但可以用另一种方 阅读全文
posted @ 2021-09-23 18:55 最爱丁珰 阅读(44) 评论(0) 推荐(0)
摘要:假设当前枚举到了$g[i]$ 假设我们考虑所有边,在$g[i-1]$枚举完后,所有$1$~$i-1$边从小到大排序,执行克鲁斯卡尔 在加入了$g[i]$这条边后,会插进一个位置保持单调性。 在这个新的边的数组上执行克鲁斯卡尔,很明显原来没被选的肯定不会被选 所以我们可以执行删边操作,是正确的 阅读全文
posted @ 2021-09-22 19:39 最爱丁珰 阅读(46) 评论(0) 推荐(0)
摘要:显然是DP 将$a\times2^{b}$的$b$相同的分成一类 设$f[i][j]$表示$2$的指数为$i$时,前面的系数为$j$(即总的重量为$j\times2^{i}$)时的最大价值 设当前DP到的这个物品的系数为$k$,有$f[i][j]=max(f[i][j],f[i][j-k]+val) 阅读全文
posted @ 2021-09-21 21:29 最爱丁珰 阅读(48) 评论(0) 推荐(0)
摘要:注意,在调查前应该有一个定下来的顺序,就是不管这张图是哪一种都按这个顺序进行调查 由题意,这$n$个人当中一定有一个人是杀手 那么就相当于有$n$张图,其中每张图都有且仅有一个黑点(剩余都是白点),且这些图的黑点都不同(黑点就是杀手) 首先我们肯定要保证知道杀手,所以一定只会询问入度为$0$的强连通 阅读全文
posted @ 2021-09-21 18:09 最爱丁珰 阅读(148) 评论(0) 推荐(0)
摘要:来看状态转移方程,为$f[i][j][k]$ 第一种策略:第一步就将$j$及其前面颜色连续的一段与后面$k$个消除(颜色一样的肯定要一起消除,下文同理) 如果第一种策略并不是最优的,那么$j$及其前面颜色连续的一段与后面$k$个一定会与前面一段颜色相同的点一起消除(因为$j$及其前面颜色连续的一段与 阅读全文
posted @ 2021-09-20 18:07 最爱丁珰 阅读(45) 评论(0) 推荐(0)
摘要:容易知道这是一道图论。设$a$能看到$b$,那么就连一条$(a,b)$有向边。 定义:$A$为面具种类数,即答案 对于一个基图联通的图(基图:将图中有向边变为无向边的新图),不妨从任意一个点开始遍历,给这个数任意一个实数点权$x$,那么这个点的面具种类为$(x$%\(A\)+\(A)\)%\(A\) 阅读全文
posted @ 2021-09-19 09:21 最爱丁珰 阅读(71) 评论(0) 推荐(0)
摘要:solution说的环,其实是指的能倒着走的有向边。 比如说下图 7 7 1 2 2 3 4 3 4 5 5 6 6 7 7 1 假设最终的答案下,$1$号点的面具编号是$x$,那么在忽略$7→1$这条边的情况下,显然$7$号点的编号应该是$x+4$(忽略取模)。 由于有了$7→1$这条边,就代表着 阅读全文
posted @ 2021-09-17 21:59 最爱丁珰 阅读(145) 评论(0) 推荐(0)
摘要:void getcircle(int x,int y) { while(x!=y) { circle[++tot]=x; x=st[--tp]; } circle[++tot]=y; } void dfs(int x,int lastedge) { mark[x]=1; if(!flag) st[+ 阅读全文
posted @ 2021-09-17 19:34 最爱丁珰 阅读(139) 评论(0) 推荐(0)
摘要:考虑走了$x$步向左,$x+n$步向右。容易知道最后一步一定会到达$n$,但是中间可能会提前到达$n$,我们需要去重。 我们使用卡特兰数的折线法去重。 以下令向左走一次变为向右上走一次,向右走一次变为向右下走一次(注意这里定义的转换,下文会多次用到),最终会走到点$(2x+n,-n)$。如下图,是一 阅读全文
posted @ 2021-09-14 20:06 最爱丁珰 阅读(70) 评论(0) 推荐(0)
摘要:在克鲁斯卡尔排序过后,如果有边权相同的若干条边,可以将它们以任意顺序进行遍历。 因为任意两棵树可以通过加一条边同时删除一条边达到,即这两棵树的边数是相同的。 所以以任意顺序进行遍历,若最后无法形成一棵树,则任何一种遍历顺序都无法形成一棵树。 阅读全文
posted @ 2021-09-13 21:59 最爱丁珰 阅读(41) 评论(0) 推荐(0)
摘要:设$f[i][j]$表示在第$i$时刻之前,第$i-1$时刻之后(即在两者之间)追杀第$j$个人,最后剩下的总人数。 设$life[i][j]$表示第$i$个人在第$j$时刻的任务$(u,v)$执行之前剩余的生命值 如果$j≠u[i-1]$ 或者说 如果$ju[i-1]$且$life[u[i-1]] 阅读全文
posted @ 2021-09-12 19:52 最爱丁珰 阅读(87) 评论(0) 推荐(0)
摘要:从第$37$行开始那个循环,至多执行$O(logn)$次,而里面的线性复制数组操作长度不会超过$n$,所以这一部分总时间复杂度为$O(nlogn)$ 而每次的sort循环都只会排序一段新增的序列,每次的时间复杂度为$O((R-L)log(R-L))$,所以总的时间复杂度为$O(nlogn)$ 两者加 阅读全文
posted @ 2021-09-09 20:00 最爱丁珰 阅读(61) 评论(0) 推荐(0)
摘要:算法:树状数组+离线思想+倍增LCA 时间复杂度:\(O(nlogn)\)(假设点数,边数与询问数相同) 第一问显然,为两者距离加$1$,可以用LCA算出。(加$1$是因为算的是点的个数,而两者距离则是边的个数) 第二问,设当前有一个询问$(x,y,c)$,当前时间为$now$,考虑什么点才会对这个 阅读全文
posted @ 2021-09-05 10:12 最爱丁珰 阅读(52) 评论(0) 推荐(0)
摘要:题意:一个图边权为$0$或$1$,求一个生成树使得边权和为$k$。 若原图不连通,则无解。 否则,将所有$0$边加入,此时图被分成了若干个连通块,这些连通块之间显然只能通过$1$边相连,容易知道,若两个连通块之间有若干条$1$边,则任选一条边即可,他们都是等价的。选出来的若干条边称之为“必须加入的$ 阅读全文
posted @ 2021-09-04 09:42 最爱丁珰 阅读(52) 评论(0) 推荐(0)
摘要:题目连接(提交为模板) 不妨任意取一个$a[i]$,假设除了$a[i]$,其余的$a$能够组成的所有$b$集合为$S$。对集合中的每一个元素对$a[i]$取模分成$a[i]$类,显然当两个元素结果一样时,较大的那个元素可以有较小的那个元素加上若干个$a[i]$表示出来。所以我们设$dis[i]$表示 阅读全文
posted @ 2021-09-03 23:49 最爱丁珰 阅读(61) 评论(0) 推荐(0)
摘要:设通过环形均分纸牌算出来的数组\(p\),\(p[i]\)表示第\(i\)个人给第\(i+1\)个人的纸牌个数(负数为接受纸牌) 对于这一特定的数组,不妨从\(1\)开始向\(n\)进行操作。假设第一次遇到了无法进行交换的情况,我们假设\(p[i]>0\),此时我们先找出\(i\)和\(i+1\)一 阅读全文
posted @ 2021-09-02 21:54 最爱丁珰 阅读(40) 评论(0) 推荐(0)