![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
前缀和与差分
van之风
这个作者很懒,什么都没留下…
展开
-
P5638 【CSGRound2】光骓者的荣耀
抽丝剥茧,仔细读题,其实就是考察 一个数列中,连续K个数,找出期中最大的连续K个数的和sum,然后用数列总的和减去sum 就是这道题的答案了~当然别忘了 :一定要开long long int ,ai的取值范围<=10^12 n<=106,这个数列最大的和是1018long long 的数据范大约是 1018+,所以可以容纳1018下面是AC code~#include <iostream>#include <cstring>using namespac...原创 2020-08-28 17:55:12 · 288 阅读 · 0 评论 -
P2004 领地选择
思路:二维数组的前缀和,用这个做很快的~#include <iostream>#include <cstring>using namespace std;typedef long long int ll;#define Max 1001ll a[Max][Max];ll matrix[Max][Max];ll sum[Max][Max];ll M=-999999; int main() { ll n,m,L; l..原创 2020-08-28 16:33:39 · 265 阅读 · 0 评论 -
P1719 最大加权矩形
这道题用暴力就是前缀和,四层for循环,我们这里用另外一种压缩矩阵的方法做.~emmm思路就不写了,有疑问看看dalao的博客#include <iostream>#include <cstring>using namespace std;#define Max 130int a[Max][Max];int b[Max];int dp[Max];int M=-9999; int main() { int n; ci..原创 2020-08-28 13:20:30 · 358 阅读 · 0 评论 -
P3397 地毯
这道题暴力其实也可以过,但是最好不要暴力了,能过都是运气而已,正经做法用差分。二维差分来做,不知道的差分的去康康其他dalao的博客~#include <iostream>#include <cstring>using namespace std;#define Max 1005int a[Max][Max];int c[Max][Max]; int main() { memset(a,0, sizeof(a)); m...原创 2020-08-26 10:55:54 · 159 阅读 · 0 评论 -
P1115 最大子段和
这是一道很好的动态规划的入门题,用暴力当然也能解决,但是肯定会超时,如果是填空题用暴力和动归差不多…用暴力的时间复杂度是o(n^2) n的数据达到10 ^ 5是受不了的,但是用动态规划的时间复杂度是o(n ) .主要讲解动态规划如何做:设置一个状态 dp[i] 表示以i为下标结尾的最长子段和(数组下标从1开始).我们用用例来举例子;72 -4 3 -1 2 -4 3dp[1]=2 a[1]dp[2]= -2 a[1]+a[2]dp[3]=3 a[3]dp[4]=.原创 2020-08-25 11:56:45 · 202 阅读 · 0 评论