竞赛
考级
114514
ZhangCxuan vOwOv
6/25 21:10 发现团队刷新不出来 @AC君
AC草(盗我号者永世不得喝水)
广搜 模板: regenfallen 6
bits/stdc++.h
最近准备接着在这写题解,大家有什么建议吗 题解后续将同步:CSDN账号&微博账号 以下内容持续更新: 完成内容: * 高精度算法I(加法,减法) * 高精度算法II(乘法) * 高精度算法III(除法)(因ACGO上已有该算法讲解,故不发ACGO,望谅解) * 排序算法I(冒泡排序) * 排序算法II(选择排序) * 二叉树Binary Tree * C++ 深度探索:从基础到高级实战(ACGO端口即将上线) 确定内容: * 排序算法III(插入排序) * 排序算法IV(桶排序) * STL库-stack(栈)-详解 * 指针-详解 * ACGO排位赛#10详解(同步ACGO看情况) 待官宣内容: * 排序算法V(归并排序) * 排序算法VI(快速排序) * 排序算法VII(sort)
Ysjt | 深 ™
听说发笔记能精华,所以我来了。 写的不好,内容少,请见谅。 由于图挂了,所以在 这里看 吧。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 分块是一种思想,并不是一种数据结构。 分块的思想,就是把数列适当的分成很多块,分别维护每个块内的信息。这虽然是一种很暴力的思想,但是比暴力快特别多。 对于查询,就是处理整块中的信息,然后再暴力枚举处理处理散块中的信息。 对于修改,和查询一样,先修改整块的信息,再暴力枚举修改散块中的信息。 下面是图: 对于整块就是红色,对于散块就是绿色: 分块的时间复杂度取决于块长,就比如我分的块长是 n\sqrt{n}n ,那么对于修改就是 n\sqrt{n}n ,对于查询也是 n\sqrt{n}n 。 块长我一般用 n\sqrt{n}n ,但是根据 OI-wiki 上说的,应该用均值不等式求,但是我不会qwq。 分块的好处是他有时候短,并且比线段树和树状数组能支持的东西强(除了线段树的特色懒标记)。但是就是时间复杂度太高了。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 比如线段树模板题,要求支持区间加与区间和查询,就可以用分块做了。 我们维护这个块内已经堆积的整体加,这个块内所有数的加和,然后再维护每个地方上的数(没有处理块内堆积的加和)。 对于查询,整块的话查红色块内的加和就可以了,散块的话查绿色块内的现在真实的数(数加上块堆积的整体加)。 对于修改,整块直接改标记,让标记加上修改的数,对于散块枚举所有数,让这个数单独加上修改。 我们就愉快的用分块水过线段树啦! 时间复杂度 O(nn)O(n \sqrt{n})O(nn ),明显劣于线段树的 O(nlogn)O(n \log n)O(nlogn),但是他码量小。 P3372 代码: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 其实分块还可以是静态的,解决的东西也多了。 如区间众数,可以 这样 处理。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 如简介所说的,分块是个 思想,别把它看作数据结构来搞。 弹飞绵羊,正解 LCT,分块是歪解(?) 首先暴力肯定是模拟每个地方往后弹到了哪里然后继续往后弹。 可以先把他分成 n\sqrt{n}n 块,维护每个数弹几次能弹出该块,和弹出该块后会跑到哪里。 先说查询,其实查询就是模拟一下每次跳到哪里了,答案加上跳了几次。 再说修改。显然修改是不会影响到其他块的,所以我们再把块内的东西重搞一遍。 对于构造这两个数组,“弹出该块后会跑到哪里”数组直接算可以吧,“弹几次能弹出该块”这个是可以递推出来的。所以构造这两个数组的时间复杂度是 O(n)O(n)O(n)。 所以总时间复杂度 O(nn)O(n \sqrt{n})O(nn )。 代码: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 练习: P1975 [国家集训队] 排队。 给你一个数列,要求支持区间加法,区间内小于 xxx 数的个数。 给你一个数列,要求支持单点修改,求区间内第 kkk 大的数是什么。 对于最后一个问题,目前处于口胡状态。现在思路是对于每个块维护一个排好序的数列。对于修改,修改块内哪个数列(插入排序 O(n)O(\sqrt{n})O(n ) 实现)。对于查询,二分答案(区间是值域)然后 check,check 中二分每个块内有多少个小于 mid 的数,然后最后和 kkk 比较(类似 P10417),时间复杂度 O(nlognlogV)O(\sqrt{n} \log n \log V)O(n lognlogV)。如果不可做就别做了。
叫我杨同学
众所周知,在第九次排位赛时官方加入了Python提交的功能,ACGO的人数也随之上升,那么接下来我们就来讨论下社区到底有多少人 这是官方发表的帖子,阅读量超过了14w,根据官方设置的,一个人最多给阅读量增加五次这一设定,用144138去 ÷\div ÷ 5 可以得到结果为28827.6,四舍五入保留整数就是28828,所以个人认为社区共有28828人 请各位发表自己的看法,谢谢
链接 都是个人观点,欢迎补充:)
暑 假 神(开学祭
ばかやろう!
もりもりあつし
此团名为"交流天地",历史悠久,值得信赖 在这个团人人都是管理员!!! 可以随便交流,没有小黑屋 致力于创造一个自由的"国度" 加入我们
轩辕
复仇者_帅童
无敌了
66666
丹恒·饮月
带SPJ的 官方的那个没有多个答案 checker代码展示 我都写了官方还不改???????
群ID977603428,仅中国团队的可加入,加入后备注ACGO用户名+ID 链接 立即加入中国团队获得进入中国团队官群的资格
一只姜(AAAAAA级遗址)
只要你有能力,就来吧!
张志彬(大号)
点我去团队 点我去竞赛 邀请码:46PQ
一时想起,四季等你
你们不打派系?
复仇者_林克━╋══⁕═➢™
老师,我那个代码是对的,可是他输出的和你给我们的那个输出的不一样。
徐皓霖𝓗𝓙𝓾𝓷𝓷是小黑
大家喜欢我的🐎🐎头像吗 喜欢的扣1
皮蛋架枪我下包
共18126条