题目

洛谷传送门

题解

就是这道题搞我退役考场上写了n^2 64分,结果爆成8-12分。直接GG。

考场上想到正解的写法被自己否决了

题解传送门(看到这道送我退役的题目⑧太想写题解)

六行O(n2)O(n^2)O(n2)DP 888888分代码

  1. for(int i = 1; i <= n; ++i) a[i] += a[i-1];
  2. f[0] = d[0] = 0;
  3. for(int i = 1; i <= n; ++i)
  4. for(int j = i; j >= 1; --j) {
  5. if(a[i]-a[j-1]<d[j-1]) continue;
  6. d[i] = a[i]-a[j-1], f[i] = f[j-1] + d[i]*d[i];
  7. break;
  8. }
  9. printf("%lld\n", f[n]);

同样六行O(n)O(n)O(n)DP 100100100分代码

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. template<class T>inline void read(T &x) {
  4. char ch; while(!isdigit(ch=getchar()));
  5. for(x=ch-'0';isdigit(ch=getchar());x=x*10+ch-'0');
  6. }
  7. typedef long long LL;
  8. const int MAXN = 40000005;
  9. const int MOD = 1073741824;
  10. int n, ty, stk[50], indx;
  11. LL a[MAXN];
  12. int q[MAXN], pre[MAXN], s, t;
  13. int main () {
  14. read(n), read(ty);
  15. if(!ty) for(int i = 1; i <= n; ++i) read(a[i]);
  16. else {
  17. int x, y, z, m;
  18. read(x), read(y), read(z), read(a[1]), read(a[2]), read(m);
  19. for(int i = 3; i <= n; ++i) a[i] = (x*a[i-1] + y*a[i-2] + z) % MOD;
  20. for(int i = 1, p, l, r, j = 1; i <= m; ++i) {
  21. read(p), read(l), read(r);
  22. while(j <= p) a[j] = a[j] % (r-l+1) + l, ++j;
  23. }
  24. }
  25. for(int i = 1; i <= n; ++i) a[i] += a[i-1];
  26. q[s=t=0] = 0;
  27. for(int i = 1; i <= n; ++i) {
  28. while(s < t && a[q[s+1]]-a[pre[q[s+1]]]+a[q[s+1]] <= a[i]) ++s;
  29. pre[i] = q[s];
  30. while(s < t && a[q[t]]-a[pre[q[t]]]+a[q[t]] >= a[i]-a[pre[i]]+a[i]) --t;
  31. q[++t] = i;
  32. }
  33. __int128 ans = 0, tmp; int now = n;
  34. while(now) { tmp = a[now]-a[pre[now]]; ans += tmp*tmp; now = pre[now]; }
  35. while(ans) { stk[++indx] = ans%10; ans/=10; }
  36. while(indx) putchar('0'+stk[indx--]); puts("");
  37. }

水题送我退役。

粗鄙之语

CSP2019 D2T2 划分 (单调队列DP)的更多相关文章

  1. POJ 3017 单调队列dp

    Cut the Sequence Time Limit: 2000MS   Memory Limit: 131072K Total Submissions: 8764   Accepted: 2576 ...

  2. [TyvjP1313] [NOIP2010初赛]烽火传递(单调队列 + DP)

    传送门 就是个单调队列+DP嘛. ——代码 #include <cstdio> ; , t = , ans = ~( << ); int q[MAXN], a[MAXN], f ...

  3. zstu 4237 马里奥的求救——(单调队列DP)

    题目链接:http://oj.acm.zstu.edu.cn/JudgeOnline/problem.php?id=4237 这题可以转化为每次可以走g~d+x步,求最大分数,且最大分数的步数最少. ...

  4. 1304F2 - Animal Observation (hard version) 线段树or单调队列 +DP

    1304F2 - Animal Observation (hard version) 线段树or单调队列 +DP 题意 用摄像机观察动物,有两个摄像机,一个可以放在奇数天,一个可以放在偶数天.摄像机在 ...

  5. 【CSP-S 2019】【洛谷P5665】划分【单调队列dp】

    前言 \(csp\)时发现自己做过类似这道题的题目 : P4954 [USACO09Open] Tower of Hay 干草塔 然后回忆了差不多\(15min\)才想出来... 然后就敲了\(88p ...

  6. vijos P1243 生产产品(单调队列+DP)

      P1243生产产品   描述 在经过一段时间的经营后,dd_engi的OI商店不满足于从别的供货商那里购买产 品放上货架,而要开始自己生产产品了!产品的生产需要M个步骤,每一个步骤都可以在N台机器 ...

  7. POJ 1821 单调队列+dp

    题目大意:有K个工人,有n个墙,现在要给墙涂色.然后每个工人坐在Si上,他能刷的最大范围是Li,且必须是一个连续子区间,而且必须过Si,他刷完后能获得Pi钱 思路:定义dp[i][j]表示前i个人,涂 ...

  8. codeforces 1077F2. Pictures with Kittens (hard version)单调队列+dp

    被队友催着上(xun)分(lian),div3挑战一场蓝,大号给基佬紫了,结果从D开始他开始疯狂教我做人??表演如何AKdiv3???? 比赛场上:A 2 分钟,B题蜜汁乱计数,结果想得绕进去了20多 ...

  9. 【LOJ#10180】烽火传递 单调队列+dp

    题目大意:给定一个 N 个非负整数数组成的序列,每个点有一个贡献值,现选出其中若干数,使得每连续的 K 个数中至少有一个数被选,要求选出的数贡献值最小. 题解:设 \(dp[i]\) 表示考虑了序列前 ...

  10. BZOJ 5281--[Usaco2018 Open]Talent Show(分数规划&单调队列&DP)

    5281: [Usaco2018 Open]Talent Show Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 79  Solved: 58[Sub ...

随机推荐

  1. markdown ——flow流程图

    一个纯文本的语法怎么画图? 将流程图代码包含在```folw和`````之间即可 例子 st=>start: Start op=>operation: Your Operation sub ...

  2. C语言单链表简单实现(简单程序复杂化)

    PS: goto还是很好玩的. #include <stdio.h> #include <stdlib.h> typedef struct _node{ int value; ...

  3. Qt5 源代码自动跳转

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/nixiaoxianggong/articl ...

  4. Codeforces Round #569 Div. 1

    A:n-1次操作后最大值会被放到第一个,于是暴力模拟前n-1次,之后显然是循环的. #include<bits/stdc++.h> using namespace std; #define ...

  5. 1.ASP.NET Core介绍

    优点: 1.跨平台,高性能,开源,运行在.Net Core 或.Net Framework框架上(asp.net core 3.0及以后只支持.Net Core). 2.各平台上开发工具支持,能够开发 ...

  6. Socket HttpListen

    HttpListener sSocket = new HttpListener(); sSocket.Prefixes.Add("http://127.0.0.1:8080/"); ...

  7. PowerShell命令批量添加、导出AD用户

    导入单个AD用户命令 New-ADUser -Name "周八" -Surname "周" -GivenName "八"-SamAccoun ...

  8. MySQL事务和事务隔离级别

    1.概述 事务就是对数据库数据进行更改(包括insert.update.delete等)操作的一个执行单元,通常有一条或多条更改语句组成.在同一个事务中的更改操作要么同时成功,要么同时失败. 事务具有 ...

  9. 5_PHP数组_3_数组处理函数及其应用_1_快速创建数组的函数

    以下为学习孔祥盛主编的<PHP编程基础与实例教程>(第二版)所做的笔记. 一.快速创建数组的函数 1. range() 函数 程序: <?php $numbers = range(1 ...

  10. 【洛谷 P3346】 [ZJOI2015]诸神眷顾的幻想乡(后缀自动机)

    题目链接 广义sam+不同子串个数.. 找到所有入度为\(0\)的点开始\(dfs\),建出广义sam. 然后就是不同子串个数了 #include <cstdio> #include &l ...