次元传送门:洛谷P2679 思路 蒟蒻一开始并没有思路而去看了题解 我们发现对于两个字串的位置 我们只需要管他们匹配成功或者匹配失败即可 f[i][j][k] 记录当前 a[i]不论等不等于b[j] 我们可以选用也可以不选用 使用k个子串方案数(因为题目没有要求一定位置相同) r[i][j][k] 记录当前 a[i]==b[j] 并且我们选用a[i]和b[j] 方案数 使用k个子串方案数 状态转移方程: if(A[i]==B[j]) r[i][j][k]=(f[i-][j-][k-]+r[i-]…
题目链接:P1006 传纸条 PS:伤心,又想不出来,看了大神的题解 AC代码: #include<bits/stdc++.h> #define ll long long using namespace std; ll n,m,f[][],a[][]; int main() { ll i,j,k; cin>>n>>m; ;i<=n;++i) ;j<=m;++j) cin>>a[i][j]; f[][]=a[][]+a[][];//不管怎样都会经过…
## 题目描述: 给你一个长为 $N$ $(N<=10^5)$ 的字符串,求不同的子串的个数我们定义两个子串不同,当且仅当有这两个子串长度不一样 或者长度一样且有任意一位不一样.子串的定义:原字符串中连续的一段字符组成的字符串 很妙的一道题,考察了对 $Height$ 数组的理解. $1.$首先,不难发现任意子串都可以被字符串中后缀串的前缀表达出来 $2.$我们知道, $Height[i]$ 被定义为排名为 $i$ 的后缀串与排名为 $i-1$ 的后缀串的 $LCP$. 而与排名为 $i$ 得后…
HDU 1024 题目大意:给定m和n以及n个数,求n个数的m个连续子系列的最大值,要求子序列不想交. 解题思路:<1>动态规划,定义状态dp[i][j]表示序列前j个数的i段子序列的值,其中第i个子序列包括a[j], 则max(dp[m][k]),m<=k<=n 即为所求的结果 <2>初始状态: dp[i][0] = 0, dp[0][j] = 0; <3>状态转移: 决策:a[j]自己成为一个子段,还是接在前面一个子段的后面 方程: a[j]直接接在前面…
题意:农夫约翰想修一条尽量平缓的路,路的每一段海拔是A[i],修理后是B[i],花费|A[i] – B[i]|,求最小花费.(数据有问题,代码只是单调递增的情况) #include <stdio.h> #include <algorithm> #include <cstring> #include <cstdlib> #include <cmath> #include <memory> #include <iostream>…
题目链接:HDU 5119 Problem Description Matt has N friends. They are playing a game together. Each of Matt's friends has a magic number. In the game, Matt selects some (could be zero) of his friends. If the xor (exclusive-or) sum of the selected friends'ma…
题目大意: 输入n,s:n头牛 s个栅栏 输入n头牛的初始位置 改变他们的位置,满足 1.第一头与最后一头的距离尽量大 2.相邻两头牛之间的距离尽量满足 d=(s-1)/(n-1),偏差不超过1 3.移动的总步数尽量小 https://blog.csdn.net/BlackJack_/article/details/73527208 首先因需要尽量满足d 1.若整除则全部为d即可 2.若不整除则说明存在偏差,则有些距离 d 有些距离 d+1 即可 除了第一头牛移到1 最后一头牛移到s之外 其余第…
正解:dp 解题报告: 感觉是道dp好题啊,所以就写了个题解 代码实现难度低,思维难度大,像我这种思维僵化傻逼选手只想到了爆搜+组合数学... 其实是道很妙的dp题!好趴也没有多妙主要大概是妙在想到了dp?具体实现很普通的 然后代码没什么要解释的鸭,真的不难,主要觉得题目出得还是挺好的趴,像我这种傻逼根本想不到是dp的鸭...然后实在是想放上来就放上来了 具体实现随便说点儿趴 就f[i][j][k]:A串扫到i B串扫到j 有k个空格 然后这里会发现有俩问题 1)因为f存的是个和我并不知道有多少…
题面 看到求方案数,还要对 \(1000000007\ (1e9+7)\) 取模,一般这样的问题都要考虑 动态规划. 我们设 \(dp_{i,j,k,0/1}\) 表示 \(A_{1\dots i}\) 中选取 \(k\) 个子串,与 \(B_{1\dots j}\) 匹配,且 \(A_{i}\) 选 / 不选的方案数. 分情况讨论转移: 若 \(A_i = B_j\), \(dp_{i,j,k,0} = dp_{i-1,j,k,0}+dp_{i-1,j,k,1}\). 不选 \(A_i\) 就…
传送门 为什么前几年的noipnoipnoip总是出这种送分题啊? 这个直接线性dpdpdp不就完了吗? f[i][j][k][0/1]f[i][j][k][0/1]f[i][j][k][0/1]表示当前在第iii个位置,已经匹配到了第jjj个位置,已经使用了kkk段,当前这个字符没用用/用了. 然后分情况简单转移一下就行了. 注意可以滚动数组优化空间. 代码: #include<bits/stdc++.h> using namespace std; const int mod=1e9+7,N…