基础dp&&矩阵快速幂
文章平均质量分 80
基础dp和矩阵快速幂优化dp等技巧
hans774882968
这个作者很懒,什么都没留下…
展开
-
手把手教你从零实现单纯形法的大M法,附若干线性规划模型应用题题解
我大二下第一次看《运筹学基础及应用(第六版)》学解线性规划问题的单纯形法的人工变量法时,看到了这句话:“用大M法处理人工变量,用手工计算求解时不会遇到麻烦。但用电子计算机求解时,对M就只能在计算机内输入一个机器最大字长的数字。”我实在不能苟同,因为只要写一个表示大M的结构体,然后模拟手工计算的过程,就不会有这个问题。于是我写了这个项目。单纯形法是求解一般线性规划问题的迭代算法。其基本思想是从一个初始的基可行解出发,通过迭代逐步逼近最优解。原创 2024-07-13 23:20:03 · 511 阅读 · 0 评论 -
【入门dp】力扣鸡蛋掉落问题和转账问题的关系初探
我昨晚偶然编出了一道水题,名为转账问题:已知银行卡里有不超过`n`元,你想把卡里所有钱提到某信支付,但你无法看到卡里的钱,你只能执行若干次转账`i`元的操作,每次看到转账成功与失败的提示。问至少需要操作多少次。`n`和`i`是自然数。形式化描述:你的策略`y`是一段代码,初始输入为`n`,代码对于实际的`i = 1~n`元各有一个需要的猜测次数`x[i]`,则`y = max(x[i] for i in range(1, n + 1))`,所求为`min(y for y in y_set)`。原创 2023-07-16 12:52:47 · 278 阅读 · 0 评论 -
【简单算法】2022SCUACM集训队冬季选拔全题解
没想到现在冬季选拔都这么难了……题目传送门本文juejin:https://juejin.cn/post/7222531019319722039/作者:hans774882968以及hans774882968以及hans774882968参考:https://www.cnblogs.com/ycx-akioi/p/AtCoder-abc165.html最长严格上升子序列树上版本。经典问题有两种做法:树状数组、维护数组+二分查找。但把问题搬到树上后,我们遇到一个问题:在回溯的时候,需要对数据结构进行撤销操作。原创 2023-04-16 17:11:26 · 783 阅读 · 0 评论 -
【算法】神奇宝贝打BOSS简化模型初步研究:概率dp和期望dp
## 引言 今天心血来潮,想起了一道之前没有解决的算法题,~~但我已经近一年没碰过算法了~~。 ## 基础问题 BOSS有`x`滴血,我一局打BOSS掉`y`滴血,BOSS有`p`的概率回`z`滴血,有`1-p`的概率攻击我。我平均需要几局能打败BOSS?假设:(1)我血量无限。(2)血量不能超过血量上限。(3)我先手,且打赢BOSS那局应该算1局而非0.5局。(3)`y原创 2023-03-30 02:14:53 · 471 阅读 · 1 评论 -
AtCoder abc256全题解(区间合并模板、矩阵快速幂优化dp、线段树……)
作者:hans774882968以及hans774882968水,略。模拟即可。C-枚举题意:有一个九宫格,每格填一个正整数,输入分别表示期望的每行和每列的数字的和。求方案数。只需要枚举4个格子就能确定所有的数了,计算量完全可行。我选择的是这4个格子。D-区间合并模板区间合并模板,参考:https://blog.nowcoder.net/n/834a656e47df44e58e830fdd87d3e253。E-图论建模,函数图的性质题意个人排队拿糖果。输入长为的两个数组,表示如果号人排在号人后原创 2022-06-22 02:57:34 · 679 阅读 · 0 评论 -
第45届ICPC沈阳站部分题解(D、F、G、H、I、J、K)
本文CSDN本文juejin作者:hans774882968以及hans774882968题意:直接看题干,易懂。去年比赛的时候觉得这是个规律题,发现可以用小的答案生成大的答案,写了2小时以上,200多行代码,却wa了。因此不想再尝试这种令人伤悲的做法。dfs做法:首先,统计区间内1的个数,很容易联想到前缀和。因为只要求和奇偶性不同,所以前缀和可以改成前缀异或,。设前缀异或数组有个0(则有个1),试求下标对个数表达式。只考虑枚举左或右端点很难得到式子,因此考虑一个点既可以当左也可以当右。对于,只能作....原创 2022-06-16 18:23:19 · 2030 阅读 · 0 评论 -
Codeforces Round #799(Div. 4,CF1692)全题解
第一次AK CF纪念,虽然只是个div4。以前也有div3差点AK的经历,现在div3难度上来了,这种机会永远不会再有了吧……为什么水题写得尤其慢?因为中途洗了个澡。作者:hans774882968以及hans774882968签到。设是集合大小。为偶数,则答案恰好为,否则需要多删一个元素,答案。C题意:8*8棋盘,给出bishop的攻击范围,找bishop的位置。水。当前点和对角线4个邻居都是的点就是。D题意:给出当前时刻(用表示,如)和,表示从当前时刻开始,每分钟看一次闹钟,注意该过程是永久的。原创 2022-06-15 14:48:31 · 679 阅读 · 0 评论 -
Educational Codeforces Round 107 (Rated for Div. 2,CF1511)A~E题解
CSDN传送门juejin传送门作者:hans774882968以及hans774882968题意:有三种类型的客人,他们依次到来,一种反对者,一种支持者,还有一种观望者,即根据当前情况,如果反对数 > 支持数,就投反对,反之投支持的人。现在你有两台服务器,你可以选择给当前来到的客人展示其中一台服务器,问你最多可以获得多少票支持。有两台服务器,所以把所有dislike都集中到一台服务器即可(提纯是吧🤬)。B题意:给三个数,让你找到两个数和,使得,,这三个数的位数分别是,,。最简单的方法是,令和都有个0.原创 2022-06-13 02:34:46 · 164 阅读 · 0 评论 -
【区间dp】lc730及其扩展问题题解
传送门lc730题解又💧一篇作者:hans774882968以及hans774882968原问题要求去重,增加了分析的难度。若去掉该要求,则可以直接基于容斥原理来得到转移方程。仍然采用定义:为中的回文子序列个数。仍然分和不相等来讨论。...原创 2022-06-12 17:07:05 · 74 阅读 · 0 评论 -
SCUACM22暑假集训前劝退赛部分题解
作者:hans774882968以及hans774882968本文juejin传送门简单几何题,用三角函数知识很容易推(对于考上SCU的同学)。B一看就是博弈dp。先打个表发现每一行至多一个false,但没有发现其他规律。因此有一种做法是跑上面那段被注释的代码,把每一行的false的点(可能不存在)给找出来。但是要等很久,算了。正解是:既然为false的点不超过5000,那么就直接用刷表法。根据博弈dp常识,值为true的点推不出任何点,值为false的点可以推出一系列值为true的点。根据调和级数,原创 2022-06-06 00:23:44 · 126 阅读 · 0 评论 -
浙江工业大学之江学院程序设计期末全题解(dp、组合数学
传送门比四川大学c语言期末难多了,所以四川大学 <<<<<< 之江学院很多是牛客跨年场的原题,难度也不大。这套题除了G,我都是在火车上用手机写的,所以用的python。A因为跨年时间已经过了,所以是签到。后来才知道是牛客跨年场的题,具体应该去看看乱搞做法。B既然q数列对应配平且最简的化学方程式,那么n是偶数且i = n/2。于是答案就显而易见了。ra = lambda: list(map(int,input().split()))T = int(input原创 2022-01-07 00:10:33 · 839 阅读 · 0 评论 -
CF2B——分离的思想+dp,特判有0的情况
首先注意,两个一起考虑的乱搞做法(dp转移中带有复杂的贪心原则)往往是错的,但是我自己很难搞懂为什么错。分离的思想在数学中常常体现,因此在题目里要优先考虑答案能否由分离的思想导出,若做不到再考虑上面复杂的贪心原则(即放弃治疗)。这里的分离就是说,我们单独考虑优化2,不管5;以及单独考虑优化5,不管2。设单独优化2的答案为v1,单独优化5的答案为v2。如果v1 <= v2,就选单独优化2的做法;否则选单独优化5的。以v1 <= v2为例(另一种同理),5的其他路径都是大于等于v2的,包括单独优原创 2021-12-31 18:12:27 · 1946 阅读 · 0 评论 -
四川大学2021SCUACM新生赛决赛大部分题解(差分、dp、线段树……)
传送门这套题至少要过8题才能算是有脑这种器官,过9题才是正常人。很可惜我没有脑~B这题我比赛后学会的,还没补代码。首先考虑对查询按x升序排序。我们的主要思想是填平之前求出的结果与当前问题的差距。这里”差距“指的是一个数据结构,它就是一个数组b[],处理到当前查询的时候,b[i]表示max(a[i~前一个询问的x])。如何填平差距?设第一个a值大于i的点为L[i],设当前查询的参数为curL,curR,curX。则[L[i]+1~i]的max(a[i~curX])都是a[i],而[1~L[i]]的m原创 2021-12-13 01:32:37 · 1555 阅读 · 4 评论 -
牛客2021年七夕节比赛大部分题解(因数枚举模板、线段树、dp……)
传送门偶然刷到了,就做了一下。F是防AK,不会,ACDE水,略。比较有参考价值的是I题,dp。B一开始想的是状压枚举素数集合,但是各素因子的幂不一定要统一。于是改成了直接dfs枚举所有素数的所有幂次,并逐一判定。写完了一发AC了以后才发现,枚举所有素数的所有幂次也就是枚举所有因数,23333我是sb。不过这个枚举方法肯定比根号枚举要快一点。#include <bits/stdc++.h>using namespace std;typedef long long LL;#defi原创 2021-12-12 23:40:47 · 567 阅读 · 0 评论 -
建信金融科技力扣专场竞赛D——矩阵快速幂优化dp+卡常
传送门又是被力扣虐爆的一天,绝绝子显然按列的升序排序,然后分段地对a[i]和a[i+1]进行答案计算,乘到ans上即可。但dp要转移1e9次。于是比赛时我sb了,觉得这题dp做不了,往组合数学方面建模了,最后没有写出来。因为dp只涉及dp[i-1]和dp[i],并且注意到数据范围row <= 20,所以是可以矩阵快速幂优化的。初始向量:Mat t(row,1);t.m[a[i][1]][0] = 1;注:这里我们为了方便排序,把行和列交换了一下,a[i][1]表示点i的行编号。转移矩阵原创 2021-10-29 22:43:07 · 191 阅读 · 0 评论 -
acwing4002——数学性质+dp
传送门首先可以猜测复杂度n^2*m以及猜测做法是dp,但这并没有卵用。最直观的想法自然是dp[i][v1][v2],这一次同时决策出a[i]=v1,b[i]=v2。但直接转移复杂度是n^4*m,因为我们拿这个看上去像卷积形式的转移方程没啥办法。如果把第3维用前缀和优化一下,复杂度是n^3*m,仍然没法过。所以我们需要先分析一下性质。a数组单增,b数组单减,a[i] <= b[i],于是有a[j] <= a[i] <= b[i] <= b[j],1 <= j <= i原创 2021-10-23 22:41:17 · 77 阅读 · 0 评论 -
lc1977-好题赏析:lcp(最长公共前缀)优化dp
这题的dp想法是容易得到的:定义dp[i][j]为数字串s[1~i]且最后一个数字为j位的方案数。那么dp[i-j][k],1 <= k < j,都是要加到dp[i][j]上的。而dp[i-j][j]只有在s[i-2*j+1~i-j]所表示的数字≤s[i-j+1~i]所表示的数字时,才加到dp[i][j]上。而dp[i-j][k],k>j总是没有贡献,因为:非前导0的情况,数字位数更大有前导0的情况是非法的综上,不妨把dp定义为前缀和,即dp[i][j]为数字串s[1~i]且最原创 2021-10-20 12:36:11 · 290 阅读 · 0 评论