自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一个人的旅行(最短路算法Dijkstra) 多起点多重点问题-解决方法很妙 HDU--2006

题目链接这题是个标准的求最短路径的题目,不过并不是单一起点单一终点,我的解决方法就是再多加一个虚拟起点,将这个虚拟起点与各个起点的距离为0,然后再加一个虚拟终点,将这个虚拟终点到各个终点的距离设置为0,然后求虚拟起点到虚拟终点的最短路径就可以了,这样的处理就转换为单起点单终点的处理,就和畅通工程续问题一样了。写代码的时候要注意细节,否则很容易掉进循环出不来,注意这个站点是从0开始还是从1开始,注意站点数目的上限值,注意vis的更新,inf的定义,都非常重要,注意初始化imap初始化应该是lnf,di

2021-02-04 16:36:55 592

原创 畅通工程续(最短路算法Dijkstra) HDU--1874

这是一个最短路算法,并且单一起点单一终点,哈哈可以说是很模板的一个题了,用到的算法就是Dijkstra算法,这也是我最近在学校上数据结构课学到的算法,当时还不会实现,现在知道怎么实现了。这个算法的精华部分就是for(int i=0;i<n;i++) { if(imap[s][i]!=lnf) dis[i]=min(dis[i],dis[s]+imap[s][i]); if(vis[i]&&dis[i]<imin)//注意这里vis的判断一定要..

2021-02-04 16:27:17 182

原创 P1005(01背包问题)--C语言网1272

一开始以为这是一个贪心算法问题,后来贪心算法过不了才用动态规划做,这是背包问题里面的01背包问题,出题人很狡猾。题目不难,但是我很无语,这要是OI赛制咋办…当前物体对于第i个物品j个单位时间内有要和不要两种情况,此时的最大价值就是dp[i][j],如果时间j大于采取它的时间v,则动态转移方程是dp[i][j]=max(dp[i-1][j],dp[i-1][j-v]+w),否则就不能采取,dp[i][j]=dp[i-1][j]#include<bits/stdc++.h>using nam.

2021-02-03 17:14:31 123

原创 丑数(动态规划) HDU

丑数,从1开始,各个丑数之间都是2、3、5、7的倍数关系,所以每个丑数其实都是前面某一个丑数2或3或5或7倍,我们求第n个丑数,那么就要保证不重复,并且是按照升序存储的。求第n个丑数,可以假设dui[n]=2a1×3a2×5a3×7a4每个丑数乘以2或3或5或7都会是丑数,所以我们用n1标记乘已经因为乘2而产生丑数的丑数下标,n2、n3、n4同理。min(dui[n1]*2,min(dui[n2]*3,min(dui[n3]*5,dui[n4]*7)))为动态转移方程,注意要取最小值。#inclu..

2021-02-03 15:49:15 332

原创 搬寝室(动态规划) HDU-1421

题目链接一共n个物品,搬运k趟,一趟搬两个物品,疲劳度为两个物品重量之差的平方,求最小疲劳度,读到这里我们就知道这两个手上提的物品重量差越小越好,这个题看似贪心,实际动态规划,比如序列1 4 5 9,如果搬两趟,那肯定时先搬45再搬19,就不是最优解了,我们使用dp[i][j]存储最优解,代表第i趟对前j个物体进行选择,i也代表选择第i对。转移方程就是dp[i][j]=min(dp[i][j-1],dp[i-1][j-2]+(w[j]-w[j-1])*(w[j]-w[j-1])#include&lt

2021-02-03 15:08:24 736 1

原创 免费馅饼(动态规划 DP入门) HDU-1176

题目链接这个题实质上就是一个数塔问题,如果能看出来这是一个数塔问题,那么问题就好解决多了。数塔问题第0秒gameboy在坐标5处,所以第一秒他去坐标4还是坐标5还是坐标6取决于在这三个坐标能获得的最大馅饼数字,而那么第二秒坐标4去坐标3还是坐标4还是坐标5取决于在这三个左边能获得的最大馅饼数字,每一秒的每个坐标都是同理,所以这个题就像数塔问题一样。对于每一秒每一个坐标的下落馅饼数我们用一个二维数组存储,横坐标是秒数,纵坐标是坐标数,然后我们从下落馅饼的倒数第二秒来进行更新(因为下落馅饼最后一秒能得到

2021-02-03 13:52:45 196

原创 数塔(DP入门) HDU-2084

题目链接这是一个基础的DP问题,我们要想知道第一个结点往下走的时候是往左走还是往右走,就要判断是从左结点走经过的结点数字总数较大还是往右结点走经过的结点数字总数较大,而对于左结点,是往左结点走经过的结点数字总数较大还是往右结点走经过的结点数字总数较大,对于左结点的左结点…你懂的,这个时候就开始循环了。就这样一直循环到倒数第二层,对于这个结点,是往左节点走好还是往右节点走好,那好办啊,直接比较这个结点的左孩子大还是又孩子大不就结了,把大的孩子数字直接加到这个节点上就得到经过这个结点的最大结点数字总数了

2021-02-03 12:38:09 194

空空如也

空空如也

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

TA关注的人

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