[OI笔记]杂题整理1(基础篇~)

- 算是开学第四周啦,之前的三周大概过了一遍基础图论和数学相关的内容。这篇随笔打算口胡一些近期做感觉比较好的数学相关的题目
- 因为这段时间主要是看紫书学的,所以其实会有些出自UVA的例题,如果需要题目但是觉得网页慢的话OI in hand这个网站也许会有帮助w
- 如果打算自己做一遍还是不要看题解的比较好
- _(:з」∠)_可能会比较偏向于记笔记的口胡形式…?
- 不定期更新…
17.9.18
GCD XOR(UVA12716)
题意:给你一个\(n(1<=n<=3*10^7)\)问有多少对整数\((a,b)\)满足\(1<=b<=a<=n\)且\(gcd(a,b)=a xor b\)?
题解:注意到如果有\(a xor b = c\)那么可以推出\(a xor c = b\)(我也不会很妙的证明…直接考虑某一个二进制位的所有4种情况吧…(其实由于交换律应该是三种?))
那我们干脆枚举\(a\)和\(c\),因为\(c\)肯定是\(a\)的约数,所以可以枚举所有\(c\)然后枚举\(c\)的倍数\(a\)(一共是\(O(nlogn)\)个)这样只要检验所有的二元组\((a,c)\)是否有\(gcd(a,b)=gcd(a,a xor c)=c\)就行啦,时间复杂度\(O(nlog^2n)\)。
实际上还可以更优:其实有\(a-b=c\)的…这里说下我自己的想法:首先如果把\(a\)和\(b\)写成二进制形式很容易看出有\(a-b<=a xor b=c\),因为\(c=gcd(a,b)=gcd(b,a-b)<=a-b\)于是又得到了\(c<=a-b\),然后就得到\(a-b=c\)啦。
然后根据这一点就可以直接得出\(gcd(a,b)=gcd(a,a-c)=c\),于是连gcd都省了复杂度就又少掉一个log啦~
顺便这题询问挺多的可以先预处理出答案
Coupons(UVA10288)
口胡题意:卡池有\(n\)种卡,可以认为每种卡有无限张,每次抽一张,问集齐所有\(n\)种卡的期望次数
口胡题解:考虑一个简化版本:如果我已经抽到\(k\)种卡了,那么抽到一张新卡的概率是多少?\(\frac{n-k}{n}\),很显然吧记$x=\frac{n-k}{n}$,抽一次没抽到的概率就是$(1-x)$了,抽$p$次没抽到的概率是$(1-x)^p$,也很显然吧
然后现在来考虑下抽到新卡的期望次数,首先肯定要抽一次,如果没抽到就再抽,脸黑的话可能要一直抽下去…然后期望次数就是\(\sum_{i=0}(1-x)^i\),怎么算下去呢?注意到这个和式其实是一个无限的等比数列求和,如果是有限的话呢?比如如果我们求的是\(\sum_{i=0}^m(1-x)^i\)的话答案就是\(\frac{1-(1-x)^{m+1}}{1-(1-x)}\)了,注意\((1-x)<1\),于是当\(m→+∞\)时\((1-x)^{m+1}→0\),然后答案其实就是\(\frac{1}{x}=\frac{n}{n-k}\)啦…
于是要抽到所有卡的期望就是\(\sum_{k=0}^{n-1}\frac{n}{n-k}=n\cdot\sum_{k=0}^{n-1}\frac{1}{n-k}=n\cdot\sum_{k=1}^{n}\frac{1}{k}\)啦~w
17.10.9
HEOI2016排序(bzoj4552)
题意:给出\(1\)到\(n\)的一个全排列,\(m\)次操作每次对一段区间升序或降序排序,最后询问一个位置的数字(\(n,m<=10^5\))
qwq之前在浴谷秋令营上听了noip老师讲的这题,感觉做法很妙啊~
口胡题解:对每次操作排一次序,最后查位置,时间复杂度\(O(nmlogn)\)!~
上面一行划掉x
注意到给出的是一个\(1\)到\(n\)的全排列,以及这题只要在最后询问一个位置的信息,也就是说这里没有必要把每个位置具体的信息都求出来
我们可以考虑二分这个位置的答案,问题就转换到如何快速\(check\)一个\(ans\)了
我们肯定不能去直接排序这个东西,考虑维护每个位置的数字跟\(ans\)的关系,如果小于我们要\(check\)的\(ans\)就标记为\(0\),否则就标为\(1\)~
这样每次排序操作要做的就是统计一下区间里有多少个\(1\),然后根据情况进行区间赋值~
很显然上面这这种操作可以用线段树完成,于是时间复杂度就降到了\(O(nlog^2n)\)~(因为\(n,m\)范围一样就直接这样写了233)
(听说这个题还可以滋兹多次查询\(O(nlogn)\)的做…orz)
如果有错还请尽情怼我呀x
[OI笔记]杂题整理1(基础篇~)的更多相关文章
- $2018/8/19 = Day5$学习笔记 + 杂题整理
\(\mathcal{Morning}\) \(Task \ \ 1\) 容斥原理 大概这玩意儿就是来用交集大小求并集大小或者用并集大小求交集大小的\(2333\)? 那窝萌思考已知\(A_1,A_2 ...
- 正睿OI DAY3 杂题选讲
正睿OI DAY3 杂题选讲 CodeChef MSTONES n个点,可以构造7条直线使得每个点都在直线上,找到一条直线使得上面的点最多 随机化算法,check到答案的概率为\(1/49\) \(n ...
- 重新整理 mysql 基础篇————— 介绍mysql[一]
前言 准备整理mysql的基础篇了,前面整理了sql语句序列的的<sql 语句系列(八百章)>,感觉很多用不上,就停下来了,后续还是会继续整理. mysql 基础篇主要是对一些基础进行整理 ...
- 《MySQL 基础课程》笔记整理(基础篇)
一.尝试MySQL 1.打开MySQL # 启动MySQL服务 sudo service mysql start # 使用 root 用户登录,这里密码为空,直接回车登录 mysql -u root ...
- $2018/8/15 = Day \ \ 1$杂题整理
\(\mathcal{Morning}\) \(Task1\)高精度\(\times\)高精度 哦呵呵--真是喜闻乐见啊,我发现这一部分比较有意思于是就打算整理下来233.窝萌现在有一个整数\(A = ...
- 重新整理 mysql 基础篇————— mysql 事务[三]
前言 简单整理一下事务. 正文 事务有四大特性: 1.原子性(atomicity) 一个事务必须被视为一个不可分割的最小单元. 2.一致性(consistency) 数据库总是从一个一致性的状态转换到 ...
- python学习笔记六 面向对象相关下(基础篇)
面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以将多函数中公用的变量封装到对象中) 对象,根据模板创建的 ...
- 重新整理 mysql 基础篇————— 介绍mysql日志[二]
前言 对于后端开发来说,打交道最多的应该是数据库了,因为你总得把东西存起来. 或是mongodb或者redis又或是mysql.然后你发现一个问题,就是他们都有日志系统,那么这些日志用来干什么的呢? ...
- 重新整理 mysql 基础篇————— 事务隔离级别[四]
前言 简单介绍一下事务隔离的基本 正文 Read Uncommitted(未提交读) 这个就是读未提交.就是说在事务未提交的时候,其他事务也可以读取到未提交的数据. 这里举一个例子,还是前一篇的例子. ...
随机推荐
- 面试阿里,字节跳动,华为必须知道的Java创建对象的5种方式
Java创建对象的5种方式 1.直接new,调用了构造器2.通过clone(),没有调用构造器3.通过反射,调用了构造器4.通过反序列化,没有调用构造器5.通过Unsafe类的allocateInst ...
- FL Studio钢琴卷轴之工具菜单的Riff命令
鼠标左键点击FL Studio钢琴卷轴窗口中的"工具"命令,我们就可以打开快捷工具菜单.快捷菜单中包含了用于音符编辑的各种工具.按照该菜单的顺序,我们先来看一下什么是Riff器命令 ...
- 视频剪辑软件Camtasia的快捷键大全
今天来给大家介绍一下Camtasia快捷键的相关内容,Camtasia也是一个十分好用的电脑屏幕录制与视频剪辑制作软件了,可能有些朋友用过,毕竟它在视频录制与制作上确实比较好用. 首先在菜单栏中点击& ...
- 在FL Studio中制作和优化人声和弦(Vocal Chords)
人声和弦在Future Bass.Melodic Dubstep等类型的电子音乐中被常用.与一般的和弦相同,其主要起到为主旋律做铺垫的效果,但是人声和弦加入了人声的因素,可以使得和弦更有趣,更有电子音 ...
- CF980C Posterized
先来吐槽一下这个 sb 翻译,根本就没做过题吧-- 大概就是让你给值域分成连续的几组,每组大小不能超过 \(k\),然后将序列中的值全部替换成其组内的最小值,要使得序列的字典序最小. 因为是字典序,所 ...
- 牛客练习赛69 E 字串(哈希)
题目链接 题目大意 给出一个长度为n排列p 规定一个区间 [l,r] (l<=r) 是 fair 的,当且仅当区间中最小值等于 l 并且最大值等于 r 求 fair 区间的个数 题目思路 我不会 ...
- [TroubleShootting]Zabbix数据采集出现断点的问题
背景 最近发现公司的Zabbix监控大屏上的监控图经常出现数据断点的现象,主要集中在一些自定义的监控项数据上,如下图: 原因 查看Zabbix Server日志以及zabbix官方手册后,分析可能原因 ...
- C语言编程学习者问答第一期,看看这些问题你出现过吗?
今天给大家分享我们学习基地的小伙伴遇到的问题,以及正确回答,看看这些问题你遇到过吗~ 1.这张图片文字"第二段"后面的说法是否有问题? 回答: 这是二进制的加法,很多人会误解减 ...
- Android面试题《思考与解答》11月刊
又来更新啦,Android面试题<思考与解答>11月刊奉上. 说说View/ViewGroup的绘制流程 View的绘制流程是从ViewRoot的performTraversals开始的, ...
- wirshark找不到本地接口
解决方法: 1.以管理员权限运行wireshark 2.以管理员身份运行cmd,输入net start npf,打开网络抓包服务,运行wireshark legacy,选择要抓包的网卡