首页 > 其他分享 >10.22-10.23

10.22-10.23

时间:2024-10-23 18:20:59浏览次数:1  
标签:10.22 10.23 log 线段 seg 枚举 节点 环上

A.异或和

CF1261F
做过类似的题的话,\(O(n^2\log^2v\log(n^2\log^2v))\) 应该算是暴力分了。
显然这过不了,不然就不是 *3100 了。
主要的瓶颈在于异或完后产生了大量的线段,而且里面大多数是没用的。
于是赛时写出了一个绝唐的优化

点击查看代码
for (int i = 0;i < seg[0].size();i++)
    {
        LL l0  = seg[0][i].fr,r0 = seg[0][i].se;
        int k1 = __lg(r0-l0+1);
        for (int j = 0;j < seg[1].size();j++)
        {
            LL l1  = seg[1][j].fr,r1 = seg[1][j].se;
            int k2 = __lg(r1-l1+1);
            if (k1 > k2)
            {
                LL tmp = (l1>>k1)<<k1;
                if (tmp) ve.pb({l0^tmp,r0^tmp});
                else if(!vis1[i]) ve.pb({l0,r0}),vis1[i] = 1;
            }
            else
            {
                LL tmp = (l0>>k2)<<k2;
                if (tmp) ve.pb({l1^tmp,r1^tmp});
                else if(!vis2[j]) ve.pb({l1,r1}),vis2[j] = 1;
            }
        }
    }

显然大家注意到了如果两条线段长度不相等的话,我们可以把短的那条线段的补成长的。
这个玩意放到线段树上看就是短的线段的与长的线段位于同一深度的祖先和长的线段进行异或。
定义一个节点被标记即其是 \(n_{a}\log V\) 个区间中的一个,将所有节点分为三类:

  1. 其自身被标记
  2. 其自身未被标记且其子树内存在节点被标记
  3. 其子树内(包括自身)无节点被标记

类似地,对于 \(n_{b}\log V\) 个区间也可以得到节点类型,那么也就可以看作 \(n_{a}\log V\) 个区间中1类节点和 \(n_{b}\log V\) 个区间中的 \(2\) 类节点两两合并以及前者的 \(2\) 类节点和后者的 \(1\) 类节点两两合并。
对于这样的复杂度,分别考虑每一层第 \(1\) 类和第 \(2\) 类节点个数:显然都是每层最多两个
综上,每一层两类的节点数都是 \(O(n)\) 的,那么每一层合并复杂度为 \(O(n^{2})\),总区间个数降为 \(O(n^{2}\log V)\) ,再对其排序复杂度即 \(O(n^{2}\log^{2}V)\) ,可以通过。

B.仙人掌

这个东西真的有 *3400 吗?倒着加边感觉不难想啊。

如果是树的话,把边按权值从大往小加入,设 \(f_i\) 为 \(i\) 能到达的点数,对于当前这条边的两个端点 \(u,v\),有 \(f_u=f_v=f_u+f_v\)。
但是作为仙人掌而言,在环上的点是可能会算重的。
唯一会算重的情况当且仅当加入这个环的最后一条边时,环上存在点 \(w\) 使得 \(u \to w\) 的路径边权递增且 \(v \to w\) 的路径边权递增。
设环上边权最大的那条边为 \((u',v')\)。此时我们会算重 \(u',v'\) 能到达的环外的点和点 \(u',v'\)。
记 \(g_i\) 为枚举完边权为 \(i\) 的边 \((u',v')\) 后 \(u', v'\) 能到达的点数。注意我们只需要用到环上最大边的 \(g_i\),所以当 \(i\) 是环上最大边时,我们计算 \(g_i=f_u\)。当枚举到环上最小边 \((u,v)\) 时,设这个环的最大边权为 \(i\)。如果这个环的边权先增后减,我们有 \(f_u=f_v=f_u+f_v-g_i\)。
然后我 \(tarjan\) 找环写寄了哈哈哈,反正到现在还不知道找点双和边双的正确写法,鉴定为纯菜。

C.图论题

P7729
显示它的存在。
不过这场月赛竟然是我打的第一场

A.飞行计划

看了好几眼才想出来,二分之后,发现是个 \(\text{2-SAT}\) 问题,\(O(n^2)\) 连边后跑个 \(\text{tarjan}\) 就好,当然你可以先排个序然后线段树优化建图。

B.数字选取

P3172 [CQOI2015] 选数
但是 \(1<N\le10^{12},R-L\le10^6,1\le K\le10^{12},1\le L<R\le10^{12}\) 。

先运用不用动脑子的简单莫反,然后线性筛个 \(\mu\) 能拿 \(60\) 分,然后杜教筛一下就能拿 \(80\) 分。
想通过的话,得运用 \(R-L\le10^6\) 的性质,如果选的数不能重复的话,根据更相减损术,他们的 \(\gcd\le R-L\)。
先做个值域的小优化 \(L=(L-1)/K+1,R=R/K\),这样问题转化成了 \(\gcd=1\) 的方案数。
我们设 \(f_i\) 表示从 \([L,R]\) 中选出不完全相同的 \(N\) 个数且 \(\gcd=i\) 的方案数,可得以下式子:
\(f_i=(\lfloor\frac{R}{i}\rfloor-\lfloor\frac{L-1}{i}\rfloor)^N-(\lfloor\frac{R}{i}\rfloor-\lfloor\frac{L-1}{i}\rfloor)-\sum\limits_{(i|j)\land(j\le R-L)\land(j>i)}f_j\) ,倒着 \(dp\) 就能求出来了。

C.糖果国

Snacks
赛时唐了去写 \(\text{ddp}\) 了,然后这玩意不就是子树加子树求 \(\max\) 吗?

A.冰风迷途的勇士

赛时猜了手结论,显然猜寄了,取得了 \(80\) 分的好成绩。

乘号最多 \(\log n\) 个,于是设 \(f_{i,j}\) 表示用 \(j\) 个乘号来凑出 \(i\) 所需的最少加号数。
转移的话有两种,要么填加号,要么填乘号,乘号比较好处理,直接枚举因数就好了。
加号有个性质,只需要向前枚举四个就行了,可惜赛时只枚举了一个。

B.魔女的心之火

先挂着,大概是不改了。

C. 沉沦之心

先挂着,可能会改。

标签:10.22,10.23,log,线段,seg,枚举,节点,环上
From: https://www.cnblogs.com/ZepX-D/p/18497994

相关文章

  • 2024.10.23总结
    本文于github博客同步更新。A:场上唐了。对于每个\(n\),记录能够用\(a\)个\(+\)号与\(b\)个\(\times\)号组成\(n\)的这些\((a,b)\)对,如果某两个对\(\left(a_{1},b_{1}\right),\left(a_{2},b_{2}\right)\)满足\(a_{1}\leqa_{2}\)且\(b_{1}\leqb_{2}\)......
  • 10.19至10.22考试总结
    10.19noip模拟赛一T1序列算法:dp观察到所有数\(\mod3\),所以只有三种取值\(\{0,1,2\}\),所以想要将原序列模\(3\)以后做。经过简单的运算发现,所有数模\(3\)以后做是等价的,所以可以转化。然后考虑题求得很想最长上升子序列,而最长上升子序列有一种\(O(nlogn)\)做法,即记录......
  • 2024.10.23 鲜花
    恋ひ恋ふ縁诚、意地の悪い神の所业か?奇迹?縁?袂触合う不思议花ひとひら揺れて不意に宿ってたうなじ解いてく春风戯れはそこそこに恋手ほどきしてくだしゃんせ汤気にほんのり頬染て夜风に愿ふ…いざ!!蝶と舞ひ花となりて衣を乱して祓いましょうあやなしココロの秽れ…故!!......
  • [考试总结] 2024.10.23 最近的几场考试
    从2024.10.14考图论起。2024.10.14考图论T1转前缀和,跑差分约束或者贪心,贪心用[树状数组、并查集](?)实现。注意前缀和的额外限制(差分约束)、贪心实现的正确性。T2相当于连无向边,两点连通就能得到差。注意到没必要连接两个已经连通的点,于是会形成一棵树。带权并查集或者用......
  • 10.23
    CF660E长度为\(0\)的子序列的答案就是\(m^n\)。长度为\(k\)的子序列的答案为:\[m^k\sum_{i=k}^n{i-1\choosek-1}(m-1)^{i-k}m^{n-i}\]解释就是:\(m^k\)为这个子序列的样子的方案数,后面枚举的是这个子序列最后一个元素的位置,组合数是选前面\(k-1\)个数的位置。因为......
  • [技巧] 联考策略 2024.10.22
    (2024.10.22;我目前的水平)题目难度&我目前的水平T1:应当较快地做出来。但我目前很可能会在T1上花非常多时间(2h;最近两场考试);甚至做不出T1。T2:应当做出来。思维难度也许比T1低(最近两场考试),但可能还是T1要简单一些(毕竟[机房里T1得分比T2高些](?))。T3:可以尝试写部分分&......
  • MySQL DQL 10.22
    --一基础查询--1查询多个字段--SELECT字段列表FROM表名 ;--SELECT*FROM表名;--查询所有数据--2去除重复记录--SELECTDISTINCT字段列表FROM表名;--3起别名--AS--AS也可以省略--selectname,sexas性别fromstu;--selectDISTINCTnamefromstu......
  • 10.22随笔,二叉树求度为一的节点的个数
    今天去健身房锻炼了身体这是关于二叉树如何求度为一的节点的个数,同理还能求度为零和二的,不难。还又复习了一遍前序中序后续的遍历方法,已经可以由任意两种推出二叉树结构了,不过二叉树的样子和模式我还是有点不太能和代码结合去理解,还需要多加练习include<stdio.h>include<std......
  • 10.22 课程内容总结
    本节课学习进一步运用AI生成一份完整、独特、符合自己需要的个性化教案。以下为课程中设计到的提示语以及思维导图和PPT生成工具。提示语设计:·提示语设计,是指用户设计提供给生成式人工智能大模型的一段文字,AI根据这些文本生成回应内容。·提示语如何设计,决定了AI生成内容的质......
  • 2024.10.22 鲜花
    列表题解你从未离去浩瀚星空里只剩你的背影银河已凝结成冰记忆滑过泪滴想象能回到过去终会存在我心底虽然逃避她消失在梦里日出的幻境再次感觉到你风送来你的呼吸月色倒映着惊喜原来你从未离去默默守护在这里无声无息如影随形我不再迷茫思念是唯一的行囊漫......