- 博客(153)
- 资源 (4)
- 收藏
- 关注
原创 HDU 2489 Prim+DFS
因为是完全图,所以可以采用如下的方式进行DFS搜索,枚举出每一种情况,然后用Prim进行计算。#include#include#define N 20int n,m,vis[N], ans[N], pre[N], hash[N];double G[N][N], weight[N], minCost[N], minRatio;double prim(){ memset(ha
2013-08-03 21:23:33
674
原创 HDU 1598
将边先排序,然后从最小的边开始枚举,当发现需要查找的两个点在一个并查集里面的时候就计算差值,并与min比较。#include #include #include #include using namespace std;#define LLEN 210#define INF 0x3ffffffftypedef struct edge { int u, v; int w;
2013-08-03 18:20:56
1217
原创 2013渣打GitHub测试代码
Length题目介绍您要做的是一个长度单位转化和计算工具,能够把不同的长度单位转换为标准长度(米),并且可以在不同单位之间进行加减运算。输入文件输入文件input.txt的内容可分为两部分:不同单位和标准长度米的转换规则, 比如1 mile = 1609.344 meters, 代表1英里等于1609.344米;转换前或者计算前的单位,比如 1.2 miles
2013-08-03 16:11:33
2293
6
原创 ZOJ 1586 Prim
在用 Prim的时候只要将 adapter 事先算如边中即可#include #include #include #include using namespace std;#define LLEN 10010#define MLEN 1010#define INF 999999999int adapter[LLEN];int map[MLEN][MLEN];void
2013-08-03 10:40:25
956
原创 HDU 1196
位运算的题#include #include #include using namespace std;int main() { int n; while(scanf("%d", &n), n != 0) { int i = 1; while(!(n&i)) { i <<= 1; } printf("%d\n", i); } return 0;
2013-08-02 16:44:18
712
原创 HDU 1062
水了一道题,看到网上一些人的解题报告并不完美。这里用栈去模拟这个过程应该是比较好的解法,如果用判断空格,然后用 i-1的话,遇到以空格开头的数据就不对了。#include #include #include #include using namespace std;int main() { int t; scanf("%d", &t); getchar(); for(in
2013-08-02 16:24:30
1001
原创 ZOJ 1542 Kruskal
一开始输出弄错了,卡了好久直接上代码了#include #include #include #include using namespace std;#define ELEN 15005#define VLEN 1005typedef struct Edge { int u, v; int w;}Edge;Edge e[ELEN];int p[VLEN];i
2013-08-02 15:04:48
716
原创 ZOJ 1203 Kruskal
Kruskal的题,首先计算边,然后排序遍历。中途由于格式错误PE了,改了一下。#include #include #include #include #include using namespace std;#define LLEN 105#define SSIZE 10010typedef struct Point { double x, y;}Point;
2013-08-02 13:38:29
782
原创 HDU 1102 Kruskal
一开始边开少了,结果RE了一次。改了一下边的大小就过了Kruskal算法就是找边,先把边都存起来,然后排序,挨个查找并且利用并查集判断#include #include #include #include using namespace std;#define LLEN 102#define EDGELEN 10010int map[LLEN][LLEN];type
2013-08-02 08:51:30
768
原创 HDU 1161
本来想做Kruskal的,结果做了个这个。#include #include #include using namespace std;int main() { char str[1005]; while(gets(str)) { for(int i = 0; str[i] != '\0'; i++) { if(str[i] = 'A') { str[i] =
2013-08-02 07:54:17
1194
原创 HDU 3371 Kruskal
这里边比较多,所以利用Kruskal算法#include #include #include #include using namespace std;#define LLEN 25005int n, m, k;int map[505][505];int conn[505][505];typedef struct Edge{ int u, v; int w;}E
2013-08-01 23:22:33
856
原创 Snort文本处理源代码
attack.conf 配置文件:sqlinfo.conf 配置文件:MYSQL_LOCALHOST = 127.0.0.1MYSQL_NAME = rootMYSQL_PWD = ******MYSQL_DBNAME = snortMYSQL_TABLE = securityevent st.sh 启动脚本:#!/bin/shkill -9 `ps -ef
2013-07-23 21:37:19
1017
原创 ZOJ 1091 BFS
广搜,由于要记录步数,所以又用到了滚动队列。一开始没判断起点和终点在一起的情况,WA了一次#include #include #include #include #include using namespace std;char ss[3], dd[3];int map[9][9];int dx, dy;int point[8][2] = {{1, 2}, {
2013-07-16 12:41:29
830
原创 ZOJ 1136
广搜,每个节点有两个值,一个是当前的数字,另一个是余数,用余数可以减少以后的计算量,并且可进行剪枝,从而减少了常数时间的复杂度#include #include #include #include #include using namespace std;struct Node { string num; int mod; Node() {} Node(stri
2013-07-16 10:36:19
1313
转载 Linux一些重要的头文件
1.系统调用 ---文件的操作函数#inlclude int open(char *name,int how) 文件打开#include int close(int fd) 文件关闭size_t read(int fd,void *buf, size_t count) 读size_t write(int fd,c
2013-07-05 20:33:23
12152
原创 ACM小结(6/16/2013)
HDU 149题ZOJ 9题POJ 33题UVA 15题CF 20题Euler 3题 共计:229题(不包括重复的)
2013-06-16 21:57:58
728
原创 ZOJ 2913 BFS
需要求最短路,所以依旧是广搜#include #include #include #include using namespace std;#define LEN 10000#define INF 100000int mz[LEN];int n, m;int edge[LEN][10];int res[LEN];int reach[LEN];int cur;i
2013-06-16 21:01:06
751
原创 ZOJ 1649 BFS
搜索最短路径,那么用深搜肯定就不行了,深搜只能用来搜索可行解,但是答案并不一定是最优的,所以这里就用广搜了#include #include #include #include using namespace std;#define LEN 201#define INF 10000000int dir[4][2] = {{1, 0}, {-1, 0}, {0, 1}
2013-06-16 12:12:44
644
原创 HDU 1025
最长公共子序列的变形, 但是如果直接使用原来的方式做的话, 时间复杂度为O(n^2) 超时, 所以这里要用二分进行优化, 每次都将之前没有用的数据清除掉, 其中使用了贪心的思想#include #include #include #include #define _MAX 99999999#define LEN 500005#define MAX(A,B) (A>
2013-05-16 19:00:41
1068
原创 UVa 11081
只确定除了状态量, 没想出状态方程, 这道题的难度还是挺大的.下面是别人的解题报告:http://par.cse.nsysu.edu.tw/~advprog/advprog2008/11081.doc代码:#include#include#define MAXN 65int n;char s1[MAXN], s2[MAXN], s3[MAXN];int f1[MAX
2013-05-09 21:41:51
938
原创 UVa 348
矩阵连乘问题, 需要注意的是 () 的输出问题现放出用递归写的一个RE代码, 递归这里会暴栈:#include #include #include using namespace std;#define MIN(A,B) (A<B?A:B)int path[15][15];int d[15][15];int a[15][2];int dp(int s, int e)
2013-05-09 13:14:57
960
转载 WCHAR和char的转换
#include #include //function: charTowchar //purpose:char to WCHAR 、wchar_t、LPWSTR etc void charTowchar(const char *chr, wchar_t *wchar, int size) { MultiByteToWideChar( CP_ACP,
2013-05-07 00:50:34
952
原创 UVa 147
动归的复习,完全背包问题精度问题卡了好长时间,double 转 int 时要加0.5#include #include #include using namespace std;#define LEN 30005int mon[11] = {5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000};long long a
2013-05-04 15:24:24
749
原创 UVa 103
DAG模型的复习,始终AC不了,不知为何~~~~(>_#include #include #include #include #include #define SIZE 35#define MAX(A,B) (A>B?A:B)using namespace std;vector vct[SIZE];int vis[SIZE], d[SIZE];int ro
2013-05-03 17:47:13
810
转载 BackTrack 5 Wicd不能连接无线网络的解决办法
今天刚装上BT5 (Gnome 32),在使用wicd连接无线网络的时候总是连接失败(偶尔成功过)。 问题具体情况: 我的无线网络是WPA2的,首先在终端输入/ect/init.d/wicd start,然后在Application中打开wicd network manager,找到我要连接的SSID,点击Properties,在Use Encryption中选择WPA1/
2013-03-29 15:05:55
6054
原创 词法分析器(C语言版)
词法分析器:有限状态机的理论并不难,但是如果把状态机理论转换成代码,这个就需要思考了数据结构设计:char charList[_CHARLIST_SIZE][15] = {0};char charList_nu[_CHARLIST_SIZE] = {0};char charList_index = 0;char numList[_NUMLIST_SIZE][15] =
2013-03-25 14:13:54
2537
原创 Snort配置rules问题
1.ERROR: parser.c(5047) Could not stat dynamic module path "/usr/local/lib/snort_dynamicengine/libsf_engine.so": No such file or directory.Fatal Error, Quitting.. 原因:没有找到/usr/local/lib/sno
2013-03-16 16:54:59
6302
原创 CentOS部署Snort
操作系统:CentOS6.3 x86_64只需按照以下网址依次下载软件包,然后安装即可需要安装的组件:1.Libpcap:http://www.tcpdump.org/wget http://www.tcpdump.org/release/libpcap-1.2.1.tar.gztar xvf libpcap-1.2.1.tar.gz
2013-03-10 21:45:00
9931
原创 Linux各种压缩包解压总结
压缩包类型很多,今天用的时候又忘记了一部分,所以在这里做个总结了tgz包:gzip -dv *.tgztar包:tar xvf *.tartar.gz包:tar -zxvf *tar.gzzip包:unzip *.ziprpm包:rpm2cpio *.rpm | cpio -div如果只要看内容的话:rpm -qp
2013-03-10 21:36:54
839
原创 Linux ShellCode远程攻击原理
这里就以exit 系统调用为例首先编写C代码,在GDB中使用 disass _exit 反汇编exit 函数,之后迁移为汇编代码。section .textglobal _start_start:xor eax, eaxxor ebx, ebxmov al, 0x01int 0x80之后只用如下nasm 进行汇编, ld 进行连接,生成可执行文件nasm -f elf
2013-02-27 23:29:55
2090
原创 FTP服务器构建
这里只介绍用 vsfptd,如需看ProFTPD,请出门右转[root@localhost ~]# yum -y install vsftpd之后就可以用 service 启动了[root@localhost ~]# service vsftpd start配置文件 /etc/vsftpd/vsftpd.conf用户管理:adduser -d
2013-02-26 21:43:32
593
原创 OpenSSH构建SSH服务器
SSH 文件配置有如下几个文件:[root@sample ~]# vi /etc/ssh/sshd_config ← 用vi打开SSH的配置文件#Protocol 2,1 ← 找到此行将行头“#”删除,再将行末的“,1”删除,只允许SSH2方式的连接 ↓Protocol 2 ← 修改后变为此状态,仅使用SSH2#ServerKeyBits 768 ← 找到这一行,将行
2013-02-26 20:16:43
621
原创 NIDS-端口扫描检测初步(抓包部分)
原来的代码耦合性太高了,我重构了一下,模块化了。扫描部分还待扩充头文件:config.h#ifndef lib_pcap_pcap_h#include "pcap.h"#endif#ifndef HAVE_PARAM_H#include "param.h"#endif#ifndef HAVE_CONFIG_H#define HAVE_CONFIG_H
2013-01-29 22:19:11
1714
原创 Winpcap数据包的抓取及还原
winpcap技术手册,除了安装文件里doc文件下有个帮助,这里在给一个:http://www.ferrisxu.com/WinPcap/html/index.html这里我们用pcap_next_ex 函数抓取到数据包后,我们就要开始提取其中的关键信息了,这里我保存在了pkt_data里,之后又传到了处理函数中代码如下,我也已经写的很清楚了。其中MAC地址是在数据链路层获取的,其他的诸如
2013-01-26 23:12:46
9911
2
原创 HDU 4006
先上一个AC代码,用的是优先队列#include#include#include#include#includeusing namespace std;int main(){ int n,k,i,num,j; char str[1000]; while(cin>>n>>k){ priority_queue,greater >q; getchar()
2013-01-25 18:31:46
885
原创 HDU 1290
其实就是个数学题,解方程的系数即可二维平面的一般方程都是an^2+bn+c,而三维平面的方程一般都是an^3+bn^2+cn+d这里给了三个数据,自己在创立一个数据即可,输入为4,结果为15求的系数,解出方程#include #include using namespace std;int main() { int a, ans; while(scanf("%
2013-01-25 15:52:49
1007
原创 HDU 2120
用并查集求二维空间区域个数。并查集本身是集合的应用,但是由于每次只告诉你两个点之间有墙,只要当这两个点的父节点是同一个,并且再次有墙时,就把结果加1,因为这个时候肯定就会产生一个区域。#include #include using namespace std;#define LEN 1001int p[LEN];void init() { int i; for(i =
2013-01-24 21:38:58
781
原创 Linux启动设置以及系统修复
Linux启动流程计算机启动时,首先进行固件操作firmware(CMOS/BIOS,CMOS是固化在硬件上的程序,BIOS是操作CMOS的管理控制程序),加电自检,即是检测硬件是否连接正常固件结束之后,将会读取硬盘上的数据,这里首先读取是MBR(Master boot record),其中MBR包括Bootloader(自举程序),Partition table(磁盘分区表),Magic
2013-01-04 23:26:44
1061
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅