https://codeforces.com/problemset/problem/1081/C 这道题是不会的,我只会考虑 $k=0$ 和 $k=1$ 的情况. $k=0$ 就是全部同色, $k=1$ 就是左边一个色右边一个色, $m(m-1)$ ,再选转折点有 $i-1$ 种 $C_{i-1}^{1} $( $i$ 个球. $i-1$ 个空挡都可以插). 到 $k=2$ 呢?可以是三种不同颜色,也可以是左右左,也就是 $m(m-1)(m-1)$ ,再选转折点有 $C_{i-1}^{2}$ .…
https://codeforces.com/problemset/problem/9/D 一开始居然还想直接找公式的,想了想还是放弃了.原来这种结构是要动态规划. 状态是知道怎么设了,$t_{nh}$ 表示节点数为n个,树高为h的BST的个数. 为什么要这么设状态呢?是考虑到题目关心BST的高度,而且BST具有递归性. 但是这个关键就是要加上n个节点的标记,因为不同节点数量明显可以构造出的高为h的树不同,而且也会影响BST另一侧的构造. 所以说设对状态就做对了一半. 思路就是按高为h的BST是…
题目链接:http://codeforces.com/problemset/problem/1108/D time limit per test 1 secondmemory limit per test 256 megabytesinput standard inputoutput standard output You have a garland consisting of n lamps. Each lamp is colored red, green or blue. The colo…
DP的学习计划,刷 https://codeforces.com/problemset?order=BY_RATING_ASC&tags=dp 遇到了这道题 https://codeforces.com/problemset/problem/702/A 以为是最长上升子序列(Longest Increasomg Subsequence)的模板题,发现自己不会做 记录一下大概的思路: \(O(n^2)\) 的算法: \(L[i]\) 选择 \(A[i]\) 为结尾的LIS的长度 \(P[i]\)…
https://codeforces.com/problemset/problem/474/D 这道题挺好的,思路是这样. 我们要找一个01串,其中0的段要被划分为若干个连续k的0. 我们设想一个长度为n的合法串是怎么被构造出来的,要么是上一个合法串后面直接连接1,要么是上一个合法串后面连接k个连续的0,那么每个0一一对应于一段连续的0. 所以dp[i]=dp[i-1]+dp[i-k]. 想出来就觉得不难了. #include<bits/stdc++.h> using namespace st…
http://codeforces.com/problemset/problem/909/C 好像以前做过,但是当时没做出来,看了题解也不太懂. 一开始以为只有上面的for有了循环体,这里的statement就可以随便放,但其实并不是这样,statement的位置会取消比它缩进更多或相等的for的可append性.所以设计dp顺序的时候要用dp[i][j]表示第i行剩余可选for循环数量为j的选法数.那么递推公式也不难(才怪),看看代码就好了. 有几个可以优化的,一个是滚动数组,另一个是线性求前…
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/qq574857122/article/details/36944227 题目链接:点击打开链接 给定n个气球 以下n行 x y t val 表示气球出现的坐标(x,y) 出现的时刻t.气球的价值val 枪每秒移动1个单位的距离 问: 射击的最大价值.開始时枪瞄准的位置随意. 思路: dp一下. . #include <cstdio> #include <cstring> #inclu…
https://codeforces.com/problemset/problem/1033/C 一开始觉得自己的答案会TLE,但是吸取徐州赛区的经验去莽了一发. 其实因为下面这个公式是 $O(nlogn)$ 的,不是 $O(n²)$ ,所以这样做是可行的.学到了新的知识. $$\sum\limits_{i=1}^{n}\lfloor\frac{n}{i}\rfloor$$ PS:学会LaTeX啦! #include<bits/stdc++.h> using namespace std; #d…
题目很好理解,问你的是在所给的图中周长最长的矩形是多长嗯用坐标(x1, y1, x2, y2)表示一个矩形,暴力图中所有矩形易得递推式:(x1, y1, x2, y2)为矩形的充要条件为: (x1, y1, x2, y2) 和 (x1, y1, x2, y2)为合法矩形,即全部为0 Point(x2, y2) 为 0 当然对X1 == X2这种特殊情况需要特殊判断一下. Source Code: //#pragma comment(linker, "/STACK:16777216")…
题目链接:http://codeforces.com/problemset/problem/455/A 给你n个数,要是其中取一个大小为x的数,那x+1和x-1都不能取了,问你最后取完最大的和是多少. 简单dp,dp[i]表示取i时zui最大和为多少,方程为dp[i] = max(dp[i - 1] , dp[i - 2] + cont[i]*i). #include <bits/stdc++.h> using namespace std; typedef __int64 LL; ; LL a…