当前位置:  编程技术>综合
本页文章导读:
    ▪二叉查找树与红黑树概念性质及操作时间复杂度       操作名(h树高) 二叉查找数 红黑树 查找 O(h) O(lgn) 查最大/小元素 O(h) O(lgn) 前驱/后继 O(h) O(lgn) 插入 O(h) O(h) 删除 O(h) O(h) 旋转 无 O(1) 高度  下.........
    ▪Linux下怎样查看机器配置,及cpu/内存/硬盘使用率      Linux下怎样查看机器配置啊?cpu/内存/硬盘 dmesg 显示开机信息。kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称.........
    ▪InterviewStreet题目(3)       Zombie March     Zombies have placed themselves at every junction in New York. Each junction 'i' initially has a presence of ai number of zombies. At every timestep each zombie randomly chooses one of its neighboring junctions and walk.........

[1]二叉查找树与红黑树概念性质及操作时间复杂度
    来源: 互联网  发布时间: 2013-11-05

操作名(h树高)

二叉查找数

红黑树

查找

O(h)

O(lgn)

查最大/小元素

O(h)

O(lgn)

前驱/后继

O(h)

O(lgn)

插入

O(h)

O(h)

删除

O(h)

O(h)

旋转

O(1)

高度

 下取整(lgn)+1<=h<=n

 <=2lg(n+1)

PS:黑高度定义:从某个结点x出发(不包括该节点)到达一个叶子结点的任意一条路径上,黑结点的个数成为该节点x的黑高度.用bh(x)表示.

 

红黑树满足的性质:

(1)    每个结点是红的或黑的

(2)    根结点是黑的

(3)    每个叶结点是(NIL)黑的

(4)    如果一个结点是红的,则它的两个孩子结点都是黑的

(5)    对于每个结点,从该节点到其子孙结点的所有路径上包含相同数目的黑结点.

 

结论:

(1).红黑树根的黑高度至少为h/2

(2).一棵n个内结点的红黑树的高度至多为2lg(n+1)


作者:ustcqi 发表于2013-1-5 16:58:43 原文链接
阅读:0 评论:0 查看评论

    
[2]Linux下怎样查看机器配置,及cpu/内存/硬盘使用率
    来源: 互联网  发布时间: 2013-11-05
Linux下怎样查看机器配置啊?cpu/内存/硬盘

dmesg
显示开机信息。kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里

dmesg|grep hd
硬盘
dmesg|grep cpu
cpu
dmesg|grep proc
内存
dmesg|grep redhat
操作系统
dmesg|more
更多信息
uname -a
操作系统版本


查看linux cpu和内存利用率
2008-07-17 18:04

在 系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要。在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况。运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 -- 用基于 top 的命令,可以控制显示方式等等。退出 top 的命令为 q (在 top 运行中敲 q 键一次)。

  操作实例:

  在命令行中输入 “top”

  即可启动 top

  top 的全屏对话模式可分为3部分:系统信息栏、命令输入栏、进程列表栏。

  第一部分 -- 最上部的 系统信息栏 :

  第一行(top):

    “00:11:04”为系统当前时刻;

    “3:35”为系统启动后到现在的运作时间;

    “2 users”为当前登录到系统的用户,更确切的说是登录到用户的终端数 -- 同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目;

    “load average”为当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过 CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程;

  第二行(Tasks):

    “59 total”为当前系统进程总数;
    
[3]InterviewStreet题目(3)
    来源: 互联网  发布时间: 2013-11-05
Zombie March
 
 
Zombies have placed themselves at every junction in New York. Each junction 'i' initially has a presence of ai number of zombies. At every timestep each zombie randomly chooses one of its neighboring junctions and walks towards it. Each neighboring junction is choosen by the zombie with an equal probability. In order to safegaurd the citizens of New York we need to find out the expected number of zombies at every junction after 'k' timesteps.
 
The network of New York is given as an edge list. 
 
Input Format:
 
t-> 'T' test cases, t test cases follow.
 
n, m, k- > number of junctions(nodes) of New York, number of roads (edges) and 'k' time steps.
 
Followed by m lines containing m edges, 1 edge in each line. Each edge is denoted by 2 integers that can range from 0 to n-1.  All the edges are bidirectional. A node cannot connect itself.
 
Followed by n  lines having initial number of Zombies at the location ai.
 
 
Constraints:
 
1<=t<=5
5<=n<=100000
1<=m<= 200000
1<=k<=10000000
1<=ai<=1000
 
Output Format:
 
No of zombies (rounded of to its nearest integer) in the Top 5 highly populated junctions after 'k' timesteps.
 
大概就是给你一张图,每个节点有一些僵尸,僵尸乱走,然后问你若干步后每个点僵尸的期望是多少。
 
每一步僵尸的状态只和前一步有关,跟前一步的前一步没有关系,所以满足马尔科夫性,这是一个典型的马尔科夫链。
既然知道了马尔科夫链就通过给定的数据可以得到状态转移矩阵,然后构造初始向量,乘以状态转移矩阵的K次方,就能得到最后的解。
 
但值得注意的是k的上限是10^7,是一个很大的数字,基本无法再规定时间内做出一个100000*100000的矩阵的如此高次幂。
因此我首先考虑的是矩阵处理。尝试进行对角化,也就是找到一个矩阵a和b使得 a*b*a^-1=X ,其中X就是原矩阵。
但是失败了,一是因为这个矩阵的秩是否为n,是否能进行对角化,二是这个对角化的过程编程实在是太过于复杂。
 
所以就要用其它的思路。
考虑到题目必然是有解的,其中一定还有什么信息还没用到,这些信息应该能当做突破点。
注意到题目的要求并没有让你求具体的期望,只要求将期望四舍五入到整数即可,所以或许不需要迭代k次,只需要迭代到一个收敛的状态即可。
那么收敛的状态是否存在呢?
答案是肯定的,根据马尔科夫链稳态存在的条件即可判断。
所谓的稳态存在的条件就是:在不可约的马尔科夫链中(如果图有不可达的区域,给定起始点将不在这个起始点所在的联通分量上的其余点都可以约掉),给定任意i,j,存在一个整数m,使得Pij(m)>0,若这个成立则此马尔科夫链必存在稳态。
换句话说,就是一个僵尸能跑到这个图的联通分量上的所有点,则条件成立,因为题目中说明了边都是双向的,因此条件一定成立。(其实这个论述也不严谨,比如n=2的情况就不成立,但好在题目中n是大于等于5的)
因此,在若干步后,此链会达到稳态,但同时我们也不知道在给定的k步内是否能趋近于稳态。
因此程序中判断若两次迭代后四舍五入的值相同,就认定是达到稳态,然后退出迭代。
代码提交通过,最长的用时大概是2S多一点。
数据存储上存储这个矩阵(稀疏矩阵),使用了哈希表和arraylist结合使用的方法,因为矩阵运算只涉及到乘,所以这样效率能高些。
代码如下:
import java.io.*;
import java.util.*;
public class Solution {
	public static void main(String[] argvs) throws NumberFormatException, IOException
	{
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		//BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream("D:/1.txt")));
		
		int CASE=Integer.valueOf(br.readLine());
		for(;CASE>0;CASE--)
		{
			String[] strs=br.readLine().split(" ");
			int n=Integer.valueOf(strs[0]);
			int m=Integer.valueOf(strs[1]);
			int k=Integer.valueOf(strs[2]);
			HashMap<Integer,ArrayList<point>> graph=new HashMap<Integer,ArrayList<point>>();
			int[] nums=new int[n];
			for(int i=0;i<=m-1;i++)
			{
				strs=br.readLine().split(" ");
				nums[Integer.valueOf(strs[0])]++;
				nums[Integer.valueOf(strs[1])]++;
				point p1=new point(Integer.valueOf(strs[0]),1);
				point p2=new point(Integer.valueOf(strs[1]),1);
				ArrayList<point> al=graph.get(Integer.valueOf(strs[1]));
				if(al==null)
				{
					al=new ArrayList<point>();
					graph.put(Integer.valueOf(strs[1]), al);
				}
				al.add(p1);
				al=graph.get(Integer.valueOf(strs[0]));
				if(al==null)
				{
					al=new ArrayList<point>();
					graph.put(Integer.valueOf(strs[0]), al);
				}
				al.add(p2);
			}
			for(Integer key : graph.keySet())
			{
				ArrayList<point> al=graph.get(key);
				for(int i=0;i<=al.size()-1;i++)
				{
					al.get(i).value/=nums[al.get(i).y];
					//System.out.println(key+" "+i+" "+al.get(i).value);
				}
			}
			double[] newarray=new double[n];
			double[] old=new double[n];
			for(int i=0;i<=n-1;i++)
			{
				newarray[i]=-1;
				old[i]=Integer.valueOf(br.readLine());
			}
			for(int i=0;i<=k-1;i++)
			{
				for(int j=0;j<=n-1;j++)
				{
					double t=0;
					ArrayList<point> al=graph.get(j);
					if(al==null)
					{
						newarray[j]=0;
						continue;
					}
					for(int h=0;h<=al.size()-1;h++)
					{
						t+=al.get(h).value*old[al.get(h).y];
					}
					newarray[j]=t;
				}
				if(canfinish(newarray,old))
				{
					break;
				}
				old=newarray;
				newarray=new double[n];
			}
			ArrayList<Integer> al=new ArrayList<Integer>();
			for(int i=0;i<=old.length-1;i++)
			{
			al.add(near(old[i]));
			
			}
			Collections.sort(al);
			for(int i=0;i<=4 ;i++)
			{
				System.out.print(al.get(al.size()-1-i)+" ");
			}
                    System.out.println();
		}
		
	}
	private static boolean canfinish(double[] a1,double[] a2)
	{
		for(int i=0;i<=a1.length-1;i++)
		{
			if(near(a1[i])!=near(a2[i]))
				return false;
		}
		return true;
	}
	private static int near(double a)
	{
		if(a-(int)a>0.5)
		{
			return (int)a+1;
		}
		return (int)a;
	}
	private static class point
	{
		int y;
		double value;
		public point(int a,double b)
		{
			y=a;
			value=b;
		}
	}
}

作者:ROger__wonG 发表于2013-1-5 16:31:28 原文链接
阅读:35 评论:0 查看评论

    
最新技术文章:
▪error while loading shared libraries的解決方法    ▪版本控制的极佳实践    ▪安装多个jdk,多个tomcat版本的冲突问题
▪简单选择排序算法    ▪国外 Android资源大集合 和个人学习android收藏    ▪.NET MVC 给loading数据加 ajax 等待loading效果
▪http代理工作原理(3)    ▪关注细节-TWaver Android    ▪Spring怎样把Bean实例暴露出来?
▪java写入excel2007的操作    ▪http代理工作原理(1)    ▪浅谈三层架构
▪http代理工作原理(2)    ▪解析三层架构……如何分层?    ▪linux PS命令
▪secureMRT Linux命令汉字出现乱码    ▪把C++类成员方法直接作为线程回调函数    ▪weak-and算法原理演示(wand)
▪53个要点提高PHP编程效率    ▪linux僵尸进程    ▪java 序列化到mysql数据库中
▪利用ndk编译ffmpeg    ▪活用CSS巧妙解决超长文本内容显示问题    ▪通过DBMS_RANDOM得到随机
▪CodeSmith 使用教程(8): CodeTemplate对象    ▪android4.0 进程回收机制    ▪仿天猫首页-产品分类
▪从Samples中入门IOS开发(四)------ 基于socket的...    ▪工作趣事 之 重装服务器后的网站不能正常访...    ▪java序列化学习笔记
▪Office 2010下VBA Addressof的应用    ▪一起来学ASP.NET Ajax(二)之初识ASP.NET Ajax    ▪更改CentOS yum 源为163的源
▪ORACLE 常用表达式    ▪记录一下,AS3反射功能的实现方法    ▪u盘文件系统问题
▪java设计模式-观察者模式初探    ▪MANIFEST.MF格式总结    ▪Android 4.2 Wifi Display核心分析 (一)
▪Perl 正则表达式 记忆方法    ▪.NET MVC 给loading数据加 ajax 等待laoding效果    ▪java 类之访问权限
▪extjs在myeclipse提示    ▪xml不提示问题    ▪Android应用程序运行的性能设计
▪http代理工作原理(3)    ▪关注细节-TWaver Android    ▪Spring怎样把Bean实例暴露出来? iis7站长之家
▪运行skyeye缺少libbfd-2.18.50.0.2.20071001.so问题    ▪sharepoint 2010 使用sharepoint脚本STSNavigate方法实...    ▪让javascript显原型!
▪kohana基本安装配置    ▪MVVM开发模式实例解析    ▪sharepoint 2010 设置pdf文件在浏览器中访问
▪spring+hibernate+事务    ▪MyEclipse中文乱码,编码格式设置,文件编码格...    ▪struts+spring+hibernate用jquery实现数据分页异步加...
▪windows平台c++开发"麻烦"总结    ▪Android Wifi几点    ▪Myeclipse中JDBC连接池的配置
▪优化后的冒泡排序算法    ▪elasticsearch RESTful搜索引擎-(java jest 使用[入门])...    ▪MyEclipse下安装SVN插件SubEclipse的方法
▪100个windows平台C++开发错误之七编程    ▪串口转以太网模块WIZ140SR/WIZ145SR 数据手册(版...    ▪初识XML(三)Schema
▪Deep Copy VS Shallow Copy    ▪iphone游戏开发之cocos2d (七) 自定义精灵类,实...    ▪100个windows平台C++开发错误之八编程
▪C++程序的内存布局    ▪将不确定变为确定系列~Linq的批量操作靠的住...    ▪DIV始终保持在浏览器中央,兼容各浏览器版本
▪Activity生命周期管理之三——Stopping或者Restarti...    ▪《C语言参悟之旅》-读书笔记(八)    ▪C++函数参数小结
▪android Content Provider详解九    ▪简单的图片无缝滚动效果    ▪required artifact is missing.
▪c++编程风格----读书笔记(1)    ▪codeforces round 160    ▪【Visual C++】游戏开发笔记四十 浅墨DirectX教程...
▪【D3D11游戏编程】学习笔记十八:模板缓冲区...    ▪codeforces 70D 动态凸包    ▪c++编程风格----读书笔记(2)
▪Android窗口管理服务WindowManagerService计算Activity...    ▪keytool 错误: java.io.FileNotFoundException: MyAndroidKey....    ▪《HTTP权威指南》读书笔记---缓存
▪markdown    ▪[设计模式]总结    ▪网站用户行为分析在用户市场领域的应用
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3