![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
NYOJ
Red_Flame
热爱C/C算法Windwos编程.
展开
-
NYOJ 491
链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=491 超时了,o(╯□╰)o,希望下次能解决吧~~ 我用的是dfs, #include #include using namespace std; int a[20][20],sum=0; void dfs(int n,int p) { if(p==n) { int i,原创 2012-10-29 01:00:23 · 742 阅读 · 0 评论 -
汉诺塔栈的简单应用 nyoj93
链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=93 利用栈来模拟过程: AC code: #include #include using namespace std; int main() { int test,p,q,i,x,y,flag; cin>>test; while (test--) { flag=1;原创 2013-04-02 21:48:24 · 579 阅读 · 0 评论 -
前缀表达式的计算
//nyoj 128前缀表达式 #include #include#include #include #include #include using namespace std; char Compare(char c,char d) { switch (c) { case '+': case '-': if(d=='+'||d=='-') return原创 2013-03-23 00:41:39 · 792 阅读 · 0 评论 -
NYOJ 290 字典树
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=290 由于测试数据很大,所以用hash也可以,但应该注意,cin,cout对时间影响比较大,应该换成scanf 与printf 先介绍字典树(Tire )的方法。 字典树采取的是用空间换时间的策略 #include #include #include using namesp原创 2012-10-22 01:48:32 · 499 阅读 · 0 评论 -
nyoj 488素数环 回溯dfs
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=488 有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环。 为了简便起见,我们规定每个素数环都从1开始。例如,下图就是6的一个素数环。 输入 有多组测试数据,每组输入一个n(0输出 每组第一行输出对应的Case序号,从1开原创 2012-10-27 22:16:52 · 1860 阅读 · 0 评论 -
nyoj 58 最小步数 dfs与bfs均可
这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 1,0,0,1,1,0,0,0,1 1,0,1,0,1,1,0,1,1 1,0,0,0,0,1,0,0,1 1,1,0,1,0,1,0,0,1 1,1,0,1,0,1,0,0,1 1,1,0,1,0,0,0,0,1 1,1,1,1,1,1,1,1,1 0表示道路,1表示原创 2012-11-03 02:04:36 · 751 阅读 · 0 评论 -
NYOJ 20深度优先搜索
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=20 题目分析 由最小生成树从某地出发求其访问次序。 1,怎样搜索得出次序 A:应用深搜,广搜是分层。 2,怎样深搜 A:采取递归的方法,并设置访问标记,对当前顶点的邻接顶点依次往下搜到底,到所有邻接顶点均访问结束,在回溯前一步,得到第一个顶点的下一个邻接顶点。 AC 代码:原创 2012-10-27 01:09:19 · 620 阅读 · 0 评论 -
nyoj 10 skilling
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=10 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4原创 2012-11-05 15:02:39 · 534 阅读 · 0 评论 -
nyoj19 排列及组合
具体参考:百科百科 全排列 算法竞赛与入门经典 函数Perm(int list[],int k,int m)是求将list的第0~k-1个元素作为前缀、第k~m个元素进行全排列得到的全排列,如果k为0,且m为n,就可以求得一个数组中所有元素的全排列。其想法是将第k个元素与后面的每个元素进行交换,求出其全排列。这种算法比较节省空间。 Code one #include using name原创 2012-10-16 22:26:48 · 458 阅读 · 0 评论 -
NYOJ 21 图的广度优先搜索 倒水问题
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=21 思路: 算法竞赛入门经典中该题有思路分析,该题是隐式图的遍历,每次三个杯子中的状态可以看成一个结点,通过几种倒水的方式,推出下一层的结点,以此例推,可得出解。 这里需要解决的问题: 1,怎样解决倒水 A:通过模拟,由于没有刻度,每次倒水只能倒满,而且倒水的容量取决于容器的最大原创 2012-10-26 23:35:08 · 1354 阅读 · 0 评论 -
nyoj 325 (bfs +dp)
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=325 今天是阴历七月初五,acm队员zb的生日。zb正在和C小加、never在武汉集训。他想给这两位兄弟买点什么庆祝生日,经过调查,zb发现C小加和never都很喜欢吃西瓜,而且一吃就是一堆的那种,zb立刻下定决心买了一堆西瓜。当他准备把西瓜送给C小加和never的时候,遇到了一个难题,原创 2012-10-31 00:15:11 · 1773 阅读 · 0 评论 -
nyoj 138 Hash
Hash第一题, 描述 在某一国度里流行着一种游戏。游戏规则为:现有一堆球中,每个球上都有一个整数编号i(0<=i<=100000000),编号可重复,还有一个空箱子,现在有两种动作:一种是"ADD",表示向空箱子里放m(0<m<=100)个球,另一种是"QUERY”,表示说出M(0<M<=100)个随机整数ki(0<=ki<=100000100),分别判断编号为ki 的球是否在这个空箱子中(存原创 2012-11-01 21:17:39 · 545 阅读 · 0 评论 -
nyoj 115 Dijkstra
描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市。 他在用这N个部队维护着M个城市的治安,这M个城市分别编号从1到M。 现在,小工军师告诉南将军,第K号城市发生了暴乱,南将军从各个部队都派遣了一个分队沿最近路去往暴乱城市平乱。 现在已知在任意两个城市之间的路行军所需的时间,你作为南将军麾下最厉害的程序员,请你编写一个程序来告诉南将军第一个分队到达叛乱城市所需的时间。原创 2012-11-11 02:20:20 · 719 阅读 · 0 评论 -
NYOJ 116 树状数组
初学树状数组。。 这是线段树的图,由图可知,c[1]=a[1];c2=a[1]+a[2];c[3]=a[3];c[4]=a[1]+a[2]+a[3]+a[4];c[5]=a[5]; c[6]=a[5]+a[6];c[7]=a[7];c[8]=a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8]; 可以得到这个规律,i为奇数时,c[i]=a[i],这里原创 2012-11-14 22:36:12 · 503 阅读 · 0 评论 -
nyoj 123 树状数组 插线问点
南将军麾下有百万精兵,现已知共有M个士兵,编号为1~M,每次有任务的时候,总会有一批编号连在一起人请战(编号相近的人经常在一块,相互之间比较熟悉),最终他们获得的军功,也将会平分到每个人身上,这样,有时候,计算他们中的哪一个人到底有多少军功就是一个比较困难的事情,军师小工的任务就是在南将军询问他某个人的军功的时候,快速的报出此人的军功,请你编写一个程序来帮助小工吧。 假设起始时所有人的军功都是0原创 2012-11-16 22:48:30 · 774 阅读 · 0 评论 -
nyoj221 已知条件构造二叉树
链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=221 由于二叉树本身是递归的结构,前序遍历的第一个节点一定是根节点,而通过对后序的结果进行查找,后续第一个节点的距离与前序第一个相同的结点的距离即为左子树的节点的个数,同理右子树同理、 #include #include #include #define Max 27 using原创 2012-11-01 01:50:12 · 710 阅读 · 0 评论 -
nyoj 511 双向静态链表
给你n个小球,从左到右编号依次为1,2,3,4,5,6.........n,并规定小球1的左边的球号为n,小球n的右边的球号为1.现在有以下3种操作:A x y表示把编号为x小球移动到编号为y的小球的左边,B x y表示把编号为x小球移动到编号为y的小球的右边,Q 1 m为询问编号为m的小球右边的球号,Q 0 m为询问编号为m的小球左边的球号。 输入第一行有一个整数n(0 随后的M行,每行原创 2012-11-04 23:53:13 · 590 阅读 · 0 评论 -
NYOJ 38最小生成树布线问题
最近在学图方面的知识,拿来练手,结果花了一天的时间才AC,~~~汗 看来对prim算法不熟练啊,以后得多多练习,这个题需要注意几点,首先没有连通的路线要初始化为很大的值,这个题数据比较小,采取邻接矩阵的存储。刚开始为了二维数组的传递耗了半天,,基础知识不熟。。上代码吧。 prim算法描述: TE为解的顶点集合,U为生成树的边的集合。 第一步:初始化边的集合,有连通的则初始化为其权值原创 2012-10-06 01:19:20 · 782 阅读 · 0 评论 -
喷水装置二 nyoj12
来源:http://acm.nyist.net/JudgeOnline/problem.php?pid=12 有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n<=10000)个点状的喷水装置,每个喷水装置i喷水的效果是让以它为中心半径为Ri的圆都被润湿。请在给出的喷水装置中选择尽量少的喷水装置,把整个草坪全部润湿。 输入 第一行输入一个正整数N表示共有n次测试数原创 2012-11-26 14:08:41 · 1551 阅读 · 0 评论 -
整数划分 NYOJ 90
描述 将正整数n表示成一系列正整数之和:n=n1+n2+…+nk, 其中n1≥n2≥…≥nk≥1,k≥1。 正整数n的这种表示称为正整数n的划分。求正整数n的不 同划分个数。 例如正整数6有如下11种不同的划分: 6; 5+1; 4+2,4+1+1; 3+3,3+2+1,3+1+1+1; 2+2+2,2+2+1+1,2+1+1+1+1; 1+1+1+1+1+原创 2012-11-21 00:18:52 · 1126 阅读 · 0 评论 -
NYOJ38 大数阶乘
资料来源:http://hi.baidu.com/shiranon/item/96a611111ad1667b71d5e8a1 一、递归方法 这个是最容易想的,如果是1的阶乘,则返回1,其他的都返回n-1的阶乘与n的积,循环调用即可。不过问题是即使用double来存放该值,由于double本身的精度、能存的数字大小所限,算不了太大的数的阶乘。 二、数组方法 思路:用data数组来存放阶乘的原创 2012-10-13 02:21:38 · 672 阅读 · 0 评论 -
nyoj 118 次小生成树
描述 南将军率领着许多部队,它们分别驻扎在N个不同的城市里,这些城市分别编号1~N,由于交通不太便利,南将军准备修路。 现在已经知道哪些城市之间可以修路,如果修路,花费是多少。 现在,军师小工已经找到了一种修路的方案,能够使各个城市都联通起来,而且花费最少。 但是,南将军说,这个修路方案所拼成的图案很不吉利,想让小工计算一下是否存在另外一种方案花费和刚才的方案一样,现在你来帮小工写一个程原创 2012-11-11 23:21:07 · 1569 阅读 · 0 评论 -
nyoj 7 最短路径 数论
链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=7 一个街区有很多住户,街区的街道只能为东西、南北两种方向。 住户只可以沿着街道行走。 各个街道之间的间隔相等。 用(x,y)来表示住户坐在的街区。 例如(4,20),表示用户在东西方向第4个街道,南北方向第20个街道。 现在要建一个邮局,使得各个住户到邮局的距离原创 2012-11-24 15:03:53 · 1321 阅读 · 0 评论 -
nyoj 42欧拉回路
链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=42 这道题我刚开始用的dfs,结果出了点小问题~~~结果时对时不对。。。 网上说可以用欧拉回路解决,这就只需要解决两个问题了。判断图是否连通,依次判断图中每个点的出度 判断连通可以用dfs,也可以用并查集。 dfs遍历该图,并标记所访问的结点,遍历结束,若存在没标记的点,则不是连通。原创 2012-10-30 00:27:25 · 3900 阅读 · 0 评论 -
nyoj 129 poj 1308 Is a tree
A tree is a well-known data structure that is either empty (null, void, nothing) or is a set of one or more nodes connected by directed edges between nodes satisfying the following properties. Ther原创 2012-11-23 18:45:51 · 495 阅读 · 0 评论 -
nyoj 82 搜索
链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=82 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫里有N个编过号的门(N 输入 输入可能会有多组测试数据(不超过10组)。 每组测试数据的第一行包含了两个整数M,N(1 .表示可以走的路 S:表示ACM的出发点 G表示宝藏的位置原创 2012-12-14 18:31:51 · 482 阅读 · 0 评论 -
nyoj 117 归并求逆序数
链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=117 花了一晚上和上午的时间终于调试出来了,一开始没有考虑到存在相等数字的情况~~ 这里有必要对归并排序进行总结。分为分治三步法 1.划分问题:把序列分成元素个数尽量相等的两半 2.递归求解:把两半元素分别排序 3.合并问题:把两个有序表合并成一个 此题求逆序中的第二步就是统计i,原创 2012-11-13 17:47:17 · 742 阅读 · 0 评论 -
nyoj 35 267 表达式求值
ACM队的mdd想做一个计算器,但是,他要做的不仅仅是一计算一个A+B的计算器,他想实现随便输入一个表达式都能求出它的值的计算器,现在请你帮助他来实现这个计算器吧。 比如输入:“1+2/4=”,程序就输出1.50(结果保留两位小数) 输入 第一行输入一个整数n,共有n组测试数据(n 每组测试数据只有一行,是一个长度不超过1000的字符串,表示这个运算式,每个运算式都是以“=”结束。这个表原创 2012-11-12 01:12:53 · 692 阅读 · 0 评论 -
Dijkstra 单源最短路径
算法思想: 辅助数组dis[i] 表示当前源顶点到i的最短路径。dis[i]在程序未结束前,类似于动态规划,可更新以取得最小值 数组path用来记录路径 首先初始化令dis[i]为Edge[v0][i],v0为源顶点,然后选择离源顶点最小的路径,加入到构造最短路径的点集合中,然后看是否可以更新dis[i]的值,依次循环n-1次,即可得打正解. 测试代码: #include #inclu原创 2012-10-08 00:59:52 · 444 阅读 · 0 评论