大学时期的算法比赛
主要是PTA,蓝桥杯,ACM
驰骋光束
这个作者很懒,什么都没留下…
展开
-
Dijkstra算法-城市间紧急救援
/*作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶往事发地,同时,一路上召集尽可能多的救援队。输入格式:输入第一行给出4个正整数NN、MM、SS、DD,其中NN(2\le N\le 5002≤N≤原创 2017-05-26 10:53:33 · 536 阅读 · 0 评论 -
堆排-寻找大富翁.cpp
/* 5-1 寻找大富翁 (25分)2015年胡润研究院的调查显示,截至2014年9月,个人资产在600万元以上高净值人群达290万人。假设给出N个人的个人资产值,请快速找出资产排前M位的大富翁。输入格式:输入首先给出两个正整数NN(\le 10^6≤10?6?? )和MM(\le 10≤10),其中NN为总人数,MM为需要找出的大富翁数;接下来一行给出NN个人的个人资产值,以百万元为原创 2017-05-26 11:01:06 · 332 阅读 · 0 评论 -
Floyd算法-天梯地图.cpp
/*5-2 天梯地图 (30分)本题要求你实现一个天梯赛专属在线地图,队员输入自己学校所在地和赛场地点后,该地图应该推荐两条路线:一条是最快到达路线;一条是最短距离的路线。题目保证对任意的查询请求,地图上都至少存在一条可达路线。输入格式:输入在第一行给出两个正整数N(2 \le≤ N \le≤ 500)和M,分别为地图中所有标记地点的个数和连接地点的道路条数。随后M行,每行按如下格式给出一原创 2017-05-26 10:56:22 · 355 阅读 · 0 评论 -
prime算法-畅通工程之局部最小花费问题.cpp
#include <stdio.h>/*某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建快速路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全地区畅通需要的最低成本。输入格式:输入的第原创 2017-05-26 10:59:15 · 586 阅读 · 1 评论 -
霍夫曼树延伸-修理牧场
#include<stdio.h>#include<malloc.h>/*5-1 修理牧场 (25分)//最好的情况是19分,剩下的超时,应该用栈农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要NN块木头,每块木头长度为整数L_iL?i?? 个长度单位,于是他购买了一条很长的、能锯成NN块的木头,即该木头的长度是L_iL?i?? 的总和。但是农夫自己没有锯子,请人锯木的酬金跟这原创 2017-05-26 10:48:25 · 741 阅读 · 0 评论 -
树的同构.cpp
/*给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。现给定两棵树,请你判断它们是否是同构的。输入格式:输入给出2棵二叉树树的信息。对于每棵树,首先在一行中给出一个非负整数N (≤10),即该树的结点数(此时假设结点从0到N-1原创 2017-05-27 09:32:03 · 308 阅读 · 0 评论 -
关键活动.cpp
/*5-1 关键活动 (30分)假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行。“任务调度”包括一组子任务、以及每个子任务可以执行所依赖的子任务集。比如完成一个专业的所有课程学习和毕业设计可以看成一个本科生要完成的一项工程,各门课程可以看成是子任务。有些课程可以同时开设,比如英语和C程序设计,它们没有必须先修哪门的约束;有些课程则不可原创 2017-05-26 11:02:47 · 361 阅读 · 0 评论 -
快排-奥运排行榜.cpp
#include <stdio.h>#include <stdlib.h>/*5-2 奥运排行榜 (25分)每年奥运会各大媒体都会公布一个排行榜,但是细心的读者发现,不同国家的排行榜略有不同。比如中国金牌总数列第一的时候,中国媒体就公布“金牌榜”;而美国的奖牌总数第一,于是美国媒体就公布“奖牌榜”。如果人口少的国家公布一个“国民人均奖牌榜”,说不定非洲的国家会成为榜魁…… 现在就请你写一原创 2017-05-26 11:04:13 · 669 阅读 · 0 评论 -
5-1归并排序.cpp
/*给定NN个(长整型范围内的)整数,要求输出从小到大排序后的结果。本题旨在测试各种不同的排序算法在各种数据情况下的表现。各组测试数据特点如下:数据1:只有1个元素;数据2:11个不相同的整数,测试基本正确性;数据3:103个随机整数;数据4:104个随机整数;数据5:105个随机整数;数据6:105个顺序整数;数据7:105个逆序整数;数据8:105个基本有序的整数;数据9:原创 2017-05-26 11:05:55 · 1018 阅读 · 0 评论 -
Kruskal算法-畅通工程之最低成本建设问题.cpp
/*5-2 畅通工程之最低成本建设问题 (30分)某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了有可能建设成快速路的若干条道路的成本,求畅通工程需要的最低成本。输入格式:输入的第一行给出城镇数目NN (1<原创 2017-05-26 10:57:59 · 1645 阅读 · 0 评论 -
最大子阵.java
package A类有价值的回顾的;import java.util.Scanner;public class 最大子阵 { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int[][] a = new int[505][505]; int[]原创 2017-05-28 10:38:52 · 463 阅读 · 0 评论 -
最长上升子序列.java
package A类有价值的回顾的;//(LIS)/* * 5-10 列车调度 (25分)火车站的列车调度铁轨的结构如下图所示。两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减原创 2017-05-28 10:37:49 · 1131 阅读 · 0 评论 -
状态压缩.java
package A类有价值的回顾的;//http://www.tuicool.com/articles/JVzMVjimport java.util.Scanner;//如果一道题前期你没有明确的思路,说明你已经输了,而且后期你脱的时间越长,输的越多//不要纠结在毫不值得的地方public class 状态压缩 { public static int mod = 100000000;原创 2017-05-28 10:37:17 · 371 阅读 · 0 评论 -
四阶幻方.java
package A类有价值的回顾的;/* * 0 1 2 3 !!!!!!!!!!!!!!!!!! * 4 5 6 7 //这个要进入下一层进行判断,完全没必要,可以改写一下 * 8 9 10 11 !!!!!!!!!!!!!!!!!! *12 13 14 15 要为自己喜欢的事情奋斗一辈子,不能以为可以功成身退,那将会徒增原创 2017-05-28 10:36:10 · 1361 阅读 · 0 评论 -
数独.java
package A类有价值的回顾的;import java.util.Scanner;//真的很难下手//有了一定的套路模型了public class 数独{ public static int[][] a = new int[9][9]; public static boolean fa(int h,int l,int i){//检查要求的区域是否有重复,这里不能简单的通过标记T原创 2017-05-28 10:34:56 · 489 阅读 · 0 评论 -
矩阵翻硬币.java
package A类有价值的回顾的;import java.math.BigInteger;import java.util.Arrays;import java.util.Scanner;public class 矩阵翻硬币 { private static BigInteger MaxSqrt(String s){ BigInteger b = new BigInteg原创 2017-05-27 09:48:23 · 465 阅读 · 0 评论 -
01pakage.java
package A类有价值的回顾的;import java.util.Scanner;//如果过了省赛,说明你有竞赛的前途,你就可以去扩展一下,看一下背包九讲,如果没过,那就算了吧//给定N个物品,每个物品有一个重量W和一个价值V.你有一个能装M重量的背包.问怎么装使得所装价值最大.每个物品只有一个.//输入的第一行包含两个整数n, m,分别表示物品的个数和背包能装重量。//以后N行每行两个数W原创 2017-05-27 09:33:45 · 243 阅读 · 0 评论 -
My垒骰子.java
package A类有价值的回顾的;import java.util.Scanner;/* * 赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体。经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥!我们先来规范一下骰子:1 的对面是 4,2 的对面是 5,3 的对面是 6。假设有 m 组互斥现象,每组中的那两个数字的面紧贴在一起,骰子原创 2017-05-27 09:38:39 · 821 阅读 · 0 评论 -
21位水仙花数
package A类有价值的回顾的;import java.math.BigInteger;public class ShuixianhuaTest { private static BigInteger[] base = new BigInteger[10]; private static BigInteger calcu(int n){ BigInteger a =原创 2017-05-27 09:39:38 · 365 阅读 · 0 评论 -
安慰奶牛.java
package A类有价值的回顾的;/* * 最小生成树是什么:连接所有点,而且所有边的权值之和最小1.概览Kruskal算法是一种用来寻找最小生成树的算法,由Joseph Kruskal在1956年发表。用来解决同样问题的还有Prim算法和Boruvka算法等。三种算法都是贪婪算法的应用。和Boruvka算法不同的地方是,Kruskal算法在图中存在相同权值的边时也有效。2.算法简单描原创 2017-05-27 09:40:29 · 709 阅读 · 0 评论 -
波动数列背包版.java
package A类有价值的回顾的;import java.util.Arrays;import java.util.Scanner;/* 注意:有的文章自己都搞不清楚,代码倒是能够AC,趁早换 * 设数列首项为x,F(i)={a,-b},第i项加上F(i)为第i+1项。所以第2项可表示为x+F(1),第2项可表示为x+F(1)+F(2), * 第3项可表示为x+F(1)+F(2)+F(3).原创 2017-05-27 09:41:08 · 452 阅读 · 0 评论 -
搭积木.java
package A类有价值的回顾的;public class 搭积木 { public static int n = 0; public static boolean[] b = new boolean[10]; public static int[] c = new int[10]; public static boolean f2(int a,int i){//有时原创 2017-05-27 09:41:39 · 2816 阅读 · 0 评论 -
大臣的旅费.java
package A类有价值的回顾的;import java.util.Arrays;import java.util.Scanner;/* * 假设 s-t这条路径为树的直径,或者称为树上的最长路 * 现有结论,从任意一点u出发搜到的最远的点一定是s、t中的一点,然后在从这个最远点开始搜,就可以搜到另一个最长路的端点, * 即用两遍广搜就可以找出树的最长路 */public class原创 2017-05-27 09:42:18 · 1114 阅读 · 0 评论 -
带分数.java
package A类有价值的回顾的;//通过字符串处理数据的重复问题import java.util.Scanner;public class 带分数 { public static int max = 1000*1000; public static void main (String[] args){ int rightnum = 0; Scanner原创 2017-05-27 09:42:49 · 421 阅读 · 0 评论 -
A类有价值的回顾的/地宫取宝.java
package A类有价值的回顾的;import java.util.Arrays;import java.util.Scanner;//竞赛的确可以学到很多东西//算法就是解决问题的方法//http://blog.csdn.net/wqy20140101/article/details/50639269public class 地宫取宝 { public static int n,m原创 2017-05-27 09:43:44 · 334 阅读 · 0 评论 -
寒假作业.java
package A类有价值的回顾的;/*0 1 2 *3 4 5 *6 7 8 *9 10 11 * */public class 寒假作业 { public static boolean[] a = new boolean[14];//biaoji 1-13 public static int[] c = new int[12]; public static原创 2017-05-27 09:44:31 · 523 阅读 · 0 评论 -
剪格子.java
package A类有价值的回顾的;import java.util.Scanner;//对于这道题,你得到的经验就是说,对于格子的选择与谁有关,这就是在递归中需要传递的//最重要的是,不知道出什么样的题目,将会丢失目标public class 剪格子 { public static int[][] a = new int[11][11];//输入的数 public stati原创 2017-05-27 09:45:20 · 580 阅读 · 0 评论 -
剪邮票.java
package A类有价值的回顾的;import java.util.Arrays;import java.util.HashSet;/* 0 1 2 3 4 5 6 7 8 9 10 11http://www.cnblogs.com/loveluking/p/6390455.html */public class 剪邮票 { private static boolean[]原创 2017-05-27 09:45:57 · 542 阅读 · 0 评论 -
今有7对数字.java
package A类有价值的回顾的;/* 先全排列 在找出符合条件的 ,这种方法是不行的,因为全排列的个数太多,去分析这样的数列的构造规律,缩小范围 三个主体:1-7数字(直接用i的for循环得到);1-7数字是否被使用的标志数组a[];数列14个位置选了啥的储存数组c[]; 大体思路:将1-7数字放到c[]中去 具体细节:先判断是否被放置了数字(因为前一个数字原创 2017-05-27 09:46:48 · 823 阅读 · 1 评论 -
九数分三组.java
package A类有价值的回顾的;import java.util.Arrays;public class 九数分三组 {//从A取值的范围上进行考虑,然后进行暴力穷举,减少思考的复杂度 public static void main(String[] args){ for(int a=111;a<333;a++){ int b = a*2;原创 2017-05-27 09:47:36 · 730 阅读 · 0 评论 -
取球博弈.java
package A类有价值的回顾的;import java.util.Scanner;public class 取球博弈 { private static int[] a = new int[3]; private static int[] bb = new int[5]; private static int f(int b,int myc,int hisc){原创 2017-05-27 09:49:26 · 1167 阅读 · 1 评论 -
BiTree显示Test.java
package A类有价值的回顾的;public class BiTreeTest { public static void main(String[] args){ BiTree root = new BiTree(1); root.add(new BiTree(2)); root.add(new BiTree(27)); ro原创 2017-05-27 09:36:18 · 496 阅读 · 0 评论