曾经水过的题
文章平均质量分 67
liuzhan214
业精于勤!
展开
-
真尴尬1180
结束的标志是两个小于0的数…… 被套路了……..#include <set>#include <queue>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 10005;const int maxm = 1000原创 2016-10-19 19:22:04 · 270 阅读 · 0 评论 -
一笔画问题
描述zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。规定,所有的边都只能画一次,不能重复画。 输入第一行只有一个正整数N(N每组测试数据的第一行有两个正整数P,Q(P随后的Q行,每行有两个正整数A,B(0输出如果存在符合条件的连线,则输出"Yes",如果不存在符合条件的连线原创 2016-07-14 15:51:22 · 560 阅读 · 0 评论 -
中序后序确定二叉树的前序序列
#include #include #include #include #include #include #include #include using namespace std;const int maxn=1000;char post[maxn],in[maxn];struct Node { char val; Node *left,*right;原创 2016-07-10 18:57:28 · 472 阅读 · 0 评论 -
前序加中序求二叉树后序序列
#include #include #include #include #include #include #include #include using namespace std;const int maxn=1000;char pre[maxn],in[maxn];struct Node { char val; Node *left,*right;原创 2016-07-10 18:30:15 · 376 阅读 · 0 评论 -
最短路的前向星实现
#include #include #include #include #include #include #include #include using namespace std;const int maxn=1000;const int maxm=maxn*maxn;const int INF=0x3f3f3f3f;struct Edge { int fro原创 2016-07-09 11:42:34 · 338 阅读 · 0 评论 -
prim算法的前向星实现
#include #include #include #include #include #include #include #include using namespace std;const int INF=0x3f3f3f3f;const int maxn=100;const int maxm=maxn*maxn;struct Edge { int from,原创 2016-07-09 11:12:28 · 410 阅读 · 0 评论 -
拓扑序列的实现
#include #include #include #include #include #include using namespace std;struct Edge { int from,to,next;};const int maxn=100;const int maxm=maxn*maxn;int m,n;//n个顶点,m条边int pre[maxn]原创 2016-07-08 19:14:31 · 297 阅读 · 0 评论 -
南阳oj STL分类练习
1.括号配对问题现在,有一行括号序列,请你检查这行括号是否配对。输入第一行输入一个数N(0输出每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No样例输入3[(])(])([[]()])样例输出NoNoYes #include #include #include #include using原创 2016-06-29 17:59:05 · 1983 阅读 · 0 评论 -
fuck啊,喷水装置
哭哭哭,vector没有清空.....调了好久,不过也学到了类似遍历的写法,有收获!个人感觉我这份代码的可读性是最好的(捂脸)有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n<=10000)个点状的喷水装置,每个喷水装置i喷水的效果是让以它为中心半径为Ri的圆都被润湿。请在给出的喷水装置中选择尽量少的喷水装置,把整个草坪全部润湿。原创 2016-05-11 22:26:26 · 1565 阅读 · 0 评论 -
三个水杯问题
给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。输入第一行一个整数N(0接下来每组测试数据有两行,第一行给出三个整数V1 V2 V3 (V1>V2>V3 V10)表示三个水杯的体积。第二行给出三个整数E1 E2原创 2016-05-10 16:13:37 · 3086 阅读 · 0 评论 -
快速排序复习
明天试试怎么手写根据多个值来排序#include using namespace std;void quickSort(int arr[],int n);void quickSort(int arr[],int start,int dest);int mypartition(int arr[],int start,int dest);int main(){ int ar原创 2016-05-05 21:10:58 · 234 阅读 · 0 评论 -
邻接表实现最短路算法
#include #include #include #include using namespace std;const int MAXN=1000+5;const int MAXM=100000+5;const int INF=0x7fffffff;struct Edge{ int u,v,w,next;};Edge e[MAXM];int dis[MAXN]原创 2016-04-18 13:20:30 · 975 阅读 · 0 评论 -
快排的思想求第K小的数
描述输入N个数,M次查询。每次查询给出一个数x。 要求:每次查询输出前x个数中第i小的数。(i为第i次查询)你可以假设M ,Xi 输入Line0:TLine1: N,MLine2…LineN+1:num1,......,numNLineN+2…LineN+2+M:x1,……,xMN 输出每次查询输出前i小的数,单独一行。原创 2016-07-13 15:54:01 · 546 阅读 · 0 评论 -
命令行参数解析
对这种主函数形式一直不是很了解,今天研究了一下,所得如下: 当我们成功运行一个程序时,在Windows环境下会生成一个exe文件,我们可以再命令行中打开并运行这个程序。 比如说如下代码。#include <iostream>using namespace std;int main(int argc,char *argv[]){ cout<<argc<<endl; for(in原创 2015-11-22 14:09:09 · 2230 阅读 · 0 评论 -
hdu 1180诡异的楼梯
重写了一下以前没过的题,读了下以前wrong answer的代码,发现好像题意理解有误啊,我一直认为这样的情况只需要一秒钟,其实这样是无论如何上不去的,无法到达终点…….bfs完全是可行的,没必要加上优先级队列,bfs本身的性质决定时间一定是最短的*T*.|*Problem Description Hogwarts正式开学以后,Harry发现在Hogwarts里,某些楼梯并不是静止不动的,相反,原创 2016-10-19 16:58:32 · 226 阅读 · 0 评论 -
二路归并排序
不是困难的算法,不过也是练习了下递归。#include #include #include using namespace std;const int maxn=100+5;int a[maxn];int b[maxn];void MergeSort(int a[],int b[],int begin,int end) { if(begin==end) return原创 2016-03-22 20:41:35 · 360 阅读 · 0 评论 -
关于堆的知识复习
最近的作业里要求实现大根堆中删除一个元素,算法复杂度为log2 N,于是又复习了下大根堆得知识,堆是一种特殊的完全二叉树,因此这里我们直接用数组存储,a[i]是a[i+1]和a[i+2]的父亲,建堆需要用到向下堆调,删除直接将待删除元素和最后一个元素交换,对数组前n-1个元素再建堆就ok代码如下:#include #include #include using namespace s原创 2016-03-17 18:33:20 · 682 阅读 · 0 评论 -
复习最小生成树问题
忘得差不多了,回忆下kruskal求最小生成树算法,首先得到边信息,对边按权值大小排序,每次选择最小且不在一个联通分量的边,直到连成一棵最小生成树。其中要用上并查集的知识。Eddy begins to like painting pictures recently ,he is sure of himself to become a painter.Every day Eddy draw原创 2016-03-15 20:09:14 · 290 阅读 · 0 评论 -
hdu2795
在学校的入口处有一个巨大的矩形广告牌,高为h,宽为w。所有种类的广告都可以贴,比如ACM的广告啊,还有餐厅新出了哪些好吃的,等等。。在9月1号这天,广告牌是空的,之后广告会被一条一条的依次贴上去。每张广告都是高度为1宽度为wi的细长的矩形纸条。贴广告的人总是会优先选择最上面的位置来帖,而且在所有最上面的可能位置中,他会选择最左面的位置,而且不能把已经贴好的广告盖住。如果没有合适的位置了,那么这张广告原创 2016-01-26 19:22:09 · 345 阅读 · 0 评论 -
hdu1556题解
B - Color the ball Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u SubmitStatusPracticeHDU 1556 Description N个气球排成一排,从左到右依次编号为1,2,3….N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞原创 2016-01-26 19:15:59 · 360 阅读 · 0 评论 -
hdu1166题解
A - 敌兵布阵 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u SubmitStatusPracticeHDU 1166 Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,De原创 2016-01-26 18:37:39 · 347 阅读 · 0 评论 -
优先级队列的使用
今天学习了一下优先队列的使用,使用方法和queue很类似,有top(),pop(),push(),empty()等操作。 优先队列是按照某一优先顺序,有选择地取出元素的一种数据结构,使用时要包含queue头文件。以下是一段测试代码。#include <iostream>#include <cstring>#include <queue>using namespace std;struct T原创 2016-01-23 17:06:43 · 366 阅读 · 0 评论 -
双指针扫描
输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。 Input输入包含多组测试用例,每组输入数据只有一行数字(数字之间没有空格),这行数字的长度不大原创 2016-01-23 15:51:03 · 2077 阅读 · 0 评论 -
kruscal算法求最小生成树总结
生成树指无向图中包含图的所有节点,边集为原图子集的图;最小生成树指权值最小的生成树,对于包含n个节点的无向图来说,它的最小生成树包含n-1条边。kruskal算法求解最小生成树的基本步骤如下:1.数据结构表达:u[maxn],v[maxn],w[maxn] 用来表示边的信息,在kruskal算法中,虽然最小生成树是是无向图,但是也只需要存储一条边的信息即可原创 2016-01-10 22:29:50 · 894 阅读 · 0 评论 -
ACM解题报告hdu1102
hdu1102题解原创 2016-01-10 18:15:39 · 290 阅读 · 0 评论 -
hud1159
A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = another sequence Z = is a subsequence of X if there exists a strictly increa原创 2016-03-31 10:44:54 · 265 阅读 · 0 评论 -
hdu1159
A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = another sequence Z = is a subsequence of X if there exists a strictly increa原创 2016-03-31 10:40:41 · 250 阅读 · 0 评论 -
hdu3790
给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。Input输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数 s,t;起点s,终点。n和m为0时输入结束。(1Output输出 一行原创 2016-03-30 20:47:49 · 293 阅读 · 0 评论 -
最小费用流bellman-ford算法总结
最小费用流问题是寻找流为F时的最小费用,普通的最大流中边只有流量限制,而在费用流中还加上了费用,为保证过程可逆和正确性残余网络中的负权边是原边费用的相反数,求解此类问题的方法依然是贪心,我们在残余网络上总是沿着最短路增广,这样可以保证在当前流量下,取得最小的费用(权值为费用),一直贪心下去,直到F减为0,这里有一个问题,F能否减到0呢,答案是肯定的,考虑最大流算法,我们总是能从0扩展到任意流(流不原创 2016-07-30 10:59:18 · 3580 阅读 · 0 评论 -
nyoj973天下第一
天下第一时间限制:1000 ms | 内存限制:65535 KB难度:3描述AC_Grazy一直对江湖羡慕不已,向往着大碗吃肉大碗喝酒的豪情,但是“人在江湖漂,怎能不挨刀",”人在江湖身不由己",如果自己的武功太差,在江湖会死的很惨,但是AC_Grazy没有武功秘籍练不了绝世武功.有道是“山重水复疑无路,柳暗花明又一村”,在AC_Grazy家里面竟然藏着一本原创 2016-07-29 20:22:52 · 315 阅读 · 0 评论 -
二分图的最大匹配深搜算法
RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了。可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做partner和她同坐。但是,每个女孩都有各自的想法,举个例子把,Rabbit只愿意和XHD或PQK做partner,Grass只愿意和linle或LL做partner,PrincessSnow愿意和水域浪子或伪酷儿做partner。考虑原创 2016-07-29 10:16:35 · 489 阅读 · 0 评论 -
hdu1532 当前弧优化的dinic算法实现
点击打开链接裸题,主要练习手速!#include #include #include #include #include #include using namespace std;const int max_node = 205;const int INF = 0x3f3f3f3f;struct Edge{ int to,cap,rev; Edg原创 2016-07-28 19:59:40 · 1014 阅读 · 1 评论 -
证明增广路算法的正确性及dinic算法的使用
一直对增广路这种贪心思想表示怀疑,今天看到一个很好的证明。首先介绍割的概念,所谓图的割,指的是某个顶点集合S属于V,从S出发的所有边的集合成为割(S,V\S),这些边的容量和被称为割的容量,如果有源点s属于S,汇点t属于V\S,则称之为s-t割,如果将s-t割的所有边都在原图中去掉,则不再有s->t的路径。容易得到,对于任意一个s-t割,总有f的流量首先,对于ford-Fulkerso原创 2016-07-28 19:11:29 · 1781 阅读 · 0 评论 -
字典树求子串hdu2846
点击打开链接这个题目还是比较有意思的,以往的字典树往往是求解前缀的数量,其实也可以求解子串,不过相应的要付出更多的空间代价。以abcdabc为例,我们先通过暴力枚举的办法将串拆成,abcdabc, bcdabc,cdabc,dabc,abc,bc,c 拆成这些串后,如果想判断da是不是abcdabc的子串,则只要顺着字典树往下,找到dabc这条路的b节点就可以判断了。此题是给出一个原创 2016-07-28 15:20:07 · 322 阅读 · 0 评论 -
对于优先队列的一些思考
/*为什么默认是大顶堆呢,考虑priority_queue的实现容器,vector显然在尾部删除快,默认重载<运算符,也就是说vector中的元素从小到大排列,尾删的时候取出最大值,所以pq.top()取出最大值,pq.pop()删除最大值。*/#include #include #include #include #include #include #include #inc原创 2016-07-24 11:29:13 · 329 阅读 · 0 评论 -
HUST 1525
Given an N*N(NOn this chessboard you have to apply M(MInputThe first line contains a single integer T, the number of test cases.For each case,The first line contains integer N, M.The next原创 2016-07-23 20:00:42 · 242 阅读 · 0 评论 -
小希的礼物
点击打开链接这个题显然是用并查集解决的,不过我想试试用图论的方法怎么写,首先所有的顶点要连通,然后图无环,然后无重边,无自环,首先判断重边,map映射一下就可以了,确定无重边之后就用bfs判断连通,复杂度O(m),如果连通,然后通过拓扑序列判断环,如果无环,则图是一棵树,输出yes,任何一个环节出错,输出no.下面是我的冗长但是简单的代码。#include #include原创 2016-07-23 12:41:39 · 171 阅读 · 0 评论 -
网络流入门题hdu3549(Flow Problem)
Network flow is a well-known difficult problem for ACMers. Given a graph, your task is to find out the maximum flow for the weighted directed graph.InputThe first line of input contains an int原创 2016-07-20 14:04:36 · 259 阅读 · 0 评论 -
广告牌
#include #include #include #include using namespace std;const int maxn=200005;int h,w;int segTree[maxn*4];void build(int node,int begin,int end){ segTree[node]=w; if(begin==end)原创 2016-07-14 15:54:04 · 420 阅读 · 0 评论 -
nyoj 677暴力dfs竟然这么快...
首先这个题目的确是可以dfs求解的,200个顶点,20000条边,飞机场的度数不会超过两百,从每条边出发一次dfs,最多遍历20000条边,200*20000 = 4000000,在1原创 2016-07-30 14:48:32 · 347 阅读 · 0 评论