数学第二课

几个符号的认识:

  • 或      |   ,   c=a|b,二进制下c的第i位为1,当且当a和b的第i位不同时为0,即至少有一个1。
  • 异或  ^   ,   c=a^b,二进制下c的第i位为1,当且当a和b的第i位不相同。
  • 且     &   ,   c=a|b,二进制下c的第i位为1,当且当a和b的第i位同时为1。

性质:

  • ‘或’具有扩散性,即一个数列,‘或’的个数越多,结果越大。
  • ‘且’具有收敛性,个数越多,结果越小。

例题: Interview ,CodeForces - 631A

题意:给出两个长度都为N的数组a[] ,b[],(N<=1000),让你求最大的F(L,R);F(L,R)=a[L]|a[L+1]|....a[R]+b[L]|b[L+1]|....|b[R],即两个区间对应的或运算之和。

思路:数据比较小,那么我们预处理区间或运算结果,复杂度为O(N^2),然后枚举每个区间,更新答案即可。

如果N<=1e6呢?  我们需要O(N)去做。显然答案是F(1,N),因为或运算的扩散性!

(引申一下,gcd具有收敛性!

上面与这节课无关,正课:

1,欧拉函数:

什么是欧拉函数:

如何求欧拉函数:

欧拉函数的公式:

由上面的公式,联系之前学过的欧拉素数筛法,我们可以O(N)的求出[1,N]的欧拉函数。

欧拉函数的应用:

1,求逆元。

2,欧拉降幂。

我们知道a^x%p,可以用快速幂来求,复杂度为O(logx),但是有的时候x过大,这个复杂度也应付不了。久可以用上面的公式,把x减小,再快速幂。

3,累加。有的时候我们可以把一个问题转化为求与x互质的个数有多少,这样就可以用欧拉函数,效率提高。

例题:Visible Lattice Points POJ - 3090

题意:给定如果N*N的网格,问在(0,0)可以看到多少个点。N<=1000;

思路:单独考虑(0,0) (0,1) (1,0);  其他点为(x,y),这些点一定满足gcd(x,y)==1;比如(4,2)不能被看到,因为它被(2,1)挡住了。

那么我们考虑x>y,那么x一定时,y的个数就是phi[x],此时贡献为phi[1]+phi[2]+...phi[N]。

那么答案就是3+(phi[1]+phi[2]+...phi[N])*2;  我们预处理出phi的前缀和即可。

2,数学期望

通俗地理解,数学期望就是概率。

这类问题的形式一般如下:

  • 给定骰(tou)子,问第一次x正面朝上的期望的多少。
  • 给定地图,问玩家从a点到b点的期望的多少。

此类题大部分都是列方程,然后递推。

例题:Coupons UVA - 10288

题意:有N种硬币,给次得到每种硬币的概率相同,问得到N种硬币的期望的多少。

思路:我们用dp[x]表示已经得到了x种硬币的前提下,得到N种硬币的期望。

那么 dp[N]=0;

dp[x]=dp[x+1]*(1-1/x)+dp[x]*1/x; (x<N)

化简就是dp[x]=(N-x)/N,最后得到dp[0]=N*(1/1+1/2+1/3...+1/N);

更多的数学期望题目可以点击:https://www.cnblogs.com/hua-dong/p/8166093.html

3:博弈

这类题型往往是如下形式:

  • 给出一种规则,玩家A和玩家B都用最优的策略,问玩家A是否必胜。
  • 如果玩家A必胜,第一步应该怎么玩。

....

最简单的巴什博奕(Bash Game):

只有一堆N个物品,两个人轮流从这堆物品中取物,规 定每次至少取一个,最多取m个。最后取光者得胜。

当N%(m+1)==0时先手必败,其他情况下必胜。

我们可以类推,N=[1,M]必胜,  N=M+1,先手怎么取都去不完,而对方可以去完,先手必输。

N>M+1时,如果N%(M+1)!=0,那么先手取x,使得(N-x)%(M+!)==0即可保证先手能走到M+1这一步,保证了必胜。

例题:hdu2897

更多博弈可以看:https://www.cnblogs.com/hua-dong/p/8397622.html

原文地址:https://www.cnblogs.com/hua-dong/p/10102037.html

时间: 2024-08-04 00:53:47

数学第二课的相关文章

【JavaScript从入门到精通】第二课

第二课 初探JavaScript魅力-02 变量 说起变量,我们不得不提起我们有一部比较古老的电视剧叫<包青天>.包青天有一把非常厉害的宝剑叫"尚方宝剑",见到尚方宝剑有如见到皇帝.某种程度来说,变量具有类似于尚方宝剑的特性. 我们对第一课末的代码进行如下修改: function toGreen() { var oDiv=document.getElementById('div1'); //变量 oDiv.style.width='300px'; oDiv.style.he

第二课:IOS(App)UIImage控件与TextField控件学习

作为一名实习生我是1.3.5在办公室工作,2.4.6去另一个地方听课学习IOS(app)课程,为了不落下课程,我准备每天晚上把落下的课程自学一遍,把不懂的记下等去听课的时候问老师,希望自己能跟上学习的步伐,不浪费时间.这一课是前几天听的,今天一起也写上了. 第二课:IOS(App)UIImage控件与TextField控件的学习,代码如下 一:UIImage控件代码:把图片添加到视图中并设置大小,这里没有牵涉到图片背景的颜色设置,我猜想应该是没必要去设置的吧,因为没有按钮功能的话背景颜色也看不到

grails2.3.11第二课

第二课主要介绍grails相关插件的使用,这是敏捷开发所必需的途径. 可以把grails的插件看作是grails正常项目的迷你型,因为看插件的源码,它的目录结构和正常项目相差无几. 官方开源插件地址 https://grails.org/plugins 内部插件地址 http://maven.info.bit.edu.cn 主要介绍了常用的一些插件吧,每个插件的用法不尽相同,但是有一个共同点是要在BuildConfig.groovy这个配置文件里 compile 相关插件. 常用的包括: 前端插

【C语言探索之旅】 第三部分第二课:SDL开发游戏之创建窗口和画布

内容简介 1.第三部分第二课: SDL开发游戏之创建窗口和画布 2.第三部分第三课预告: SDL开发游戏之显示图像 第三部分第二课:SDL开发游戏之创建窗口和画布 在上一课中,我们对SDL这个开源库做了介绍,也带大家配置了SDL的开发环境.请大家按照上一课的步骤创建一个SDL工程,能够初步运行. 如果遇到问题,可以百度,Google相关平台SDL的配置.或者联系小编. 当然了,有些朋友可能会说开发C语言游戏还可以用GTK+这个库,但是个人认为GTK+没有SDL那么适合开发游戏,其创建图形界面的能

【Cocos游戏实战】功夫小子第二课之基础类分析和实现

本节课的视频教程地址是:第二课在此 如果本教程有帮助带您,希望您能点击进去观看一下,而且现在注册成为极客学院的会员,验证手机号码和邮箱号码会赠送三天的会员时间,会员可以无限制的下载和观看所有的视频,谢谢您的支持! 在开始第二节课之前,这里需要声明的是, 首先:本系列课程是为了结合Cocos2d-x 3.x 的基本组件和核心模块的学习而制作的,开发所使用的版本是3.0,但是代码稍加修改就可以运用在3.X的其他版本上. 其次:本游戏项目是一个非商业化项目,游戏资源和代码都会在后续的课程中释放出来,供

【转】第二课.配置和初始化

原文网址:http://fsjoy.blog.51cto.com/318484/244803 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://fsjoy.blog.51cto.com/318484/244803 第二课.配置和初始化 配置git 在使用git之前你需要配置一下git.git在你创建提交的时候会记录你的名字和email地址,所以你应该告诉git这些内容.可以使用'git config'命令来设置,如果传递参数'-

ThinkPHP第二课 框架MVC目录和URL访问方式

第二课 框架MVC目录和URL访问方式 1.说明: ThinkPHP是基于MVC的框架,认识框架目录将更好的实现分层,掌握ThinkPHP.URL访问就是访问框架的控制器(MVC中的C),共有四种方式,框架中的C起到分模块的作用. url的4种访问方式: 1.PATHINFO 模式 -- 重点!!!!!! http://域名/项目名/入口文件/模块名/方法名/键1/值1/键2/值2 2.普通模式 http://域名/项目名/入口文件?m=模块名&a=方法名&键1=值1&键2=值2

【Web探索之旅】第二部分第二课:服务器语言

内容简介 1.第二部分第二课:服务器语言 2.第二部分第三课预告:框架和内容管理系统 第二部分第二课:服务器语言 介绍了Web的客户端,我们来谈谈Web的服务器端. 既然客户端有客户端的编程语言(HTML,CSS和JS),那么我们服务器端岂能逊色呢,对吧. 服务器端也有不少种编程语言.这些编程语言写成的程序会在服务器端的电脑上被执行. 如果说客户端的语言编写的程序决定了我们的网页的外观,那么服务器端的语言编写的程序决定了网页的功能和如何与用户交互. 你也许会问:"既然我们可以用HTML,CSS和

【C语言探索之旅】 第二部分第二课:进击的指针,C语言的王牌!

内容简介 1.课程大纲 2.第二部分第二课: 进击的指针,C语言的王牌 3.第二部分第三课预告: 数组 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量类型