P5241 序列 挺神仙的一题 看看除了dp好像没什么其他办法了 想着怎么构个具体的图出来,然鹅不太现实. 于是我们想办法用几个参数来表示dp数组 加了几条边肯定要的吧,于是加个参数$i$表示已加了$i$条边 这显然是不够的.于是我们又想:强连通分量.....连通块....... 于是加个$j$表示还有$j$个强连通分量 于是dp数组为$f[i][j]$ 这是我们发现一个问题,状态$f[i][j]$不一定是合法的. 那dp不就GG了吗 再次撕烤,我们发现每次加上的边无非就3种情况: 1.把2个强…
题目链接:http://codeforces.com/contest/712/problem/D A初始有一个分数a,B初始有一个分数b,有t轮比赛,每次比赛都可以取[-k, k]之间的数,问你最后A比B大的情况有多少种. dpA[i][j]表示第i轮获得j分的情况数.因为第i轮只和第i-1轮有关,所以这里i用滚动数组优化. 要是普通做法3个for就会超时,所以要用前缀和优化,dpA[i][j]可以由一段连续的dp[i - 1][x]转移过来,所以用sumA数组存取dp[i - 1][x]的前缀…
题目:https://loj.ac/problem/6089 对于 i <= √n ,设 f[i][j] 表示前 i 种,体积为 j 的方案数,那么 f[i][j] = ∑(1 <= k <= i ) f[i-1][j - k*i] 可以用前缀和优化,因为第 i 次只会用到间隔为 i 的和: 对于 i > √n ,最多选 √n 个,所以设 g[i][j] 表示用 i 个,体积为 j 的方案数: 每种方案如果排一个序,就是一个最小值为 √n + 1 的不降序列,所以算出不降序列的个数…
2431: [HAOI2009]逆序对数列 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 2312  Solved: 1330[Submit][Status][Discuss] Description 对于一个数列{ai},如果有i<j且ai>aj,那么我们称ai与aj为一对逆序对数.若对于任意一个由1~n自然数组成的 数列,可以很容易求出有多少个逆序对数.那么逆序对数为k的这样自然数数列到底有多少个? Input 第一行为两个整数n,k. Ou…
题目链接:https://cn.vjudge.net/problem/HDU-1024 题意 给n, m和一个序列,找m个不重叠子串,使这几个子串内元素和的和最大. n<=1e6 例:1 3 1 2 3 答:6 (唯一的子串1 2 3) 思路 先顺便记录一下动态规划的一般解题思路: 原问题->子问题->状态->转移->边界 再顺便记录一下最大值最小化这类问题套路解法: 二分 贪心 不能二分的问题,贪心八九不离十. 一般是AB和BA这两个元素的顺序,不影响前后变化时,直接算目标…
传送门 解题思路 要求这个人的排名,我们可以先求出某个人比他排名靠前的概率,然后再乘上\(m-1\)即为答案.求某个人比他排名靠前可以用\(dp\),设\(f[i][j]\)表示前\(i\)场比赛某人的得分为\(j\)的概率,那么转移方程为:\(f[i][j]=\sum\limits_{k=1,k!=x[i]}^(min(m,j)) f[i-1][j-k]\),发现这个复杂度是\(O(n^2*m^2)\)的,无法接受.进一步可以看出转移形式可以前缀和优化,只需要加上前缀和后把\(k=x[i]\)…
ABCDE 题目连接: http://acm.uestc.edu.cn/#/problem/show/1307 Description Binary-coded decimal (BCD) is a kind of binary encodings of decimal numbers where each decimal digit is represented by a fixed number of bits. Awesome Binary-Coded Decimal (ABCD) is,…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1044 前缀和优化. 但开成long long会T.(仔细一看不用开long long) #include<iostream> #include<cstdio> #include<cstring> #define ll long long using namespace std; ,M=; ; int n,m,a[N],pos[N]; ll dp[N],l,r,lm…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3398 好简单呀.而且是自己想出来的. dp[ i ]表示最后一个牡牛在 i 的方案数. 当前位置放牝牛,之前的dp[ k ]不变:当前位置放牡牛,出现了dp[ i ],值是距离大于k的dp[ j ]的和,所以可以前缀和优化. 当然有dp[0]啦. #include<iostream> #include<cstdio> #include<cstring> using…
LINK:小B的夏令营 这道题是以前从没见过的优化dp的方法 不过也在情理之中. 注意读题 千万不要像我这个sb一样 考完连题意都不知道是啥. 一个长方形 要求从上到下联通的概率. 容易发现 K天只是用来计算概率的 和 dp的状态无关. 我们可以逐行 dp. 容易设f[i][l][r]表示前i行 当前行l~r没有被摧毁的概率. 考虑在k天之后第i行 l~r没被摧毁的概率. l-1在这k天被摧毁了 那么因为有序 概率为\(C(k,l-1)p^{l-1}(1-p)^{k-l+1}\) 对于r的那边同…