类似题目如下(数值是可变化的) 你的面前有30个硬币,其中有10个正面朝上,20个反面朝上,混乱在一团. 要求:现在用厚布遮住你的眼睛.要你把30个硬币分成2团,每团正面朝上的硬币个数相等.问:你要怎么分?不能用手去触摸感觉,也没有其他人帮忙. 答案如下 分为两堆,一堆10个,一堆20个,然后将10个那堆翻转,即可. 原理 假设分为两堆,A堆,有10个,B堆,20个. A(正)=X A(反)=10-X B(正)=10-X 发现没有,只需要把A堆翻转,A(正)=10-X 就能完成了. 数字变化 如…
昨天分析了一下硬币正反的问题,其中说到一点是求美女收益期望E(女)=-8xy+3y+3x-1 最大化,当然结果我们是说的一个范围内的变化以及可以针对性的调整.这里再次说明一下,不是简单的求二元函数的最大值,这是在我分析过程最一直在寻求求这个二元函数 x,y在[0,1]范围内的最大值.其实这样子理解是错的,这理如果求出最大值得到的是x,y在一些点上,比如x为1,y为0的时候是收益为2,是最大的,但是在这个博弈的过程中不可能屌丝男都一直出正面,所以我们把y缩小到[1/3,2/5]区间内,这个内再来求…
常用数据结构与算法的实现.整理与总结 我将我所有数据结构的实现放在了github中:Data-Structures-Implemented-By-Me 常用数据结构与算法的实现.整理与总结 KMP字符串匹配算法 环状队列 走迷宫算法 中缀表达式转后缀表达式 环装链表 双向链表 树 二叉树 树的广度优先搜索 二叉树的遍历 二叉树的非递归遍历 胜者树与败者树 ALV树 最小最大堆 节点的添加 删除节点 双端堆 双端堆的插入 双端堆的删除 插入排序 选择排序 合并(归并)排序 合并排序算法思路 改造归…
Socket Server模块 SocketServer内部使用 IO多路复用 以及 “多线程” 和 “多进程” ,从而实现并发处理多个客户端请求的Socket服务端.即:每个客户端请求连接到服务器时,Socket服务端都会在服务器是创建一个“线程”或者“进 程” 专门负责处理当前客户端的所有请求. socket server 和 select & epoll 还是不太一样他的本质是:客户端第一次链接的时候,只要一进来,我服务端有个while循环为你创建一个 线程和进程,客户端就和服务端直接创建…
最近在学习JS,刚好学到数组,发现章节还蛮多了而且发现了数组的以前好多不知道的东西,顺便整理下: 数组一共有有四种定义的方式 使用构造函数: var a = new Array(); var b = new Array(8); var c = new Array("first", "second", "third"); 或者数组直接量: var d = ["first", "second", "t…
本文部分转自:http://sundful.iteye.com/blog/704079 和 http://www.vckai.com/p/5 有时候在XShell中操作的一些命令傻傻的分不清这个命令到底是Xshell自身的还是Linux系统自身的. 看网上的一些总结文章也是有搞混的.于是把这两个Xshell的操作和Linux系统中的常见命令都放到一起来总结. XShell是一款Windows下非常优秀的远程连接Linux主机的工具,类似的还有SecureCRT. 一.复制和粘贴 在Windows…
翻译自 java8-tutorial 新特性 Default Methods for Interfaces(接口的默认方法) Java 8 使我们能够通过使用 default 关键字将非抽象方法实现添加到接口.这个功能也被称为虚拟扩展方法. 这是我们的第一个例子: interface Formula { double calculate(int a); default double sqrt(int a) { return Math.sqrt(a); } } 除了抽象方法 calculate ,…
***collections 扩展数据类型*** ***re 正则相关操作 正则 匹配字符串*** ***time 时间相关 三种格式:时间戳,格式化时间(字符串),时间元组(结构化时间).***```python#时间戳: timestamp 从1970年1月1日00:00开始按秒计算偏移量.time.time() #格式化时间: (Format String) 1992-12-10%Y-%m-%d_%a %H:%M:S%y 两位数的年份表示(00-99)%Y 四位数的年份表示(000-999…
无旋版 $Treap$. 只需要两个操作即可达到 $splay$ 的所有功能 1.$split$ 它的主要思想就是把一个 $Treap$ 分成两个. $split$ 操作有两种类型,一种是按照权值分配,一种是按前 k 个分配. 第一种就是把所有小于 k 的权值的节点分到一棵树中,第二种是把前 k 个分到一个树里. 权值版: void split(int o,int k,int &x,int &y){ //这里的x,y分别是将以o为根的树切开后第一个新子树的根和第二个新子树的根 ; else…
先给出github上的代码链接以及项目需求 1.项目概述 这个项目的需求可以概括为:对记事本(txt)文件进行单词的词频统计和排序,排序结果以指定格式输出到默认文件中,并要求能够快速地完成整个统计和结果输出功能.乍一看,这个功能实现起来十分简单,基本上就是遍历一遍文件,对提取出来的单词按照词频排个序就搞定了.但是要是考虑到性能问题,那还需要多动动脑筋.下面附上这项目的PSP表格. PSP2.1 PSP阶段 预估耗时(分钟) 实际耗时(分钟) PSP2.1 PSP阶段 预估耗时(分钟) 实际耗时(…