![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法题目
弗兰克非线性
大学生
展开
-
hdu2544(最短路径/三种算法)
hdu2544"最短路"目录hdu2544"最短路"Dijkstra算法(多米诺骨牌模型)Bellman-Ford(警察问路模型)Floyd-Warshall(动态规划思想)Dijkstra算法(多米诺骨牌模型)复杂度:O(E*logV)AC代码:#include<iostream>#include<cstring>#include<cstdio>#include<cstdlib>#include<cmath>#include&原创 2021-02-23 19:24:44 · 279 阅读 · 0 评论 -
hdu1698(线段树/区间修改/求和)
hdu1698"Just a Hook"题意:有一个区间s [1,n],每一节si的初始价值为1。定义操作:x y val,将区间[x,y]中的每一个小节的价值改为val。问:经过Q次操作后总区间的价值是多少。1<=n<=1e50<=Q<=1e5算法/数据结构:线段树注意使用:long long scanf("%I64d")吐槽:3*10e5我觉得不需要长整型,但不知道为甚用int就是错!艹,搞这个点搞了一晚上。代码:#include<iostream&g原创 2021-02-21 22:32:55 · 270 阅读 · 0 评论 -
hdu1394(线段树求逆序数)
hdu1394(线段树求逆序数)题意给出一串数字a,可以进行如下操作:将该串数字第一个数字a0放到该串数字的最后位置,形成新的数字串,求操作过程中最小逆序数。思路1)求一串数字的逆序数:暴力法:对每一个数字x,判断x与x之前出现了多少个比x大的数字。复杂度为O(nn).利用线段树:因为数字串出现的数字只能在区间0~n,可以利用线段树对出现的数字进行统计。对每个x,查询区间 [x+1,n-1] 已经有多少个被计数的数字,它们的合计就是逆序数。2)用初始的逆序数推到移动第一个数到最后之后的逆序数原创 2021-02-21 19:10:28 · 203 阅读 · 0 评论 -
hdu4632:区间dp+容斥原理+记忆化搜索
hdu4632:区间dp+容斥原理+记忆化搜索题意:求给出字符串str中子序列(注:不是子字符串)是回文串的个数。思路:状态设计:dp[s][e]表示str[s]~str[e]区间的回文子序列个数初始化/递归结束条件:1)s>e:表示空串,dp[s][e]为零;2)s==e:单个字符构成一个回文串,返回1;状态转移:dp[s][e]的上一个状态是dp[s][e-1]或dp[s+1][e],将它们加起来,区间dp[s+1][e-1]中的回文子序列是被重复计数的,因此需要减去这个区间的d原创 2021-02-09 12:04:24 · 276 阅读 · 0 评论 -
hdu1401“Solitaire“
hdu1401"Solitaire"(双向广搜)题意有一个8X8的棋盘,上面有4个棋子,棋子可以上下左右移动。给定一个初始状态和一个目标状态,问能否在8步之内到达。注意点(我的错误)移动一步,棋子落到另一个棋子上是,才可以移动两步。(容易理解为即可以移动一步,也可以移动两步。)棋子不区分顺序,所以需要按一定规则排序后才可以确定一个状态。思路使用8维数组vis*标记,进行查重。有八个方向向量vex*。伪双向广搜:并不是真的从两个初始一起搜索,分别从目标状态、初始状态使用bfs搜索4步,原创 2021-02-04 19:02:53 · 288 阅读 · 0 评论 -
hdu2844“Coins“多重背包
hdu2844"Coins"多重背包一些感受(废话)看了一下,可以将多重背包转化为0/1背包,将某种多个的硬币,对每一个硬币,每一个dp状态都有选择/不选择的0/1方案,由于硬币数可能很多,网上有博主使用二进制优化方案。这种方案是我第一次接触。以后需要学习一下。链接:二进制优化,转化为0/1背包解决的方案我的思路一开始,我想要定义一个数组st[n][m],表示dp[m]状态硬币A[n]对应的数量,状态进行转移时,前状态必须有对应硬币剩余才可以进行转移(状态转移的硬币数量限制),但因为1<=n原创 2021-01-28 01:02:23 · 120 阅读 · 0 评论 -
hdu2159“FATE”完全背包
hdu2159“FATE”完全背包一、什么是完全背包有这样一个问题:在你面前放着n种宝石,每种宝石重量为wi,价值为vi,数量无限;你有一个最多可以放m重量的背包。现在你想在不超重的情况下,是你带走的宝石价值最大,问最大价值是多少?在这里,“完全”是指每一种宝石都有无数个,不是指背包能装多少物品(不是背包的属性)。dp用于保存背包的状态S(有某些必要的维度,如容量等)注意:在某一背包容量下的最大价值不一定是完全利用背包容量的!!!二、代码写了两个代码,注意区别:dp表示状态的方式不同。初始化原创 2021-01-26 01:36:36 · 260 阅读 · 0 评论