首页 > 其他分享 >杂题瞎写

杂题瞎写

时间:2024-08-08 19:39:07浏览次数:11  
标签:每个 杂题 复杂度 sqrt 考虑 排序 取值

来点乱搞题。


灯塔

首先,这是一个 DP。
观察到 \(\sqrt{|i - j|}\) 的取值范围是 \(O(\sqrt n)\) 的。
所以枚举每个取值,转移就是区间 \(\max\)。
随便写写 \(O(n \sqrt n)\)。

当然,这复杂度太高了,看着不舒服。
我们考虑删除一些无用的状态。
考虑若目前的最大值为 \(val\),由于 \(\sqrt{|i - j|}\) 的取值不超过 \(\sqrt n\),所以 \(<val - \sqrt n\) 的位置直接扔。
若目前的值相同且 \(\sqrt{|i - j|}\) 的值相同,则只有最远的有贡献。
所以如果把有用的值从大到小排序,每次要么是 \(val - 1\) 要么是 \(\sqrt{|i - j|} - 1\)。
所以任意时刻有用的点不超过 \(O(\sqrt n)\)。

理论上讲,由于每个点的值需要更新 \(O(\sqrt n)\) 次,在这里我们就可以草率的下结论说这题 \(O(n)\) 了。
但实际情况好像不是这样。
因为我们只是保证了每个时刻 \(O(\sqrt n)\)。
考虑每个数保留 \(O(\sqrt n)\) 个单位时间,在这段时间内会贡献 \(O(n^{\frac{1}{4}})\) 次修改。
然后总复杂度就到 \(O(n^{\frac{5}{4}})\) 了。

当然,这个复杂度也不大,很轻松就过了。

啥,正解决策单调性优化 DP?
没学过。过。


分散层叠算法

之前没做,现在补上。

考虑把所有的数放在一起,标好每个数属于哪个块,排序。
然后直接按 \(k\) 分块,每个块开个桶维护某个值在这个块及以后的第一次出现的位置。
然后这个块内的就硬扫即可。
单次查询复杂度 \(O(k + \log n)\),和分散层叠一样。
但是估计常数小了很多。

还是分块好用啊。


快速读入

没卡过去。过。


连环病原体

早就写出来了。
本来打算拿来出题的。
由于找到原题了所以就没再管。
链接


Ada and Primal Fear

一眼费用流。
但是不会写费用流。

考虑对于每个数 \(>41\) 的质数至多出现一次。
所以把 \(\le 41\) 的质数拿出来状压,剩下的直接排序处理。

几乎就是 寿司晚宴 原题了。但是寿司晚宴我好像没做过。


数论

题叫数论,题解是图论,自己做的是多项式。

现在就是 \(A, B\) 两个集合各自重复若干次,然后按位与。
观察一下就会发现需要处理的就是错开若干位的结果。
直接 \(NTT\) 预处理。就像处理字符串匹配一样。


生命中的圆

生命游戏是吧。

观察一下发现每个位置的值等于前后两个位置的异或和。
直接转化成 \(\mod2\) 意义下的加法即可。
然后就可以用多项式刻画了。

大概是个循环卷积。
直接跑复杂度也是可以接受的。


困了,不写了。

标签:每个,杂题,复杂度,sqrt,考虑,排序,取值
From: https://www.cnblogs.com/-Houraisan-Kaguya/p/18349521

相关文章

  • 「杂题乱刷2」CF1486C1 & CF1486C2
    题目链接CF1486C1CF1486C2解题思路提供一个比较显然的思路。我们发现我们可以先求出整体的最小值,然后设整体最小值所在的位置为\(id\),则我们可以通过\(1\)次询问\([1,id]\)来求出最大值的位置是在\([1,id)\)还是在\((id,n]\)。然后我们就有了整体最大值在一个前缀或......
  • 【笔记】杂题选讲 2024.8.1 下午
    [AGC018F]TwoTrees[AGC018F]TwoTrees-洛谷|计算机科学教育新生态(luogu.com.cn)先判一下奇偶性。考虑做一个很强的钦定,奇数都填\(\pm1\),偶数都填\(0\)。对于同一棵树的一棵子树,考虑对子树内两个奇数点做匹配,要求匹配上的点一个\(+1\)一个\(-1\),这样就能在子树的根......
  • 24.8 杂题
    终于又开新坑,先把lsy的题单补一补。CF1304CAirConditioner我靠,1500,真不会啊。维护\([l,r]\)表示某个时刻可能的温度,用每个人的区间更新即可。CF1322CInstantNoodles真不会啊,真不会啊。显然\(\gcd(a,b)=\gcd(a,b,a+b)\),所以不交的集合就没用了。但是一些相交的集合......
  • 杂题合集
    P1437敲砖块如果我们选择了一个点那么以它为顶点的直角指向左上角的等腰直角三角形中的所有点都应该被选定。那也就是说最后的图形是若干的直角三角形框住的元素的权值和。我们考虑一列一列考虑最后的图形,发现前一列的长度小于等于当前列的长度加一,观察发现这是充要的,用这个性......
  • 「杂题乱刷2」CF1889A Qingshan Loves Strings 2
    vp到的。题目链接CF1889AQingshanLovesStrings2解题思路我们考虑从头到尾依次判断情况。维护两个指针\(l,r\)来依次比较,直到有\(a_l=a_r\)。这种情况根据题目所述是不合法的,因此我们需要依次分讨一下两种情况:\(a_l=a_r=1\),这时我们只需要在\(s_l\)前加上......
  • 「杂题乱刷2」CF1513C
    duel到的。题目链接CF1513CAddOne(luogu)CF1513CAddOne(codeforces)解题思路我们发现,初始数列中的每个数字变为\(10\)必定只需要至多\(10\)次,于是我们可以直接预处理出\(10\)这个数字经过\(i\)次变化后能形成多少位的数字即可。状态为\(dp_{i,j}\)表示\(1......
  • 【题解】Solution Set - 杂题选讲「刘君实」
    https://www.becoder.com.cn/contest/5423「HNOI2012」集合选数感觉差不多会。7/25sh杂题听课情况NOI2018冒泡排序【40】几乎不会麦田里的守望者【40】打表找规律、最后dp不太理解星空列车【40】完全不会WereYouLast:知道怎么做,但是不知道为什么是对的A......
  • 「杂题乱刷2」P3107
    题目链接P3107[USACO14OPEN]OdometerS解题思路数位dp模板。令某个数的特殊数字为在一个数字中至少出现过一半的数位的数字。首先我们可以依次拆分数位来枚举当某个数位为特殊数字时来进行数位dp,状态为\(dp_{last,len,num,sum,\_1,\_0}\)来代表还剩余\(last\)个数位......
  • 2024 暑假集训杂题选做
    目录写在前面CF1981DCF1992F写在最后写在前面我是飞物。CF1981D2400妈的好诡异的题场上拿到这题我都不知道我要干啥呃呃考虑到每个合数均为若干质数的乘积,则若构造方案中有合数,可以将合数替换为质数从而减少使用的权值的种类数,于是仅需考虑使用质数构造,则此时并不需要考虑具......
  • 「杂题乱刷2」CF1615C Menorah
    题目链接CF1615CMenorah(luogu)CF1615CMenorah(codeforces)解题思路这题有三个重要的性质:在同一个点做两次操作与不在这个点做操作是等价的。给两个不同的点做操作等价于交换这两个点。给一个字符串做偶数次操作,这个字符串的\(0\)的数量和\(1\)的数量不会改......