自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 最短路径问题

 Dijstra算法求最短路径九度1008题目描述:给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。输入:输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数 s,t;起点s,终点t。n和m为0...

2018-06-19 14:14:57 261

原创 一些机试题

二维数组右上左下遍历描述给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按从左上到右下的对角线顺序遍历整个数组。输入输入的第一行上有两个整数,依次为row和col。余下有row行,每行包含col个整数,构成一个二维整数数组。(注:输入的row和col保证0 < row < 100, 0 < col < 100)输出按遍历顺序输出每个整数。...

2018-05-09 10:54:20 866

原创 最小生成树练习

POJ 1789 Truck HistoryDescriptionAdvanced Cargo Movement, Ltd. uses trucks of different types. Some trucks are used for vegetable delivery, other for furniture, or for bricks. The company has its own ...

2018-04-17 13:43:14 442

原创 一些tips

1. 堆  大顶堆priority_queue<int> q;        小顶堆   struct cmp { bool operator()(int a, int b) { return a > b; }};priority_queue<int, vector<int>, cmp > q;2. 最小生成树最开始声明数组的时候有: edge...

2018-04-15 09:35:13 169

原创 贪心poj练习

今天做了一个贪心练习的变形,感觉很不错,虽然自己调错误调了很久,但是全都是自己写出来的代码,感觉还是很开心的POJ1328该题将点坐标转化成线段,即以每个小岛为圆心,以d为半径做圆看与x轴的交点,每个线段利用贪心算法从左至右求解DescriptionAssume the coasting is an infinite straight line. Land is in one side of co...

2018-04-10 14:43:14 349

原创 动态规划poj练习

poj 3176 Cow BowlingDescriptionThe cows don't use actual bowling balls when they go bowling. They each take a number (in the range 0..99), though, and line up in a standard bowling-pin-like triangle l...

2018-04-09 13:24:15 218

原创 拓补排序

突然发现之前做图论的题的时候忘记发博客了。。。今天在做map的时候突然发现拓补序列的特征:若节点U经过若干条有向边后能够到达节点V,则在求得的序列中U必然排在V之前求拓补序列的方法:选择入度为0的节点,作为序列的第一个节点,当该节点被选为序列的第一个顶点之后,将该点从图中删去,同时删去以该节点为弧尾的所有边,得到一个新图。重复找入度为0的点删去,若到了最后出现了找不到入度为0 的点的情况,说明有环...

2018-04-02 13:24:53 160

原创 堆排序

北大17年机试中就出现了堆排序的题,今天上课也讲到了这个算法,索性实现一下。堆排序算法理解起来很容易:1. 先遍历节点(除叶子之外),不断比较节点与左右子树的大小并进行swap交换,进行一个adjust调整的递归调用,最终堆顶为最大或者最小值;2. 然后把堆顶元素放到数组最后,对剩下的元素进行上述的调整过程。堆排序 时间复杂度为nlogn,但是是不稳定的建堆(初始化+调整堆, 时间复杂度为O(n)...

2018-04-02 11:30:52 114

原创 String各种字符串

今天要刷一刷字符串的类型题,在机试中总是会涉及到,而且属于简单题,所以应该是必须要做出来的那种。最好用的就是String模板了#include<string> 下面列出来主要的几个string函数:a) =,assign() //赋以新值b) swap() //交换两个字符串的内容c) +=,append(),push_back() //在尾部添加字符d) ins...

2018-04-01 11:12:40 214

原创 背包问题

动态规划中运用非常多的是背包问题背包问题一共有三种:1. 0-1背包问题2. 完全背包问题(需要把背包装满,只需要在0-1背包的基础上改变一下初始化即可)3. 多重背包问题(相当于0-1背包问题的演变)例一 九度1123 0-1背包问题题目描述:辰辰是个很有潜能、天资聪颖的孩子,他的梦想是称为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带...

2018-03-31 11:40:40 146

原创 set

今天看到了一道题,最开始想用优先队列,发现不能同时控制队列的头和尾,双向队列又不知道怎么排序,所以学到了一个新技能,就是利用c++模板库中的setset的特性是,所有元素都会根据元素的键值自动排序,set的元素不像map那样可以同时拥有实值(value)和键值(key),set元素的键值就是实值,实值就是键值。set不允许两个元素有相同的键值。先附上几个set的常用方法,注意其中很多都是返回一个迭...

2018-03-29 09:57:40 274

原创 最长公共子序列LCS

此类问题一般是给出两个或多个字符串,然后找出最长的相同子序列。方法(两个字符串为例):dp[0][i]=0  i∈[0,length(str1)]dp[i][0]=0  i∈[0,length(str2)]dp[i][j]=dp[i-1][j-1]+1 (str1[i] == str2[j])dp[i][j]=max(dp[i-1][j],dp[i][j-1]) (str1[i] != str2[...

2018-03-26 11:30:10 104

原创 最长递增子序列LIS

<动态规划进阶啦>在已知序列中,取出若干数组成新的序列,这个序列下标和大小要按照从小到大或者从大到小的顺序,找出最长子序列。F[1]=1;F[i]=max{1, F[j]+1 | aj<ai && j<i };for (i = n-1; i >=0; i--) { dp2[i] = 1; for (j = n-1; j >i; j--...

2018-03-24 23:13:12 140

原创 递推问题

递推问题主要涉及到两大类,背过方法即可1. 普通递推(爬楼梯问题)2. 错排问题 :运用错排公式 F[N]=(N-1)*F[N-1]+(N-1)*F[N-2]例一:九度1205题目描述:N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。(要求采用非递归)输入:输入包括一个整数N,(1<=N<90)。输出:可能有多组测试数据,对于每组数据,输出当楼梯阶数是N时的上楼方式个数。样...

2018-03-24 10:28:30 817

原创 深度遍历搜索DFS

我发现深度遍历搜索其实用的算法就是递归啊。。。这种成了模型的代码还是要多敲练手感。。九度1461这个程序敲得很顺,但是debug了好久,因为各种细节问题。。题目描述:The doggie found a bone in an ancient maze, which fascinated him a lot. However, when he picked it up, the maze began...

2018-03-23 23:31:24 147

原创 递归

好久没更了,但是还是坚持了每天至少一题。。今天更递归,虽然我老是在递归上犯迷糊,但是背也得背下来先看递归经典问题汉诺塔问题汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一...

2018-03-23 13:41:07 140

原创 最小生成树MST

最小生成树Kruskal算法1.初始时所以点属于孤立的结点2.按照边权递增的顺序遍历所有的边,若该边的两个点不属于一个集合,则确定该边为最小生成树上的一条边,且要将这两个点合并到一个集合之中。3.遍历完所有边,若原图上所有结点均属于同一集合,则被选取的边和结点构成了最小生成树;否则不连通,MST不存在方法:并查集例一:九度1017 还是畅通工程题目描述:    某省调查乡村交通状况,得到的统计表中...

2018-03-14 08:41:10 322

原创 并查集

数据结构——集合用来表示集合信息,用以实现如确定某个集合含有哪些元素、判断两个元素是否存在在同一集合中 、求集合中元素个数等问题。方法:用一棵树来表示一个集合,判断是否在一个集合中,只需判断是否在一棵树上。定义数组Tree[]来表示双亲结点编号,若该结点已经是根节点,则保存为-1#define N 1000int Tree[N];//初始化所有节点的树根为-1,即为独立节点,注意循环的开始和结束...

2018-03-14 08:24:40 152

原创 分解素因数

对一个数分解质因数,使得其满足x=p1^e1*p2^e2*...*pn^en*例一 九度1207 求质因数的个数题目描述:求正整数N(N>1)的质因数的个数。相同的质因数需要重复计算。如120=2*2*2*3*5,共有5个质因数。输入:可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9)。输出:对于每组数据,输出N的质因数的个数。样例输入:120样例输出:5...

2018-03-07 20:34:49 846

原创 二分求幂(一种快速幂运算的方法)

求a的b次方,运用二分求幂的方法  ——通过将b转换成二进制进行分解//普通二分求幂long long pow(long long q, long long k) { //q的k次方    long long ans=1;    while (k!=0) {        if (k % 2 == 1) {            ans *= q; ans %=...

2018-03-07 20:20:22 625

原创 素数问题

素数问题一般有两种类型1.直接判断某个数是否为素数  #include<math.h>bool judge(int x){ if (x <= 1) return false; int bound = (int)sqrt(x) + 1; //防止double带来的精度损失 for (int i = 2; i < bound; i++) { if (x%i =...

2018-02-24 14:27:46 1712

原创 公约数、公倍数

最大公约数#include<stdio.h>int gcd(int a,int b) //直接利用递归{ if(b==0){ return a; } else{ return gcd(b,a%b); }}/*解析int gcd(int a,int b){ while(b!=0) { int t=a%b; a=b; b=t; } retu...

2018-02-13 11:07:16 117

原创 进制转换问题

题型一:十进制-->n进制九度1026 A+B题目描述:输入两个不超过整型定义的非负10进制整数A和B(<=231-1),输出A+B的m (1 < m <10)进制数。输入:输入格式:测试输入包含若干测试用例。每个测试用例占一行,给出m和A,B的值。当m为0时输入结束。输出:输出格式:每个测试用例的输出占一行,输出A+B的m进制数。样例输入:8 1300 482 1 7...

2018-02-12 14:00:05 267

原创 树问题

一、哈弗曼树树中所有叶子节点的带权路径之和为该树的带权路径长度和;给定n个节点和他们的权值,以它们为叶子节点构造一棵带权路径长度最小的二叉树,该树即为哈弗曼树。若k中只剩一个节点,该节点即为构造出的哈弗曼树的根节点,所有构造得到的中间节点的权值和即为该哈弗曼树的带权路径和。方法:利用优先队列实现堆数据结构#include<queue>using namespacepriority_...

2018-02-09 09:50:37 215

原创 栈类问题

栈的基本操作  栈的相关操作可使用C++模板库里的函数#includeusing namespace std;定义一个栈stack S;S.push(i); 将数值i压入栈int x=S.top(); 读取栈顶元素S.pop(); 弹出栈顶元素例1. 九度1153 括号匹配问题题目描述:在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与

2018-02-06 13:07:57 254

原创 贪心练习

九度1435 迷瘴题目描述:通过悬崖的yifenfei,又面临着幽谷的考验——幽谷周围瘴气弥漫,静的可怕,隐约可见地上堆满了骷髅。由于此处长年不见天日,导致空气中布满了毒素,一旦吸入体内,便会全身溃烂而死。幸好yifenfei早有防备,提前备好了解药材料(各种浓度的万能药水)。现在只需按照配置成不同比例的浓度。现已知yifenfei随身携带有n种浓度的万能药水,体积

2018-02-05 13:03:50 211

原创 贪心类问题

此类问题运用贪心算法,首先要找出按照哪一变量进行贪心化,利用sort函数进行排序例1 九度1433 FatMouse's Trade该题的贪心化点为性价比高的物品优先题目描述:FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the warehouse cont

2018-02-05 12:55:48 166

原创 查找练习

九度1126题目描述:在一个整数数组上,对于下标为i的整数,如果它大于所有它相邻的整数,或者小于所有它相邻的整数,则称为该整数为一个极值点,极值点的下标就是i。输入:每个案例的输入如下:有2×n+1行输入:第一行是要处理的数组的个数n;对其余2×n行,第一行是此数组的元素个数k(4输出:每个案例输出为n行:每行对应于相应数

2018-02-03 12:25:15 331

原创 查找类问题

查找方法方法1:普通线性查找 O(L),即遍历数组九度1052题目描述:输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。输入:测试数据有多组,输入n(1输出:对于每组输入,请输出结果。样例输入:21 30样例输出:

2018-02-03 12:19:34 129

原创 排版练习

九度1161 Repeater题目描述: Harmony is indispensible in our daily life and no one can live without it—-may be Facer is the only exception. One day it is rumored that repeat painting will create harmo

2018-02-01 12:52:20 299

原创 排版类问题(输出各种图形)

类型一:对于输出有规律的例 九度1065 输出梯形题目描述:输入一个高度h,输出一个高为h,上底边为h的梯形。输入:一个整数h(1输出:h所对应的梯形。样例输入:4样例输出: **** ****** ******************#includeint m

2018-02-01 12:43:54 642

原创 Hash练习

九度1156  谁是你潜在的朋友题目描述:    “臭味相投”——这是我们描述朋友时喜欢用的词汇。两个人是朋友通常意味着他们存在着许多共同的兴趣。然而作为一个宅男,你发现自己与他人相互了解的机会并不太多。幸运的是,你意外得到了一份北大图书馆的图书借阅记录,于是你挑灯熬夜地编程,想从中发现潜在的朋友。    首先你对借阅记录进行了一番整理,把N个读者依次编号为1,2,…,N,

2018-01-31 12:18:54 139

原创 Hash类问题

利用哈希函数相当于预处理,特别适用于有对应关系,以及大批量数据遍历匹配上注意:当hash函数需要较大空间时,定义为全局变量,在main函数中利用for循环初始化例1.统计同成绩学生人数九度1018题目描述:读入N名学生的成绩,将获得某一给定分数的学生人数输出。输入:测试输入包含若干测试用例,每个测试用例的格式为第1行:N第2行:N

2018-01-31 12:13:59 213

原创 日期练习

九度1070题目描述:输入年、月、日,计算该天是本年的第几天。输入:包括三个整数年(1输出:输入可能有多组测试数据,对于每一组测试数据,输出一个整数,代表Input中的年、月、日对应本年的第几天。样例输入:1990 9 202000 5 1样例输出:263122#include#i

2018-01-31 12:00:06 217

原创 日期类问题

日期类问题方法预处理:在程序真正开始输入数据之前,先将所有日期与原点日期之间的天数差保存起来,之后直接调用即可例1:九度1096题目描述:有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天输入:有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD输出:每组数据输出一行,即日期差值样例

2018-01-30 13:02:58 187

原创 排序练习

九度1185题目描述:输入一系列整数,将其中最大的数挑出,并将剩下的数进行排序。12输入:输入第一行包括1个整数N,1<=N<=1000,代表输入数据的个数。接下来的一行有N个整数。123输出:可能有多组测试数据,对于每组数据,第一行输出一个整数,代表N个整数中的最大值,并将此值从数组中去除,将剩下的数进行排序。第二行将排序的结果输出。1234样例输入:41 3 4 2...

2018-01-30 12:51:38 301

原创 排序类方法(冒泡、sort快排)

冒泡排序复杂度O(n²)100*100=10000在百万级别内(1s内)#includeint main(int argc, char* argv[]){ int n; int a[100]; while(scanf("%d",&n)!=EOF) //读入数,Ctrl+z即可退出 { //如果是读入字符串的话则要用 while(gets(字符串变量)) in

2018-01-28 17:24:38 520

原创 HDOJ 1004Let the Balloon Rise(字符串统计)

Problem DescriptionContest time again! How excited it is to see balloons floating around. But to tell you a secret, the judges' favorite time is guessing the most popular problem. When the contest i

2018-01-26 11:41:21 224

原创 HDOJ 1003 Max Sum(动态规划)

Problem DescriptionGiven a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence. For example, given (6,-1,5,4,-7), the max sum in this sequence is 6 + (-1) + 5 + 4

2018-01-24 15:09:21 139

空空如也

空空如也

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

TA关注的人

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