题目

题目链接

测试得分:  60

主要算法 :  动态规划,高精动规,区间动规

题干:

    区间动规板子

应试策略:

  将所有的字符转化为数字形式存储在a[i][j]中,a[i][j]表示的是从i到j的数字形式,f[i][j]表达的是在前j个数中,划分为i+1部分的乘积,先将f[0][i]初始状态划分a[1][i]

  先枚举划分的部分,再进行判断区间的末端,进而再确定划分的位置,进行状态方程转移f[i][j]=max(f[i][j],f[i-1][l]*a[l+1][j]);

  

   代码

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#define LL long long
#define FORa(i,s,e) for(int i=s;i<=e;i++)
#define FORs(i,s,e) for(int i=s;i>=e;i--)
#define gc pa==pb&&(pb=(pa=buf)+fread(buf,1,100000,stdin),pa==pb)?EOF:*pa++
#define File(name) freopen(name".in","r",stdin);freopen(name".out","w",stdout);using namespace std;
static char buf[100000],*pa=buf,*pb=buf;
inline int read();const int K=6,N=40;
string s;
LL k,n,f[K+1][N+1],a[N+1][N+1];//a[i][j]将i-j字符转换为数字形式,f[i][j]代表在前j个数中划分i+1部分的最大乘积
int main()
{scanf("%d%d",&n,&k);cin>>s;FORa(i,1,n) FORa(j,i,n) a[i][j]=a[i][j-1]*10+s[j-1]-'0';//处理成数字形式 FORa(i,1,n) f[0][i]=a[1][i];FORa(i,1,k)FORa(j,1,n)FORa(l,i-1,j-1)//注意最小值为k-1,而不是i,自己思考一下为什么这样 f[i][j]=max(f[i][j],f[i-1][l]*a[l+1][j]);printf("%lld",f[k][n]);return 0;
}
inline int read()
{register int x(0);register int f(1);register c(gc);while(c<'0'||c>'9') f=c=='-'?-1:1,c=gc;while(c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=gc;return  x*f;
}

总结:

  注意边界,判断数据的大小(此处需打高精)

转载于:https://www.cnblogs.com/SeanOcean/p/11209943.html

Luogu-P1018 乘积最大相关推荐

  1. P1018 乘积最大

    https://www.luogu.org/problem/show?pid=1018#sub 其实这个数据范围貌似搜索是过不了的,但是在lg上过了 这里搜索的方法是,dfs(int x,LL ans ...

  2. 洛谷 P1018乘积最大

    题目描述 今年是国际数学联盟确定的"20002000――世界数学年",又恰逢我国著名数学家华罗庚先生诞辰9090周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的 ...

  3. 洛谷P1018乘积最大题解--zhengjun

    题目描述 今年是国际数学联盟确定的" 200020002000――世界数学年",又恰逢我国著名数学家华罗庚先生诞辰909090周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的 ...

  4. 【luogu1018】 乘积最大 [区间dp+高精][noip2000]

    P1018 乘积最大 设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大. DP+高精 #include<bits/stdc++ ...

  5. 【动态规划】P1018 线性dp:乘积最大

    代码: 这题需要高精度,只能通过20分 #include<iostream> #include<string> using namespace std; int dp[41][ ...

  6. [CF/AT/Luogu]各大网站网赛 爆肝部部长工作报告文件Ⅱ

    文章目录 CodeForces LATOKEN-Round-1(Div.1+Div.2) A. Colour the Flag B. Histogram Ugliness C. Little Alaw ...

  7. P5540-[BalkanOI2011]timeismoney|最小乘积生成树【最小生成树,凸壳】

    正题 题目链接:https://www.luogu.com.cn/problem/P5540 题目大意 给出nnn个点mmm条边边权是一个二元组(ai,bi)(a_i,b_i)(ai​,bi​),求出 ...

  8. BZOJ3209(luogu 4317)花神的数论题题解

    题目 设 sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数 N ,花神要问你 派(Sum(i)),也就是 sum(1)-sum(N) 的乘积(n<=1e15). 分析 好吧,一 ...

  9. 【luogu P6657】【模板】LGV 引理(行列式)(数学)(线性代数)

    [模板]LGV 引理 题目链接:luogu P6657 题目大意 给你一个二维图,然后分别有 m 个棋子,分别要从 (ai,1) 走到 (bi,n),只能从 (x,y) 走到 (x+1,y) 和 (x ...

  10. 【luogu CF643F】Bears and Juice(结论题)

    Bears and Juice 题目链接:luogu CF643F 题目大意 有 n 个熊 p 张床,有一些酒桶,数量你定,其中有一个放酒其它放果汁,然后每天每个熊可以选一个酒桶集合(可以为空),如果 ...

最新文章

  1. 二叉树初始化_Java实现二叉树
  2. 计算机网络的OSI七层模型
  3. python怎么绘制渐变图_用Python画colorbar渐变图+修改刻度大小+修改渐变颜色
  4. winrar 去广告_解压缩工具之WinRAR下载安装教程
  5. C#中Delegate和Event以及它们的区别
  6. js 数组合并并且去重
  7. python爬虫:用scrapy框架爬取链家网房价信息并存入mongodb
  8. 绿联USB2.0 USB外接网卡驱动
  9. jvm讲解-jvm内存结构详解
  10. 日语学习网站分类汇总
  11. 输入某年某月某日,判断这一天是星期几
  12. mysql提权方式linux_Linux提权的几种常用方式
  13. android相机采集sdk,C#用basler相机sdk采集图像并用halcon显示的小程序
  14. Scratch编程 烧脑算法——换位密码
  15. 题目 1039: 宏定义之闰年判断
  16. 12、Pytest之@pytest.mark.自定义标签使用
  17. 绘制系统响应函数的频率响应曲线
  18. 2021年美容师(初级)考试及美容师(初级)考试资料
  19. Vue3学习笔记:了解并使用Pinia状态管理
  20. Etherscan以太坊浏览器中Input Data解析方法

热门文章

  1. 云服务器 文件服务,云服务 做文件服务器
  2. python全局变量怎么删除_python 全局变量怎么改
  3. java+2e10_CoreJavaE10V1P3.10 第3章 Java的基本编程结构-3.10 数组(Arrays)
  4. 计算机操作基本知识公务员,公务员计算机类操作系统知识.pdf
  5. cuda event
  6. Pandas Index 更新和计算(Modifyingcomputations)
  7. es集群节点数和分片数关系_ES数据插入和查询流程是怎么样的?
  8. 泰语7个元音变形_泰语发音规则
  9. ZooKeeper学习总结(3)——ZooKeeper常见面试题
  10. App后台开发运维和架构实践学习总结(2)——RESTful API设计技巧