自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 资源 (2)
  • 收藏
  • 关注

原创 我又回来了

之前的博客都是ACM相关的,都是些题解,时间太久,格式都混乱了这次回来发一些Java Web相关的文章后续:原来CSDN不让引流,不能放公众号二维码,还说我的昵称是骂人。。哎。。。...

2019-11-27 09:55:55 117

原创 ZOJ 1700 Falling Leaves

<br />考察二叉查找树的题目,题目用了大量篇幅来描述bst的内容,可以忽略。<br /> <br />给出每次去掉的叶子节点,然后构造bst,前序遍历输出,不用考虑倒序添加叶子时会不会重叠,直接建立节点就可以了<br /> <br />这次的代码我感觉还是写的不错的。。<br /> <br />#include<stdio.h>#include<stdlib.h>#include<string.h>struct node { char data; struct nod

2010-11-16 00:04:00 939

原创 ZOJ 3196 Give me the result

<br />给出n个数,和数字k,对于这n个数他们之前可以有不同的运算。。+-*/<br />注意他的减法是绝对值的运算,还有就是数据类型要用long long,因为运算的数据可能很大,我因此wa了一次<br /> <br />#include<stdio.h>#include<string.h>#include<stdlib.h>long long cases,n,k;long long max,i,j;long long a[10];long long nok(long long

2010-11-09 18:07:00 1240 2

原创 ZOJ 2734 Exchange Cards

<br />dfs水题,1Y.<br />就是看兑换成给定的值有多少种兑换方法...<br /> <br />#include<stdio.h>#include<stdlib.h>#include<string.h>int n,m;int value[11],num[11];int sum,count;void dfs(int x){ int i; if( sum == n ) { count ++; return ; } if( sum > n |

2010-11-08 23:50:00 1925

原创 ZOJ 2412 Farm Irrigation

<br />农田需要灌溉,农田分为好多小块,每一块都有他的固定管道。可以与周围的管道相通。<br /> <br />类似于floodfill,就是管道相通的几块农田可以用一个水源,求最少需要多少水源才能使所有的农田得到灌溉。<br /> <br />#include<stdio.h>#include<stdlib.h>#include<string.h>int n,m;struct node{ int is; int up,down,left,right;}e,t

2010-11-07 15:36:00 1542 3

原创 ZOJ 2000 Palindrome Numbers

<br />求回文数,不过数据量有点大,不能一个一个检测,需要找出回文数的规律,然后根据规律推,,<br /> <br />#include<stdio.h>#include<string.h>#include<stdlib.h>int ten(int n){ int i,sum = 1; for( i = 1; i <= n; i++ ) sum *= 10; return sum;}int main(void){ in

2010-11-07 13:18:00 893

原创 ZOJ 1828 Fibonacci Numbers (大数)

<br />大数加法,好久没有做过大数的题了,练手。<br /> <br />#include<stdio.h>#include<stdlib.h>#include<string.h>int main(void){ int i,n; int j,k,t,jinwei; int jian2[1001],jian1[1001],result[1001]; while( scanf("%d",&n) != EOF ) {

2010-11-07 10:40:00 744

原创 ZOJ 1068 P,MTHBGWB

<br />        稍微复杂的模拟题,就是转换莫斯码,每个单词和。_,?都对应着相应的莫斯码。给出一个字符串,转换成莫斯码,然后再确定每段莫斯码的长度,然后将这个长度序列倒序,然后再翻译成正常的字符串。。。<br /> <br />#include<stdio.h>#include<string.h>#include<stdlib.h>#include<ctype.h>char a[30][6] = {".-","-...","-.-.","-..",".","..-.","--."

2010-11-05 23:08:00 953

原创 ZOJ 1109 Language of FatMouse (trie树)

<br />第一次用字典树,没怎么调试就运行成功了,我感到很惊讶。接下来就做几个这样的题训练训练吧。<br /> <br />#include<stdio.h>#include<string.h>#include<stdlib.h>struct node{ int isword; char dic[15]; struct node *next[26];}head;void nu(struct node *x){ int i; fo

2010-10-27 00:35:00 1017 2

原创 ZOJ 1940 Dungeon Master

<br />三维迷宫..现在这种题真的是根切菜一样.....<br /> <br />#include<cstdio>#include<cstring>#include<cstdlib>#include<queue>char mat[32][32][32];int dir[6][3] = {1,0,0,-1,0,0, 0,1,0,0,-1,0, 0,0,1,0,0,-1};int fl

2010-10-12 18:39:00 1304

原创 ZOJ 3166 Lazy Tourist

<br />有N个景点,其中C个景区有旅馆,求一个起点终点是旅馆的环,输出这个旅馆。。<br /> <br />我还在理解中,话说这个题描述不清楚。。<br /> <br />#include<stdio.h>#include<string.h>#include<stdlib.h>const int INF = 999999999;int mat[101][101];int hot[101];int main(void){ int n,c,i,t,k,j,m;

2010-10-10 22:52:00 810

原创 ZOJ 1438 Asteroids!

<br />三维的迷宫搜索。<br /> <br />题目中的地图是按照层数给定的。<br /> <br />题目中给出起点终点时候是先列再行再层数,这点一定要注意,我wa了好多次。。<br /> <br />#include<stdio.h>#include<string.h>#include<stdlib.h>#include<queue>int dir[6][3] = {1,0,0,-1,0,0, 0,1,0,0,-1,0,

2010-10-10 19:55:00 672

原创 ZOJ 1649 Rescue

<br />关于守卫的处理我一直wa,最后愣是把bfs重写了一遍.<br /> <br />把守卫压入队列之前不用管他是否是'r'或者'x',当他从队列弹出时队x进行特殊处理.<br /> <br />#include<iostream>#include<cstdio>#include<cstring>#include<queue>struct point{ int x,y; int ceng;}start,e,t;int dir[4][2]={1,0,-1,

2010-10-10 08:26:00 685

原创 ZOJ 2416 Open the Lock

简单的广度优先搜索。我的代码很繁,不想简化想方法了。#include#include#include#includestruct node{ int n; int ceng;} t,e;;int flag[10000];int main(void){ std::queue q; int cases,cha; int from,to; int g,s,b,qi; scanf("%d",&cases);

2010-10-09 23:44:00 815

原创 POJ 1698 Alice's Chance ( EK )

<br />这题的关键就是构图,合理的构图可以使问题可以转化为我们可以解决的数学模型,网络流题目迷人的地方就在于他的出现形式千变万化,需要一定的思维才能解决问题。<br /> <br />对于本题:<br />(1)建立源点和汇点<br />(2)每个电影建立一个节点<br />(3)每天建立一个节点,总共7*max(Wi)<br />(4)源点到每个电影节点流量为Di<br />(5)电影节点到他能拍摄的那一天的节点流量为1<br />(6)每一天到汇点的流量为1<br /> <br />600+ms过的

2010-10-04 16:33:00 681

原创 POJ 1274 The Perfect Stall ( 匈牙利算法 )

<br /> <br /> <br />比较水的二分图匹配,用模板就能过。这是我的第一个二分图匹配题目,经过了几天的理论与算法过程钻研之后,我感觉他并不像曾经听到他名字时候那么难,今天突然想上手试一试,敲完后1Y,十分激动。<br /> <br />理解二分图匹配有一篇比较好的博文:(AekdyCoin大牛的空间)<br />http://hi.baidu.com/aekdycoin/blog/item/4f410a8c17e1181bb31bba80.html/cmtid/e2f7b0eba5f1b6dd

2010-10-04 11:06:00 591

原创 ZOJ 1734 Power Network (EK)

<br /> <br />本题是多源点,多汇点的最大流,“他不比单源点单汇点的最大流难”,需要自建加一个点,使其容量为p【源点】,再建一个点,使汇点到其容量为c【汇点】,然后就用最大流的解法解决:<br /> <br />#include<stdio.h>#include<string.h>#include<stdlib.h>#include<queue>const int INF = 999999999;std::queue<int> q;int main(void){

2010-10-02 21:54:00 623

原创 POJ 1273 Drainage Ditches

<br />最水的一个最大流题目,本题需要注意的就是图中可能有平行边,这个时候只需要把同起点同终点的变得值加起来。<br /> <br />有点小激动。。。<br /> <br />#include<iostream>#include<cstring>#include<queue>#include<cfloat>using namespace std;queue<int> q;int main(void){ int n,m,i,f,u,v; int from,

2010-09-28 23:42:00 377

原创 POJ 1273 Drainage Ditches

<br />最水的一个最大流题目,本题需要注意的就是图中可能有平行边,这个时候只需要把同起点同终点的变得值加起来。<br /> <br />有点小激动。。。<br /> <br />#include<iostream>#include<cstring>#include<queue>#include<cfloat>using namespace std;queue<int> q;int main(void){ int n,m,i,f,u,v; int from,

2010-09-28 23:42:00 384

原创 ZOJ 1905 All in All

<br />最后是以"."结尾的.仅次一句;<br /> <br />#include<stdio.h>#include<string.h>char s[1000001];int main(void){ int find,i,j,len; while( scanf("%s",s) != EOF ) { if(strcmp(s,".")==0) break; len = strlen(s); for( i = 1;i <= len;i++) { if

2010-09-24 10:58:00 580

原创 ZOJ 1718 Building a Space Station

<br />        每个cell相当于一个点,但是某些点之间可能相邻,不需要再建走廊,所以只需判断他们在空间中是否相交....<br /> <br />        水水kruskal<br />#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>using namespace std;const int M = 101;const double eps = 1e-8;int p[M]

2010-09-21 21:18:00 660

原创 ZOJ 1586 QS Network

<br />我wa死了,是因为点的权值没有很好地记录下来,后来看sunkehappy的解题报告,明白这题需要在初始化的时候把点的权值加到边上,这样就可以省去最后计算的麻烦了,改了之后就直接过了。。哎,,苍天啊。。<br /> <br />#include<iostream>#include<cstdlib>#include<cstdio>using namespace std;const int M = 1001;const int INF = 99999999;int mat[M]

2010-09-20 22:57:00 895 3

原创 ZOJ 1914 Arctic Network (kruskal + prim )

<br /> <br /> <br />KRUSKAL + PRIORITY_QUEUE<br />#include<iostream>#include<string>#include<queue>#include<cmath>#include<stack>using namespace std;struct edge { int from,to; int w;} t;int point[501][2],p[501];int find(int i)

2010-09-18 12:31:00 630

原创 ZOJ 1395 Door Man

<br />这是一道关于欧拉回路欧拉通路的非常好的一个题,能很好的理解他的算法,现在把黑书上的核心知识打出来:<br /> <br />无向图的欧拉回路: 如果一个无向图所有顶点的度为偶数,那么该图可以用起始点与终点相同的一笔画出,这一笔经历的的路线叫做无向图的欧拉回路。<br /> <br />有向图的欧拉回路:如果一个有向图的所有顶点的入度等于出度,那么该图可以用起始点与终点相同的一笔画出,这一笔经历的路线叫做有向图的欧拉回路。<br /> <br />无向图的欧拉路:如果一个无向图恰有两个顶点x,y的

2010-09-17 12:11:00 591

原创 ZOJ 1221 Risk

<br />这个算是图论里面的简单题了,可以用floyd,dijkstra,bfs去做,,只当练手。。<br /> <br /> <br /> <br />floyd做。。<br />#include<stdio.h>#include<string.h>#include<stdlib.h>int mat[21][21];const int INF = 99999;int main(void){ int n,from,to,t; int i,j,k,start=1;

2010-09-15 16:07:00 1427

原创 ZOJ 1542 / POJ 1861 Network (kruskal )

<br />        又是一个MST得水题,受不了。<br />        对于让最大边最小,显然可以用kruskal从最小边慢慢添加。<br />        真的没有什么可以解释的了。。。。<br /> <br />#include<stdio.h>#include<string.h>#include<stdlib.h>int p[1001];int find(int i){ return i==p[i]?i:(p[i]=find(p[i]));}struct e

2010-09-15 13:48:00 677

原创 ZOJ 2048 / POJ 2485 Highways ( kruskal )

<br />        给出所有点的坐标,可以得出每个点间的距离,可得这是一个稠密图,按理说应该用prim,我用的kruskal,事实上在zoj的运行时间已经超过1s,效率不够高,sunkehappy童鞋的prim排到了第一版。。我的就凑合了。<br />        对于题目中给出的已经建立的边,把两个点弄到一个集合中就ok了,生下的正常的kruskal做。<br /> <br />#include<string.h>#include<stdlib.h>#include<math.h>#

2010-09-15 12:38:00 1125

原创 ZOJ 1203 Swordfish ( prim )

<br />        我受不鸟最小生成树的题目了,怎么看着都这么水,难道是我挑的题水?<br />        这个题我都没有去调试,编译成功之后就提交了,果然AC....<br />        题中给出所有点的坐标,这样便可知道所有点之间的距离,用临界矩阵存,顺便用prim,水阿~<br /> <br />#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>const double INF =

2010-09-14 19:04:00 952

原创 ZOJ 2966 Build The Electric System (kruskal)

<br />         MST的简单变形。当一个边的长度为零时,那么就假定这两个点已经在一个集合中了,剩下的步骤和普通kruskal是一样的。<br /> <br />#include<stdio.h>#include<string.h>#include<stdlib.h>int p[500];int find(int i){return i==p[i]?i:(p[i]=find(p[i]));}struct edge{ int from,to,w;} a[2500

2010-09-14 16:27:00 828 1

原创 ZOJ 3204 Connect them (kruskal+二级排序)

<br />         难搞的是字典序,需要两次排序,我之前写的算法是正确的,就是排序的时候遗漏了一些东西导致最后出现错误。记住了。<br /> <br />        至于算法的证明,我至今还没有想的很明白,但是刚开始的时候直觉告诉我可以这样做,faint!~<br /> <br />#include<stdio.h>#include<string.h>#include<stdlib.h>int p[101];int find(int x){return x==p[x]?x:

2010-09-14 00:08:00 479

原创 POJ 2485 Highways (kruskal+prim)

<br />题目让求使所有点都连通的树的最大边最小的那棵树,的最大边。。。有点拗口,就是求哪棵树的最大边最小。。。求出最大边。<br /> <br />可以转换成,求最小生成树的最大边,因为kruskal中每次加到树中的边都是最小的。<br /> <br />另外,在prim算法中,我用到了在《算法艺术与信息学竞赛--算法竞赛入门经典》上看到的方法,用vector数组来表示图,用pair来方便比较,有意者可看204页的详细说明。<br /> <br />kruskal:<br />#include<stdi

2010-09-05 17:09:00 442

原创 POJ 1258 Agri-Net (prim + kruskal)

<br />最小生成树水题,不解释。两种方法,没有用priority queue优化。<br />PRIM:<br /> <br />#include<iostream>const int INF = 99999999;using namespace std;int main(void){ int map[101][101]; int dist[101],flag[101]; int n,i,j; int now,min,sum; while( cin >> n) {

2010-09-04 21:22:00 483 1

原创 ZOJ 1372 / POJ 1287 Networking ( kruskal+prim )

<br />史上第二水最小生成树。<br /> <br />我刚开始是想练练prim算法,没想到是段错误,我感觉自己的算法没什么错误,就把提交到了poj上,没想到AC了,晕倒。没办法,上网搜了一下数据,测试之后发现竟然答案全部正确,faint~~果断换kruskal,用priority_queue,一次过,哎~~~<br /> <br />有人知道我prim哪里错了的说一声啊。。。。。<br /> <br />KRUSKAL:<br />#include<iostream>#include<string

2010-09-01 17:35:00 671

原创 ZOJ 1406 Jungle Roads (kruskal)

<br />史上最水最小生成树,不解释,不注释。<br /> <br />#include<iostream>using namespace std;int u[500],v[500],w[500];int r[500],p[500];;int a,b,counter,n;int cases,i,j;char c[5];int cmp(const int i,const int j) {return w[i]<w[j];}int find(int x) {return

2010-08-28 00:16:00 561

原创 ZOJ 1430 / POJ 2679 The Erythea Campaign (bfs+dijkstra)

<br />繁,但是不难。<br /> <br />首先,建图,题中给出的是m*n的矩阵,里面包含了所有stronghold的分布,但是你需要把他转换成一个图。但是路径不能穿过堡垒,多以说两个堡垒之间的两个点不能相互到达。还有就是每个点应该保存它可以到达的点的信息,当使用dijkstra求最短路径的时候,这些点可以当邻接表使用,很方便的。<br /> <br />接下来是每个的危险值,求法是m+n-d,不会出现负值。d的意思是它到达离他最近的堡垒的距离。对于每个堡垒上的点做bfs求出所有点到他的最短距离,如

2010-08-28 00:07:00 1149 1

原创 ZOJ 2526 FatMouse and JavaBean II (dijkstra + 权值记录)

<br />fatmouse要找到从rm1到rm2的最短路径,但是这个路径不是唯一的。要从这些路径中找出javabean最多的,然后输出路径。<br /> <br />题目中最困难的是,找到所有路径,并找出符合题意的那个。。。<br /> <br />我的算法是先找出来一条最短路径,然后再这条路径上进行扩展,凡是符合这个条件的“dist[j] == dist[now] + mat[now][j]”,都可能作为最短路径的分支。可以求出到达每个点的的javabean记录下来,找到一个更长的就更新路径和javab

2010-08-22 23:56:00 706

原创 ZOJ 1721 The Doors (计算几何+dijkstra)

<br />起点和终点给出,让计算他的最短路径,由于都是正权,所以用dijkstra。每两个点之间的距离都可以求出来,但是有的两个点之间有墙,所以这个时候是不能把距离加到临界矩阵中的。所以用判断两线段相交的方法,我看书看了好长时间,没怎么看懂,直接就把函数移过来了,等以后学计算几何的时候在弄他吧。。<br /> <br />#include<iostream>#include<cstdio>#include<cmath>#include<iomanip>using namespace std

2010-08-21 13:13:00 474

原创 ZOJ 1655 Transport Goods (杀入ranklist1000,撒花)

<br />这可以归结为单终点最短路径,然后变为单源的。<br /> <br />每个城市的货物运送到首都之后都不同程度减少,是原来货物的dist[i]倍。刚开始dist初始化为0,起点为1,每走一段路就乘以这段路的(1-rate),每次总是把最大的放到集合S中,英文之后的dist都比他小,不可能改变她的值。最后每个点的货物量乘以剩余率就OK!~<br /> <br />#include<stdio.h>#include<math.h>const double eps = 1e-6;int N,

2010-08-20 19:08:00 778 7

原创 ZOJ 2504 Help John! (dijkstra)

<br />我感觉这个题的叙述有问题。<br /> <br />john他妈给他说了一条路线,但是他想走更短的。但是他走出去的第一条路必须是她妈说的,剩下的就随便走了。<br />他如果找不到可以到达的路的话,就输出N。<br /> <br />数据也很弱,我的程序漏洞百出也能过。<br /> <br />#include<stdio.h>#include<math.h>const int INF = 99999990;int t,n,r,w,m;int from,to,now;int

2010-08-20 19:01:00 453

原创 ZOJ 1952 Heavy Cargo (dijkstra )

<br />又一次深刻的理解了dijkstra,他的各种变形可以解决各种各样的问题,有时候我们用dij不仅可以求出最小值,也可以求出符合要求的最大值。只要之后更新的东西不会改变已经加入到集合S中的点。<br /> <br />#include<stdio.h>#include<math.h>#include<string.h>#define INF 99999999int count = 0;char name[201][40];int find(char *a){

2010-08-20 09:05:00 574

科建播放器(播放视频教程)

这个是用来播放教程中的视频的,专门播放.csf格式的文件(暴风影音暂时无法正常打开这个)。

2009-08-19

c++编程思想(Thinking in C++)

大家都知道的东西。。。 本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚函数、模板和包容器类、多重继承、异常处理和运行时类型识别。 本书作为正式教材和自学用书均非常优秀,作为程序设计者的参考用书亦极为合适。

2009-08-19

空空如也

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

TA关注的人

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