CSP 2019Day2T2 划分

这道题我当时在考场毫无思路。

先来看看部分分吧(标算咕咕咕

  • 36pts,n <= 400

看起来大概像一个O(n3)O(n_{}^{3})O(n3​)的DP,那设状态f[i][j]f[i][j]f[i][j]表示,处理完前iii位,最后一段为[j+1,i][j + 1,i][j+1,i]的最小代价。转移方程:
f[i][j]=min(f[i][j],f[j][k])(∑kja<=∑j+1ia)f[i][j] = min(f[i][j],f[j][k])(\sum_{k}^{j}a <= \sum_{j + 1}^{i}a) f[i][j]=min(f[i][j],f[j][k])(k∑j​a<=j+1∑i​a)
需要枚举i,j,ki,j,ki,j,k,判断一下合不合法。

#include <cstdio>
#include <algorithm>
#include <iostream>
#include <set>
#include <vector>
#include <cstring>
#include <cctype>
#include <map>
#define ll long long
#define rep(a,b,c) for(int a = b;a <= c;++a)
#define per(a,b,c) for(int a = b;a >= c;--a)
#define N 5010using namespace std;int n,t;
int a[N];
ll sum[N];
ll f[N][N];//当前位置,段的起点
int last[N];ll pf(ll x){return x * x;
}int main(){scanf("%d %d",&n,&t);rep(i,1,n)scanf("%d",a + i),sum[i] = sum[i - 1] + a[i];memset(f,0x3f3f3f3f3f,sizeof(f));f[0][0] = 0;rep(i,1,n)rep(j,1,i)rep(k,0,j - 1){//i当前位置,j~i这段,k~j - 1这段 if(sum[i] - sum[j - 1] >= sum[j - 1] - sum[k - 1]){f[i][j] = min(f[i][j],f[j - 1][k] + pf(sum[i] - sum[j - 1]));}}ll ans = 0x3f3f3f3f3f;rep(i,1,n)ans = min(ans,f[n][i]);printf("%lld\n",ans);return 0;
}
  • 64pts,n <= 5000

这就需要把DP复杂度做到O(n2)O(n_{}^{2})O(n2​),其实我们枚举kkk的过程是在找一个符合条件的最小值,我们完全可以记下来这个最小值kkk的位置,然后空间变为O(n)O(n)O(n),时间变为O(n2)O(n_{}^{2})O(n2​)。

#include <cstdio>
#include <algorithm>
#include <iostream>
#include <set>
#include <vector>
#include <cstring>
#include <cctype>
#include <map>
#define ll long long
#define rep(a,b,c) for(int a = b;a <= c;++a)
#define per(a,b,c) for(int a = b;a >= c;--a)
#define N 5010using namespace std;int n,t;
int a[N];
ll sum[N];
ll f[N];//当前位置,段的起点
int last[N];//当前为i,上一个位置为last[i]=j ,此区间j + 1 ~i ll pf(ll x){return x * x;
}int main(){scanf("%d %d",&n,&t);rep(i,1,n)scanf("%d",a + i),sum[i] = sum[i - 1] + a[i],f[i] = pf(sum[i]);//上一位置为0 rep(i,1,n)rep(j,1,i - 1){if(sum[i] - sum[j] >= sum[j] - sum[last[j]]){if(f[i] > f[j] + pf(sum[i] - sum[j])){f[i] = f[j] + pf(sum[i] - sum[j]);last[i] = j;}}  } printf("%lld\n",f[n]);return 0;
}

last数组的妙用。

CSP 2019Day2T2 划分部分题解相关推荐

  1. CCF CSP认证最新2022-12题解c++(全网首发)

    第一次写题解,代码没带注释,请谅解,尽力在题目分析中说明白. 现值计算 http://118.190.20.162/view.page?gpid=T160 问题描述 输入格式 输出格式 输出到标准输出 ...

  2. CCF CSP认证考试题解目录

    由于本人的书籍<算法详解(C++11 语言描述)>已经出版,为了降低题解的维护难度,有关CCF CSP考试的所有题解的更新将全部在书籍的配套仓库进行,CSDN博客中不再进行任何题解的更新. ...

  3. 谈一下两次CSP认证从180分到380分的感想

    最近联系我的小可爱们比较多,我用qq建了一个ccf csp考试交流群,群号673612216,如果感觉有用可以加一下哦~~ 欢迎访问我的CCF认证考试题解目录哦 https://blog.csdn.n ...

  4. 图论复习(各类习题)

    可以结合这篇博客进行复习:http://www.cnblogs.com/z360/p/7363034.html 一.强连通分量.缩点 习题: 洛谷--P2746 [USACO5.3]校园网Networ ...

  5. 力扣刷题记录-动态规划问题总结

    百度百科里对于动态规划问题是这样解释的: 在现实生活中,有一类活动的过程,由于它的特殊性,可将过程分成若干个互相联系的阶段,在它的每一阶段都需要作出决策,从而使整个过程达到最好的活动效果.因此各个阶段 ...

  6. cf #829 Div.2(A~D)

    Cf #829 Div.2 A. Technical Support 题意 给定一个以Q开头的只含有'Q'&'A'的字符串,每一个问题后面必须有回答 问给定的字符串是否符合要求 题解 贪心,Q ...

  7. CSP:CSP认证考试:202109-2(非零段划分)70分答案,Java版

    CSP:CSP认证考试:202109-2(非零段划分)70分答案,Java版 一.题目: 二.Java70分答案 import java.util.ArrayList; import java.uti ...

  8. CSP认证201509-2 日期计算[C++题解]:枚举、模拟

    题目分析 来源:acwing 分析: 主要是判断2月多少天.然后就是遍历每个月,依次减去当前月的天数,发现days还剩多少天就是当月几号. 其实这里是背的模板,日期题模板更难一点的题目是 CSP认证 ...

  9. AcWing1069.凸多边形的划分(区间DP)题解

    凸多边形的划分 题目传送门 题目描述 给定一个具有 N 个顶点的凸多边形,将顶点从 1 至 N 标号,每个顶点的权值都是一个正整数. 将这个凸多边形划分成 N−2 个互不相交的三角形,对于每个三角形, ...

最新文章

  1. 220V黄金光的LED灯带测试与结构
  2. spark sql and hive 3g数据测试
  3. python 简单web音频_Python Twisted web服务器音频fi
  4. Android导航栏ActionBar的具体分析
  5. 谈Flash中的鼠标响应
  6. 问题六十六:怎么用ray tracing画CSG(Constructive Solid Geometry 构造实体几何)图形
  7. Python笔记1——Python概述
  8. 从sockaddr_ipx到AF_IPX协议分析(一)
  9. mysql 备份数据库
  10. c语言去尾法和进一法的例子,进一法或去尾法在生活中的应用教学案例.doc
  11. 400家门店直接“云”上办公 JASONWOOD 是如何做到的?
  12. B站傅希鸣-ElasticSearch学习笔记(ES 入门)
  13. Pycharm下载库出错ERROR: Could not find a version that satisfies the requirement
  14. spring使用ExcludeFilter和IncludeFilter
  15. Pygame实战之外星人入侵NO.11——设置开始按钮
  16. 计算机图片数据传输图,电脑对电脑或手机传送文件图片的工具
  17. 旋转木马图片切换展示js特效
  18. Discuz!修改注册用户名长度限制的方法
  19. Triton针对工业系统的形势分析以及检测手段 || 后附今日情报资源
  20. 【STM32】驱动LCD1602液晶8线并、4线并

热门文章

  1. 中国网民人数2.98亿 1.62亿人在写博客
  2. broadcastreceiver全面详解
  3. 利用docker部署TF深度学习模型(附件文件较大,并无上传。部署参考步骤即可)
  4. k8s client-go 程序实现kubernetes Controller Operator 使用CRD 学习总结
  5. c 连接 mysql 创建数据库_c sqlite创建数据库连接
  6. 强智科技教务处模拟登录
  7. MySQL 库表 employees, departments, locations, countries 测试数据
  8. 亚马逊云科技2022年6月新服务新功能回顾
  9. 20190111 | 期末笔记博文汇总 1
  10. Patrol Read vs Consistency Check