09 2021 档案

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

点击右上角即可分享
微信分享提示