摘要: 题目传送:HDOJ 1233解题思路:Kruskal算法,利用Kruskal算法获得最小生成树,即可求得答案。数据结构:记录下起始坐标,结束坐标,两点距离和该路是否被选中这四个信息。View Code struct EDGE{ int x;//起始坐标 int y;//结束坐标 int len;//距离 int fg;//标记是否被选中}过程: 1、读取所有路径信息,保存在上述数据结构的数组中; 2、快速排序,使得数组中的数据结构按路径长度从小到大排列; 3、优先选择路径较短的建树,此处为for循环; 4、建树过程中,利用并查集判断该路是否会产生回路,如... 阅读全文
posted @ 2012-12-22 20:43 任琦磊 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 题目传送:HDOJ 1232 畅通工程解题思路:本题可以理解为一张无向图中给定部分连通分量,求多条连通分量间,需要至少多少条连线可以使图变为一条连通分量。对于无向图求连通分量个数问题,可以采用并查集的方法解决。并查集:一种树形结构,常用于处理不相交集合的合并和查询问题。相关链接:数据结构之并查集本题代码:#include <stdio.h>int father[1010];int findFather(int a)//寻找结点的祖父结点{ while(father[a]!=a) a=father[a]; return a;}void merge(int x, int ... 阅读全文
posted @ 2012-12-20 17:57 任琦磊 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 题目传送:HDOJ 1205解题思路:保证最大堆和次大堆间的糖果数量之差小于等于1。假设最大堆为Smax,次大堆为Ssub,总糖果树为SUM,则Smax-Ssub<=SUM-Smax-Ssub-1,即2Smax-SUM<=1。本题代码:#include <stdio.h>int main(){ int t; int n,max,temp,i; long long sum; scanf("%d", &t); while(t--) { max=0; sum=0; scanf("%d", &n); for(i... 阅读全文
posted @ 2012-12-18 17:39 任琦磊 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 题目:HDOJ 1114 该题属于完全背包问题,答案应满足:1、背包被放满,2、符合条件的最小值。因此将动规数组的初始值设为99999999(超过题设最大值)。 状态转移方程为:v[i][j]=min{v[i-1][j],v[i][j-w[i]]+p[i]}。 最后,如果动规数组最后一格数据不等于初始值,即为答案。 本题代码:#include <stdio.h>int main(int argc, char *argv[]){ int t,e,f,n,p[510],w[510],v[10010],l,i,j,ans; scanf("%d",&t); wh 阅读全文
posted @ 2012-05-10 19:31 任琦磊 阅读(370) 评论(0) 推荐(0) 编辑
摘要: HTTP协议高居应用层,自然少不了一定的“应酬”了,客户端与服务器的相认,关键在于双方的“三次握手”。 下图是登陆江西师范大学网站后通过Wireshark抓包获得的帧: 可以看到,客户端向服务器先是不停地向服务器发送了6次请求报文,然后服务器逐个进行了确认,据此可以首先确定,HTTP协议是基于TCP协议的可靠传输。具体的“三次握手”为: (1)客户端发送请求: 客户端向服务器发送了一个Connection establish request (SYN):server port http。 (2)服务器向客服端发送确认响应: 服务器向客户... 阅读全文
posted @ 2012-03-12 00:17 任琦磊 阅读(2727) 评论(0) 推荐(0) 编辑
摘要: DNS(Domain Name System,域名系统), DNS通过域名和IP地址相互映射的一个分布式数据库,使易记的域名替代了枯燥的IP地址。在因特网中向主机提供域名解析服务的机器即为DNS服务器。DNS是基于IP协议中的UDP协议,端口号为53。目前,DNS分布式查询方式一般采用递归或递归迭代相结合的方法获得域名和对应的IP。 首先通过nslookup命令进行DNS查询工作: 这里可以看到,我的本地DNS服务器为ns.jxncppt.net.cn(江西南昌电信),IP地址为202.101.224.69。我所搜索的百度(www.baidu.com)真实域名为www.a.shifen.... 阅读全文
posted @ 2012-03-10 05:01 任琦磊 阅读(5759) 评论(0) 推荐(0) 编辑
摘要: 准备好两台局域网内的电脑,一台配置为FTP服务器,另一台进行登录,并使用Wireshark抓包。 此时两台电脑的基本状态为:两台电脑(Win7系统)直接通过网线相连,其中FTP服务器的IP设为192.168.1.1,客户端的IP为192.168.1.2。FTP工具为Filezilla(由xampp附带)。 抓取的包相当杂乱,于是使用过滤器(Filter)对其进行过滤。 当过滤出这些FTP包后猛地一惊,大片的黑底红字,即Bad TCP。相应显示的错误信息为“Header checksum:0x0000 [incorrect, should be 0xb2d1 (maybe caus... 阅读全文
posted @ 2012-03-09 19:51 任琦磊 阅读(4034) 评论(6) 推荐(2) 编辑
摘要: Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。在过去,网络封包分析软件是非常昂贵,或是专门属于营利用的软件,Wireshark的出现改变了这一切。在GNU GPL通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其程式码,并拥有针对其源代码修改及客制化的权利。Wireshark是目前全世界最广泛的网络封包分析软件之一。 Wireshark的主要应用包括:(1)网络管理员使用Wireshark来检测网络问题;(2)网络安全工程师使用Wireshark来检查资讯安全相关问题;(3)开发者使用.. 阅读全文
posted @ 2012-02-26 17:33 任琦磊 阅读(4975) 评论(2) 推荐(4) 编辑
摘要: Problem Description Hey, welcome to HDOJ(Hangzhou Dianzi University Online Judge). In this problem, your task is to calculate SUM(n) = 1 + 2 + 3 + ... + n.Input The input will consist of a series of integers n, one integer per line.Output For each case, output SUM(n) in one line, followed by a b... 阅读全文
posted @ 2012-02-23 03:53 任琦磊 阅读(536) 评论(0) 推荐(0) 编辑
摘要: Problem Description I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B.Input The first line of the input contains an integer T(1<=T<=20) which means the number of test cases. Then T lines follow, each line consists of two positive intege 阅读全文
posted @ 2012-02-23 03:20 任琦磊 阅读(418) 评论(0) 推荐(0) 编辑