自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

转载 哪些问题可用动态规划思想来解决

动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。20世纪50年代初,美国数学家贝尔曼(R.Bellman)等人在研究多阶段决策过程的优化问题时,提出了著名的最优化原理,从而创立了动态规划。动态规划的应用极其广泛,包括工程技术、经济、工业生产、军事以及自动化控制等领域,并在背包问题、生产经营问题、资金管理问题、资源分配问题、最短路径问题和复杂系统可靠性问题等中取得了显著的效果动态规划是求解决策过程最优化的数学方法。如果一个问题可以分解成若干个子问题.

2021-01-08 23:43:18 4078

原创 动态规划的引入1

一、动态规划的引入之前学习过一段时间的动态规划,但掌握的不够牢固,实际做题时还是不能灵活的运用,所以打算在寒假对这部分知识进行学习和巩固,按照洛谷的提单分为五个部分进行学习:1.动态规划的引入2.线性状态动态规划3.区间与环形动态规划4.树与图上的动态规划5.状态压缩动态规划本文题目选自第一部分的练习内容题目:过河卒题目内容:棋盘上 AA 点有一个过河卒,需要走到目标 BB 点。卒行走的规则:可以向下、或者向右。同时在棋盘上 CC 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对

2021-01-04 18:41:07 1023 2

原创 寒假算法题练习

题目迷宫题目背景给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过。给定起点坐标和终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案。在迷宫中移动有上下左右四种方式,每次只能移动一个方格。数据保证起点上没有障碍。输入格式第一行N、M和T,N为行,M为列,T为障碍总数。第二行起点坐标SX,SY,终点坐标FX,FY。接下来T行,每行为障碍点的坐标。输出格式给定起点坐标和终点坐标,问每个方格最多经过1次,从起点坐标到终点坐标的方案总数。输入输出样例输入2 2 1

2021-02-06 15:16:02 118

原创 寒假算法题练习5

最小生成树及模板题一、最小生成树简介一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。 最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法求出。通俗的说就是有n个结点的带权无向图,用n-1条边连通,即为生成树,其中权值最小的生成树就是最小生成树。这篇文章介绍的是kruskal算法。二、模板题目题目描述如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出 orz。输入格式第一行包含两个整数 N,

2021-02-05 23:05:40 114

原创 寒假算法题练习4

题目 String Game题目内容:Clair and Bob play a game.Clair writes a string of lowercase characters, in which Bob sets the puzzle by selecting one of his favorite subsequence as the key word of the game. But Bob was so stupid that he might get some letters wrong.

2021-02-05 00:44:02 264

原创 STL中迭代器访问问题

STL中迭代器访问问题在用c++的stl做题时常常会用到迭代器,使用迭代器时有时可以随机加一个数即 i+x (i为迭代器,x为随机数)进行访问,有时只能用 i++、i- -,甚至有时只能用i++却不能i- -,这涉及到不同容器的迭代器的类型问题,这里对常用的几种迭代器类型的用法做一些记录。迭代器的分类迭代器有很多,常用的迭代器按功能强弱可以分为输入、输出、正向、双向、随机访问五种,而后三种是我们做题会经常用到的,也是这篇文章主要说明的。不同容器的迭代器也是不同的,例如set、map、list的迭代器是

2021-02-04 00:21:47 364

原创 拓扑排序及练习题

拓扑排序及练习题一、概念简介1、拓扑排序2、邻接矩阵3、邻接表二、练习题-最大食物链三、拓扑排序详解文章地址一、概念简介在后续题目中会提及这些概念,所以先给出一个简介。1、拓扑排序对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的

2021-01-30 00:41:34 1365

原创 map简介及练习题目

一、map简介map是C++的一个标准容器,提供一个key到value的映射,其中key可以为字符串、数字、字符等,例如int数组也是一个映射,但是只能是int到int的映射。map有一些常用的函数如下:构造函数:map<Type,Type> myMap; //Type可为string、int、char等普通函数:myMap.insert(pair<Type,Type>(key,value));myMap.count(key);//返回值为0、1对应无、有此元素myMa

2021-01-27 21:17:22 680

原创 字符串哈希1

一、字符串哈希简介Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。字符串哈希即当字符串过长时若逐位比较时间开销会很大,这时通过哈希算法求出它的哈希值,利用哈希值进行比较即可减小时间开销。这里要介绍

2021-01-26 07:33:25 205

原创 数据结构-链表

一、链表简介数据结构中有两个基本的存储结构:链表和数组,在算法题里会经常遇到。前者克服了后者需要预先知道数据大小的缺点,并且较后者可以更加灵活地进行内存动态管理,比如插入删除操作。但是数组也具有随机读取的优点,即可以通过数组下标访问元素,同时链表因为增加了节点的指针域,空间开销较大。链表有很多类型如单向链表、双向链表、循环链表。链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成

2021-01-26 00:46:40 66

原创 并查集2

集合之并查集2 集合之并查集21、并查集模板2、1、并查集模板并查集解决的问题很典型,可以归纳出模板,方便解题。这个模板包含三个并查集的主要操作:void Build(int n) ——建立并查集int Root(int x)——查询根节点void Unite(int x, int y)——合并并查集其中Root函数利用递归向上查找根结点,回溯时改变当前结点的父结点,指向根结点;Unite函数查询两个结点的根结点,若根结点相同无需合并,若不同则将合并后的根节点设置为两个结点中秩较大结点的根结点

2021-01-22 13:53:33 96

原创 并查集1

集合之并查集1 集合之并查集11、并查集简介(摘自百度百科)2、并查集入门题目——亲戚1、并查集简介(摘自百度百科)并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这一类问题近几年来反复出现在信息学的国际国内赛题中。其特点是看似并不复杂,但数据量极大,若用正常的数据结构来描述的话,往往在空间上过大,计算机无法承受;即使在空间上勉强通过,运行的时间复杂度也极高,根本就不可能在

2021-01-21 22:24:20 72

原创 判断回文的两种方式

一、什么是回文形如 ABCBA 的字符串或12321的数字被称为回文。二、怎么判断回文1、数字型回文利用/ %运算把不同数位上的数分隔开,再把数倒置并于原数进行比较,若相等则是回文,不相等则不是。(判断回文的数字一般会很大,所以用long型)bool symm(long m){ long temp = m,n=0; while (temp){ n = n*10+temp%10; temp = temp/10; } return (m == n);}2、字符串型回文字符串型

2021-01-20 21:50:18 9663 1

原创 Java解决大数、高精度问题

做了几个大数,高精度的题目,发现用C/C++实现太繁琐,了解到可以用Java里现成的 BigInteger 类和 BigDecimal 类高效解题,只需要调用其中的方法就行了。文末附有官方文档网址,本文只列出一些常用的。BigInteger:构造方法BigInteger BigInteger(String val)把字符串型的大数转换为大数对象BigInteger BigInteger(String val, int radix)同上,并可以设定基数普通方法BigInteger abs()

2021-01-15 17:33:18 262

原创 寒假算法题练习3

动态规划的题目题目: 换钱的最少货币数题目内容:给定数组arr,arr中所有的值都为正整数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个aim,代表要找的钱数,求组成aim的最少货币数。如果无解,请返回-1.【要求】时间复杂度O(n \times aim)O(n×aim),空间复杂度On。样例:输入[5,2,3],20返回值4输入[5,2,3],0返回值0解题过程:dp[i] 表示组成 i 的最少货币数,以是否选用 一张当前面值货币作为推导,起

2021-01-13 18:08:05 102

原创 寒假算法题练习2

继续之前的练习,牛客网上两道比较简单的动态规划题,复习之前学的内容题目一: 子数组的最大累加和问题题目内容:给定一个数组arr,返回子数组的最大累加和例如,arr = [1, -2, 3, 5, -2, 6, -1],所有子数组中,[3, 5, -2, 6]可以累加出最大的和12,所以返回12.题目保证没有全为负数的数据样例:输入[1, -2, 3, 5, -2, 6, -1]返回值12解题过程:动态规划的3个步骤:1. 设定状态 2. 推导方程 3. 起始值和输出这里dp[i]

2021-01-11 22:22:04 101

原创 寒假算法题练习1

题目:圆桌问题题目内容:圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即处死该人;然后从被处死的人之后开始数数,再将数到的第m个人处死……依此方法不断处死围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在处死n个人之后,圆桌上围坐的剩余的n个人全是好人。Input多组数据,每组数据输入:好人和坏人的人数n(<=32767)、步长m(<=32767);Output对于每一组数据,输出2n个大写字母,‘G’表示好人,‘

2021-01-08 23:19:52 128

原创 线性状态动态规划1

线性状态动态规划1——子序列问题线性动态规划,即具有线性阶段划分的动态规划。由于子序列问题在比赛中是很经典,也是很常见的问题,也能很好地体现动态规划思想,所以本文选择两道经典题——一个序列的最长上升子序列、两个序列的最长公共子序列进行叙述。一、最长上升子序列(一个序列)题目内容:给定一组整数,求最长上升子序列样例:输入 1 7 6 2 3 4 5输出 5解题过程:以当前数字为末尾数字,求最长上升子序列,所以要往前搜索并进行状态转移,dp数组存的是以每个数字为末尾数字的最长上升子序列,而不是

2021-01-06 20:19:16 135

原创 动态规划的引入2

动态规划的引入-挖地雷继续昨天的练习,今天又做了题单里的一些题,选了一道比较有意思的题作为本文内容。题目: 挖地雷题目内容:在一个地图上有NN个地窖(N \le 20)(N≤20),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径。当地窖及其连接的数据给出之后,某人可以从任一处开始挖地雷,然后可以沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使某人能挖到最多的地雷。输入格式:有若干行。第1行只有一个数字,表示地窖的个数N。第2行有N个数,

2021-01-05 18:21:59 111

超市商品管理系统-Java_超市商品管理系统

Java面向对象课程设计,界面简洁美观,数据采用文件格式化存储

2020-12-24

空空如也

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

TA关注的人

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