随笔分类 -  敲打算法

摘要:转载:《计算机教育》第10期 作者:汪鹏 计算机是人类解决难题、探索未知以及提供娱乐的绝佳工具。在高效运行着的各种计算机应用背后,融汇了人类在物理、电子和数学等多门学科的高超智慧。严密的数学使得计算机能高效执行人类指令,控制内部各种数据流的走向,因此在现代计算机科学研究中,数学的基础地位和重要作用无可替代:它使我们最大程度利用有限的硬件、软件资源,它使我们能够在浩瀚的数据海洋中快速查到所关心的信息……数学与计算机科学一起演绎了许多精彩的故事!一、NMF的发展及原理著名的科学杂志《Nature》于1999年刊登了两位科学家D.D.Lee和H.S.Seung对数学中非负矩阵研究的突出成果. 阅读全文
posted @ 2012-10-10 08:41 Hsiao的二进制人生 阅读(480) 评论(0) 推荐(0)
摘要:描述继百度搜索框大厦之后,百度又于2012年初在深圳奠基了新的百度国际大厦,作为未来百度国际化的桥头堡。不同于百度在北京的搜索框大厦,新的百度国际大厦是一栋高楼,有非常多的楼层,让每个楼中的电梯都能到达所有楼层将是一个极为不明智的设计。因此,设计师给出了一个特别的设计——一共大厦有m个电梯,每个电梯只有两个按钮,(针对第i个电梯)两个按钮分别可以使电梯向上或ui层向下一定di层;百度国际大厦很高,你永远到不了顶层,也就是说电梯没有上限,但是,电梯不可以钻入地下,也就是说是有下限的。我们将每层楼用整数标记,为了体现IT公司的特质,我们以0作为地面这一层的标记。如果你某天在百度国际大厦的0层,仅可 阅读全文
posted @ 2012-05-30 00:37 Hsiao的二进制人生 阅读(510) 评论(0) 推荐(0)
摘要:时间限制:1000ms内存限制:65536kB描述百度地图有自己的一套坐标系(你可以把它看作一个笛卡尔坐标系),在这套坐标系里,一个标准单位为1km。而在这坐标系上针对地理信息进行标注的数据,大多数时候是通过购买的方式完成的。为了节约数据更新的成本,数据组里的鑫哥想出了一个好主意——自己测数据。鑫哥按照他的预想开始实验;在每组试验中,鑫哥选取了三个已经被准确标注在百度地图的坐标系里的移动运营商的基站作为信号接收点(这里可以准确的得到信号的接收时间信息)。当信号接收点附近的用户手机签到时,三个信号接收点就会先后接收到这个信号,并可以准确的知晓接收到信号的时间(将第一个信号点接收到信号的时间记为0 阅读全文
posted @ 2012-05-30 00:18 Hsiao的二进制人生 阅读(166) 评论(0) 推荐(0)
摘要:时间限制:1000ms内存限制:65536kB描述百度Hi作为百度旗下的即时聊天工具,在百度公司内部很是流行。要实现这样的一个聊天工具,最重要的问题就是要能保证我发出的内容能原封不动的在接收同学那里显示出来。今天,就给你一个机会,让你模拟一下百度Hi传递信息的过程,把我发给Robin的聊天内容原封不动的输出出来。输入输入的聊天内容数据有多组,每组数据占一行。输出与输入聊天内容完全相同的内容。请注意每组数据中的空格也要原封不动的被传过去噢~样例输入Hello Robin 今天下午去五福颁奖,具体时间是2012年8月3日 15:40噢~样例输出Hello Robin 今天下午去五福颁奖,具体时间是 阅读全文
posted @ 2012-05-29 23:14 Hsiao的二进制人生 阅读(157) 评论(0) 推荐(0)
摘要:时间限制:1000ms内存限制:65536kB描述馅饼同学是一个在百度工作,做用户请求(query)分析的同学,他在用户请求中经常会遇到一些很奇葩的词汇。在比方说“johnsonjohnson”、“duckduck”,这些词汇虽然看起来是一些词汇的单纯重复,但是往往都是一些特殊品牌的词汇,不能被拆分开。为了侦测出这种词的存在,你今天需要完成我给出的这个任务——“找出用户请求中循环节最多的子串”。输入输入数据包括多组,每组为一个全部由小写字母组成的不含空格的用户请求(字符串),占一行。用户请求的长度不大于100,000。最后一行输入为#,作为结束的标志。输出对于每组输入,先输出这个组的编号(第n 阅读全文
posted @ 2012-05-29 22:20 Hsiao的二进制人生 阅读(118) 评论(0) 推荐(0)
摘要:时间限制:1000ms内存限制:65536kB描述百度百科有一支神奇的队伍,他们叫自己“百科蝌蚪团”。为了更好的让蝌蚪团的成员们安排工作,百度百科的运营团队定出了一个24小时制的时间表。例如:1.每个蝌蚪团成员工作时长相同;2.必须安排蝌蚪团成员在他们方便的时间段工作;3.蝌蚪团成员安排时间最小安排时间节点(开始工作或停止工作)为半小时,比如04:00或04:30,而不是04:15;4.蝌蚪团成员一天在百度百科工作的时间是有上限的,他们会根据自己的情况给出上限。5.在特定时间段内必须有一定数量的蝌蚪团成员工作,以保证百度百科不断的进步请帮运营团队计算一下,能保持24小时稳定在岗的蝌蚪团最少成员 阅读全文
posted @ 2012-05-29 20:49 Hsiao的二进制人生 阅读(208) 评论(0) 推荐(0)
摘要:时间限制:2000ms内存限制:65536kB描述在百度之星的贴吧里面,Java的爱好者和C++的爱好者总是能为这两种语言哪个更好争论上几个小时。Java的爱好者会说他们的程序更加整洁且不易出错。C++的爱好者则会嘲笑Java程序很慢而且代码很长。另一个Java和C++爱好者不能达成一致的争论点就是命名问题。在Java中一个多个单词构成的变量名应该按照如下格式命名:第一个单词的开头用小写字母,其余单词都以大写字母开头,单词与单词之间不加分隔符,除单词的首字母之外的字母一律使用小写。例如:javaIdentifier, longAndMnemonicIdentifier, name, bAIDU 阅读全文
posted @ 2012-05-29 20:22 Hsiao的二进制人生 阅读(190) 评论(0) 推荐(0)
摘要:时间限制:1000ms内存限制:65536kB描述在百度工作的小诺是一个USB设备迷,在他桌上有一堆的USB设备——USB鼠标、USB小音箱、USB按摩器……但是,公司配给小诺的ThinkPad X系列的电脑只有一个能用的USB接口。不过还好,小诺有一堆的USB Hub,可以把一个可用的USB接口变成多个USB接口。但是,小诺很难确定这些USB Hub能否满足他他众多的USB设备的需求。输入输入首行包括一个整数N(1 ≤ N ≤ 20),表示测试数据组数。接下去的N行,每行包括一组测试数据。每组测试数据行以一个整数K开头(1 ≤ K ≤ 10),表示这组测试数据提供的USB Hub的数量;紧接 阅读全文
posted @ 2012-05-29 18:43 Hsiao的二进制人生 阅读(188) 评论(0) 推荐(0)
摘要:时间限制:1000ms内存限制:10000kB描述装载百度易平台的易手机已经上市,为了更好的为大家提供服务。百度与合作的运营商正在讨论为易手机用户推出一款特别的套餐,帮助大家更好的利用易手机。作为这个项目负责人的晓萌调研了大量用户使用这个套餐后会出现的资费预估,让我们来看看这个特别的套餐到底会带来怎样资费情况吧。输入输入数据包括十二行,每行包括一个数字(不含金钱符号$),表示晓萌调研的某一用户使用特别套餐后,一月到十二月消费的资费情况。每行包括的这个数字精确到小数点后两位。输出输出仅一行,表示用户使用该套餐后,针对给出的12个月的资费的均值情况。在分位采用四舍五入进位。输出以金钱符号$开头,输 阅读全文
posted @ 2012-05-29 18:29 Hsiao的二进制人生 阅读(188) 评论(0) 推荐(0)
摘要:时间限制:1000ms内存限制:131072kB描述百度2005年8月5日上市时,在北京和纳斯达克的同学们每一个小时整点时就会通一次电话,对一下表,确认一切相关活动都精确同步。但是要注意,在两边的同学位于不同的时区,在夏时制时,两地时差12小时,因此,每次对表都需要做一下时区转换。你来帮我们完成这个有点麻烦的工作吧。输入输入的第一行包括一个整数T(T ≤ 30),表示测试数据的组数;接下去的T行每行包括一个时间,表示两地中的一个地方同学报出的整点的时间,表示成“H:M”的形式,其中H是小时(0 ≤ H < 24,且当H小于10的时候可以表示成1位或者2位的形式)、M是分钟(0 ≤ M < 60 阅读全文
posted @ 2012-05-29 18:16 Hsiao的二进制人生 阅读(155) 评论(0) 推荐(0)
摘要:进程之同步、互斥PV操作笔记应试技巧总结:难点--切记:P(申请一个资源/进程),V(释放一个资源/进程)难点--区分或者查看题中的0,1:信号量S(公用信号量1表示,私用信号量2表示)。 通常:私用信号量在试卷中已经告知于你它的值是0或者1(你只需辩论1与0,就能做题); 通常:公用信号量为一个类似缓冲容器一样它的值没有限制可大可小。下面介绍如何花三步就弄清通常会考的题型---填空:第一步:理解题目考点(同步与互斥) 1)互斥:执行某进程P1接着执行P2,P3进程(是在同步环境下,不管进程S1是否结束都要继续的执行P2,P3)乃互斥。[提供:多个请求P,多个接收进程] 2)同步 :执行某进程 阅读全文
posted @ 2011-11-10 22:09 Hsiao的二进制人生 阅读(376) 评论(0) 推荐(0)
摘要:计数问题TimeLimit:1 Second MemoryLimit: 32 MegabyteDescription给你两个数a和b,你的任务是计算出1在a和b之间出现的次数,比如说,如果a=1024,b=1032,那么a和b之间的数就是:1024 1025 1026 1027 1028 1029 1030 10311032则有10个1出现在这些数中。Input输入不会超过500行。每一行有两个数a和b,a和b的范围是0 < a, b < 100000000。输入两个0时程序结束,两个0不作为输入样例。Output对于每一对输入的a和b,输出一个数,代表1出现的个数。Sample 阅读全文
posted @ 2011-04-17 21:30 Hsiao的二进制人生 阅读(165) 评论(0) 推荐(0)
摘要:# include "stdlib.h"# include "stdio.h"struct Node{int data;Node *next;};int main(){int n,k=1,m,i,s; Node *p,*q,*head; printf("约瑟夫问题——顺序表/n输入总人数n和退出编号m:/n"); // 输入总人数,退出编号 scanf("%d%d",&n,&m); head=new Node; //确定头结点 p=head;for(i=1;i<=n-1;i++) //赋初值{ 阅读全文
posted @ 2011-03-16 11:54 Hsiao的二进制人生 阅读(154) 评论(0) 推荐(0)
摘要:# include "stdlib.h"# include "stdio.h"# include "conio.h"# define nmax 255main(){int i,j,k,m,n,num[nmax],*p;printf("约瑟夫问题——顺序表/n输入总人数n和退出编号m:/n"); // 输入总人数,退出编号scanf("%d%d",&n,&m);p=num;for(i=0;i<n;i++)*(p+i)=i+1; // 人的位置编号从1开始到ni=0; // i 阅读全文
posted @ 2011-03-16 11:53 Hsiao的二进制人生 阅读(330) 评论(0) 推荐(0)
摘要:这两天看见夏宇和与袁明明学长关于顺时针打印矩阵的算法,不忍也自己写了一个。很简单的循环和递归,相比学长的算法逊色不少,请多多指教。题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如:如果输入如下矩阵:12345678910111213141516则依次打印出数字1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10。鄙人的垃圾代码:#include<iostream>using namespace std;#define M 100#define N 100int a-[N];int loop(int s,i 阅读全文
posted @ 2011-03-16 11:52 Hsiao的二进制人生 阅读(191) 评论(0) 推荐(0)