Luogu-P1018 乘积最大
题目
题目链接
测试得分: 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 乘积最大相关推荐
- P1018 乘积最大
https://www.luogu.org/problem/show?pid=1018#sub 其实这个数据范围貌似搜索是过不了的,但是在lg上过了 这里搜索的方法是,dfs(int x,LL ans ...
- 洛谷 P1018乘积最大
题目描述 今年是国际数学联盟确定的"20002000――世界数学年",又恰逢我国著名数学家华罗庚先生诞辰9090周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的 ...
- 洛谷P1018乘积最大题解--zhengjun
题目描述 今年是国际数学联盟确定的" 200020002000――世界数学年",又恰逢我国著名数学家华罗庚先生诞辰909090周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的 ...
- 【luogu1018】 乘积最大 [区间dp+高精][noip2000]
P1018 乘积最大 设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大. DP+高精 #include<bits/stdc++ ...
- 【动态规划】P1018 线性dp:乘积最大
代码: 这题需要高精度,只能通过20分 #include<iostream> #include<string> using namespace std; int dp[41][ ...
- [CF/AT/Luogu]各大网站网赛 爆肝部部长工作报告文件Ⅱ
文章目录 CodeForces LATOKEN-Round-1(Div.1+Div.2) A. Colour the Flag B. Histogram Ugliness C. Little Alaw ...
- P5540-[BalkanOI2011]timeismoney|最小乘积生成树【最小生成树,凸壳】
正题 题目链接:https://www.luogu.com.cn/problem/P5540 题目大意 给出nnn个点mmm条边边权是一个二元组(ai,bi)(a_i,b_i)(ai,bi),求出 ...
- BZOJ3209(luogu 4317)花神的数论题题解
题目 设 sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数 N ,花神要问你 派(Sum(i)),也就是 sum(1)-sum(N) 的乘积(n<=1e15). 分析 好吧,一 ...
- 【luogu P6657】【模板】LGV 引理(行列式)(数学)(线性代数)
[模板]LGV 引理 题目链接:luogu P6657 题目大意 给你一个二维图,然后分别有 m 个棋子,分别要从 (ai,1) 走到 (bi,n),只能从 (x,y) 走到 (x+1,y) 和 (x ...
- 【luogu CF643F】Bears and Juice(结论题)
Bears and Juice 题目链接:luogu CF643F 题目大意 有 n 个熊 p 张床,有一些酒桶,数量你定,其中有一个放酒其它放果汁,然后每天每个熊可以选一个酒桶集合(可以为空),如果 ...
最新文章
- 二叉树初始化_Java实现二叉树
- 计算机网络的OSI七层模型
- python怎么绘制渐变图_用Python画colorbar渐变图+修改刻度大小+修改渐变颜色
- winrar 去广告_解压缩工具之WinRAR下载安装教程
- C#中Delegate和Event以及它们的区别
- js 数组合并并且去重
- python爬虫:用scrapy框架爬取链家网房价信息并存入mongodb
- 绿联USB2.0 USB外接网卡驱动
- jvm讲解-jvm内存结构详解
- 日语学习网站分类汇总
- 输入某年某月某日,判断这一天是星期几
- mysql提权方式linux_Linux提权的几种常用方式
- android相机采集sdk,C#用basler相机sdk采集图像并用halcon显示的小程序
- Scratch编程 烧脑算法——换位密码
- 题目 1039: 宏定义之闰年判断
- 12、Pytest之@pytest.mark.自定义标签使用
- 绘制系统响应函数的频率响应曲线
- 2021年美容师(初级)考试及美容师(初级)考试资料
- Vue3学习笔记:了解并使用Pinia状态管理
- Etherscan以太坊浏览器中Input Data解析方法
热门文章
- 云服务器 文件服务,云服务 做文件服务器
- python全局变量怎么删除_python 全局变量怎么改
- java+2e10_CoreJavaE10V1P3.10 第3章 Java的基本编程结构-3.10 数组(Arrays)
- 计算机操作基本知识公务员,公务员计算机类操作系统知识.pdf
- cuda event
- Pandas Index 更新和计算(Modifyingcomputations)
- es集群节点数和分片数关系_ES数据插入和查询流程是怎么样的?
- 泰语7个元音变形_泰语发音规则
- ZooKeeper学习总结(3)——ZooKeeper常见面试题
- App后台开发运维和架构实践学习总结(2)——RESTful API设计技巧