自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(146)
  • 收藏
  • 关注

原创 hiho 1097 : 最小生成树一·Prim算法

Kruscal初始每一个节点为一个森林,每次选最短的边连接两个不同森林;prime初始为由一个节点开始的一棵树,每次从不在树中的顶点中,选出一个 连接到树中边最小的那个 顶点;#include#include#include#includeusing namespace std;int m[1005][1005]; //图的矩阵表示int key[1005]; //key[i

2016-08-07 23:08:27 785 6

原创 hiho1098 : 最小生成树·Kruscal算法

#include#include#includeusing namespace std;int father[100005]; // father[i]代表 i 节点的父节点struct edge { // 边的定义 int x, y, w; edge() {} edge(int x, int y, int w) : x(x), y(y), w(w) {} bool operat

2016-08-07 21:24:33 601 4

原创 hiho 1081 最短路径

复习最短路径算法,找了 hiho上的1081题;算法解释见《算法导论》 P383.#include#include#includeusing namespace std;int main() { int N, M, S, T; cin >> N >> M >> S >> T; vector tmp(N, -1); vector>w(N, tmp); int x,

2016-08-07 16:33:40 533

原创 zoj3279 ants 线段树

突然想学习一下线段树了,看了一下基本的知识,尝试了一道简单的线段树题目。#include#includeusing namespace std;const int N = 100010;struct node { int sum; int l; int r;};struct node tree[4 * N]; //树数组长度需要区间长度的 4 倍int a[N];

2016-05-05 21:26:33 460

转载 线段树题目

一些线段树题目//zoj 1610 线段覆盖 //poj 2777 线段覆盖 //poj 2528 需要离散化,建树不同,需要处理不同->注意这组数据 3 1 10 1 3 6 10 the ans is 3. //hdu 1754 求区间最大值 //hdu 1166 求区间和 //hdu 1698 成段更新 //poj 3468 成段更新 //ural 1019

2016-05-05 15:58:14 587

原创 poj1804求逆序对数

给定一串数字,求逆序对数问题。这样来理解,假设数组中间分开划为两半,并且假设左右分别升序排序,这种情况下,假设左数组范围为 begin 到 q, 右半部分为 q+1到end,令 i = q, j = end, 则当 a[i] > a[j]时,右半部分有 j - (q+1)+1个数和a[i]构成逆序对。然后i, j 向左移动结束之后,就得到两个有序的左右部分的逆序对数;那么此问题可以使用归并

2016-04-24 14:08:53 803

原创 poj1386 Play on Words 欧拉路径

欧拉回路和欧拉路径的判断欧拉回路:无向图:每个顶点的度数都是偶数,则存在欧拉回路。有向图:每个顶点的入度都等于出度,则存在欧拉回路。欧拉路径:无向图:当且仅当该图所有顶点的度数为偶数 或者 除了两个度数为奇数外其余的全是偶数。有向图:当且仅当该图所有顶点 出度=入度 或者 一个顶点 出度=入度+1,另一个顶点 入度=出度+1,其 他顶点 出度=入度。将单词首字母和尾

2016-04-23 12:53:32 419

转载 Bypassing Stack Cookies, SafeSeh, SEHOP, HW DEP and ASLR

https://www.corelan.be/index.php/2009/09/21/exploit-writing-tutorial-part-6-bypassing-stack-cookies-safeseh-hw-dep-and-aslr/

2015-03-24 14:42:36 811

转载 Getting around non-executable stack (and fix)

Hello!I finally decided to post a return-into-libc overflow exploit. This methodhas been discussed on linux-kernel list a few months ago (special thanks toPavel Machek), but there was still no exp

2015-03-10 21:16:15 863

转载 gcc命令objdump用法

p ---------------objdump是用查看目标文件或者可执行的目标文件的构成的GCC工具----------以下3条命令足够那些喜欢探索目标文件与源代码之间的丝丝的关系的朋友。objdump -x obj 以某种分类信息的形式把目标文件的数据组织(被分为几大块)输出    objdump -t obj 输出目标文件的符号表()objdump -h ob

2014-07-09 13:14:26 926

转载 vi命令

进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复f

2014-07-01 19:42:24 407

原创 zoj 1006

给出plaintext 求 ciphertext#include#include//这个程序,给出plaintext 求 ciphertext int main(){ int k,n,i,temp,c[75],p[75]; char ct[75],pt[75]; ct[0]='_',ct[27]='.'; for(i=1;i<=26;i++) ct[i]='

2013-10-10 23:48:54 995

原创 九度1078 前序和中序建二叉树

九度1078 前序和中序建二叉树

2013-09-21 18:15:59 1127

原创 九度1009判断两个序列构成的两个二叉排序树是否相同

此程序中,实现用递归构造二叉排序树,以前递归一直构造不成功,仔细看看书,发现是函数传送参数的时候,不能传送指向结点的指针,若这样只能改变此指针指向内容,而无法改变此指针,但是递归构造时,当函数接受的参数为NULL时,要分配空间,把这个新空间的指针值赋给传过来的指针,所以传送参数时要传指针的指针,这样就不仅可以改变指针指向的能容,也能改变这个指针,这样就顺利生成新的结点。#include#

2013-09-21 18:14:39 2561

原创 九度1011 最大连续子序列和

给一序列,求最大连续子序列的和,以及这个序列的开始元素和最后一个元素,若都为负数,和为0,输出原序列第一个和最后一个元素思路:d【i】存放以第i个元素为结束点的连续序列的和,d【0】=a【0】,顺推(动态规划思想),最后找出d中最大的即可;first【i】存放以第i个元素为结束点时,此序列的开始元素的下标;#includeint a[10000],d[10000],fir

2013-09-21 18:14:10 1083

原创 九度1014 排名 结构体排序

结构体排序当分数相同时,按考号(字符串)升序排序字符串排序时,在cmp函数里,用strcmp( )来比较两字符串大小strcmp(a, b ) >  0时,a > bstrcmp(a, b ) =  0时,a = bstrcmp(a, b ) #include#includetypedef struct{ char id[25]; int s

2013-09-21 18:14:08 821

原创 题目1480:最大上升子序列和

不用多说了,老套路#includeint a[1005],d[1005];int main(){ int n,i,j,max; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) scanf("%d",&a[i]); d[0]=a[0]; for(i=1;i<n;i++) {

2013-09-21 18:13:27 1417

原创 九度1012畅通工程

求需要加几条边可以让图变得连通求出连通分量个数,需要的边数即连通分量数减一#include#includeint map[1000][1000];int n,v[1000];void dfs(int k){ int i,j; v[k]=1; for(i=1;i<=n;i++) if(!v[i]) { if(map[k][i]||map[i][k])

2013-09-21 18:12:57 1146

原创 题目1131:合唱队形

求以a[i]为结束结点时的最长上升序列长度,保存在d1[i]中,从前向后更新再求 a[i]为开始结点时最长下降序列长度,保存在d2[i]中,从后向前更新#includeint a[102],d1[102],d2[102];int main(){ int n,i,j,max; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i+

2013-09-21 18:12:24 935

原创 北大拦截导弹

求最长不升子序列#includeint main(){ int a[30],d[30],i,j,max,n; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) scanf("%d",&a[i]); d[0]=1; for(i=1;i<n;i++) { d[i

2013-09-21 18:11:35 790

原创 九度1008最短路

dijkstra算法实现#include#define MAX 900000000typedef struct NODE{ int dis; int cost;}node; node map[1005][1005];node d[1005];int v[1005];void init(){ int i,j; for(i=0;i<1005;i++)

2013-09-21 18:10:51 1130

原创 题目1123:采药

方法一

2013-09-21 18:10:17 813

原创 从文件A.txt读学生姓名和成绩,排序后写到B.txt文件中

A.txt中数据格式张三 98, 李四 89, 王五 90, 力六 100运行程序后B.txt中的数据力六 100, 张三 98, 王五 90, 李四 89#includeFILE *in,*out;typedef struct{ int x; char name[10];}STU;STU stu[100];int cmp(const void *a

2013-09-21 18:09:39 9875

原创 多重排序

学号和成绩,按成绩从小到大排序,成绩相同按学号从小到大排序用 qsort(数组名,数组元素个数,sizeof(数组类型),cmp)其中cmp是需要自己写的函数#include#include typedef struct { int y; int x; }NODE; NODE node[101];int cmp(const void *a,co

2013-09-07 16:36:37 1231

原创 zoj 1004 dfs+栈

突然想练练了,就随便看了一道oj上的题。好久没做题了,差不多忘完了,想到了用dfs,实现的时候却有些

2013-08-08 01:26:04 1259

原创 hdu 2084 dp

#includeint a[102][102],d[102][102];int main(){ int t,n,i,j; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=1;i<=n;i++) for(j=1;j<=i;j++) scanf("%d",&a[i][j]);

2012-05-08 12:26:48 504

原创 zoj 1074 最大子段和的推广 dp

这道题是算法书上的例子,就照办书上的算法了。求最大子矩阵和。#includeint a[102][102];int b[102];int max1(int n){ int sum,x,i; sum=0,x=0; for(i=0;i<n;i++) { if(x>0) x+=b[i]; else x=b[i]; if(x>sum) sum=x;

2012-05-03 13:08:30 546

原创 再写pku 1088 滑雪 dp

前些天废了一阵工夫,把白皮书上所谓动态规划转化为图上最长路的思想应用了一下,写了这道1088,真是麻烦,建图过程实在繁琐,不能用邻接矩阵(超内存),需要用邻接表,当时好在还AC了,蛮高兴的。刚看到往届省赛中一道题,说是从左上角走到右下角,能拿到的最大数字和。想了想,用白皮书上的记忆化搜索很容易就可以解决的,于是重新写了一遍这道题,要比建图那种做法简单#include #include

2012-05-03 12:56:45 700

原创 zoj1076 Gene Assembly 活动安排 dp

题目总不让人省心,大致有两种,一种是题目很好懂,程序不好写;另一种是题目不好懂,程序很好写。。。题简单了就会在语言上麻烦你。。。回顾qsort用法,第一个参数为数组名,第二个参数为元素个数,第三个为sizeof ( 数组类型),第四个为cmp函数。#include#includetypedef struct node{ int beg; int end; int x;

2012-05-03 12:22:11 1102

转载 什么博弈的_叫取石子

最近碰到一类问题,就是俩人非常无聊的在几堆石子前取石子,问最后谁赢,有这闲工夫你睡会啊!做这么无聊的游戏。不会做,碰到一些资料,先放着,有心情了再看。。。。取石子问题有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一

2012-05-02 21:51:09 486

原创 zoj 2091

直接写的,TLE,搜了一下,有证明:对于每一个a[ i ],一定是从 a[ i ] 加到a[ n ]再求平均这样得到的平均数最小。从所有的平均值中找最大的就行了。至于怎么证明的,真心不想看。。。。。#includeint a[10000];int main() { int n,i,j,len; double sum,k; while(scanf("%d",&n)!=

2012-05-02 21:06:40 599

原创 全排列

貌似这段代码是媛姐的#include #include #define MAX 100int visit[MAX],num[MAX];int n;void DFS(int d){ for(int i=1; i<=n; i++) if( !visit[i] ) { visit[i] = 1; num[d] = i; if(d!=

2012-04-30 11:40:55 398

原创 pku 2904 dp

dp问题一个样,想出来了觉得很简单,想不出来就很难。#include#define N 10e8int a[110][110][15];int x1,x2;int dp(int i,int j,int k){ int s,r; if(a[i][j][k]!=0) return a[i][j][k]; if(k==1) { r=0; for(s=

2012-04-30 11:38:51 481

原创 pku百练 2727 0-1背包

d[ i ] [ j ]表示把第 i,i+1,i+2,。。。n个物品装到剩余容量为 j 的背包中的最大重量。#includeint v[105],w[105],d[105][1005];int main(){ int i,j,t,n; scanf("%d%d",&t,&n); for(i=1;i<=n;i++) scanf("%d%d",&v[i],&w[i]);

2012-04-26 12:18:58 522

原创 百练1088 滑雪 dp

动态规划,转化成图来做,即转化成有向图上的最长路问题。   假设建图已好,存在邻接矩阵G中。d[ i ]表示从结点 i 出发的最长路长度,则      d[i]=max { d[ j ] +1| ( i , j )属于E}     E为边集合。     记忆化搜索程序(调用前d数组初始化为0)    int dp(int i){ int j; if(d[i]>

2012-04-25 22:42:29 691

原创 zoj1372 Networking 最小生成树Prime算法

用prime算法写了最小生成树,忽然发现比kruskal要简单许多,这道题以前刷过,现在用prime写感觉挺简单#include#include#define INTMAX 1000000int n,r,map[52][52],a[55],min;void init(){ int i,j; min=0; for(i=1;i<=n;i++) { for(j=1;j<

2011-12-09 15:33:50 678

原创

有段时间,自主或不自主的,就会心情烦躁,不想学习。为什么以前没有这种情况,准确的说,应该是有,只是没太怎么注意,现在呢?却只是一点点也会很惭愧。ACM,究竟会怎样?其实自己也明白,不要太在意这些,可是,总会在那么一刻,有意或是无意,就想起来了。算了算了,罢了罢了。

2011-11-10 17:01:16 388

原创 zoj 1057 Undercut 水题

不解释#includeint main(){ int i,n,a[25],b[25],suma,sumb; scanf("%d",&n); while(n) { suma=sumb=0; for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<n;i++) scan

2011-10-27 12:49:12 710

原创 zoj 2514 Generate Passwords 水题

可恶的字符串!!水题,但还是WA了无数次啊!为什么用个结构体就是过不去,换成数组就a了。。不解释。#include#include int main() { char u[1000][100],p[1000][100]; int flag[1000]; int n; while(scanf("%d",&n)&&n) {

2011-10-27 11:24:24 508

原创 zoj 3166 Lazy Tourist 最短路 floyd

我是这样理解的:floyd找每两点之间最短路,最后在有所有有hotel的节点中,找出w[i][i]最小的一个。。。。。需要注意的是,在初始化中,w[i][i]应初始化为无穷大,即认为city和原city间无路(因为要出去)。恩,还是一道floyd的水题。。。不过我现在只能刷水题了。。。。#include#include#define INF 1000000int w[101

2011-10-26 10:58:59 618

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除