首页 > 其他分享 >*洛谷 P1018 [NOIP2000 提高组] 乘积最大(dfs+高精度)

*洛谷 P1018 [NOIP2000 提高组] 乘积最大(dfs+高精度)

时间:2022-10-05 19:56:29浏览次数:78  
标签:乘积 洛谷 P1018 LL dfs NOIP2000 数字

  • 说在前头
  • 此篇题解是记录自己的暴力写法,并不能100分满分通过洛谷测试数据(只有60)
  • 纯纯记录写法而写

https://www.luogu.com.cn/problem/P1018

我还说这么简单呢这题,想太多嘻嘻

题目大意:

输入一个长度为n的数字s,让我们在这个数字之间插入k个×(乘以),

让我们求被乘号分割开的所有数据的总乘积的最大值。
输入 #1 
4  2
1231
输出 #1 
62

我们的数字长度为n,首尾不可超出界限,所以可以填充的位置就只有[1,n-1];
每个位置面临着选和不选,同时状态还需要回溯

  • wa点在于无法表示超长数字,需要用到高精度
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL,LL> PII;
const LL MAXN=1e18;
const LL N=200200,M=2002;
LL n,k,maxn=0;
string s;
LL st[N];
void dfs(LL num,LL idx)
{
    if(num==k+1)
    {
        LL ans=1;
        string c;
        for(LL i=1;i<=k;i++)
        {
            //cout<<st[i]<<" ";
            if(i==1) c=s.substr(0,st[1]);
            else c=s.substr(st[i-1],st[i]-st[i-1]);
            ans*=stol(c);
        }
        ans*=stol(s.substr(st[k],n-st[k]));
        maxn=max(maxn,ans);
        return ;
    }
    for(LL i=idx;i<=n-1;i++)
    {
        st[num]=i;
        dfs(num+1,i+1);
        st[num]=0;
    }
}
int main()
{
    cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    LL T=1;
    //cin>>T;
    while(T--)
    {
        cin>>n>>k;
        cin>>s;
        //从[1,n-1]的数字中寻找k位
        dfs(1,1);//从第一个位置开始放,从数字1开始放
        cout<<maxn<<endl;
    }
    return 0;
}
/*
5 3
12345
1 2 3
1 2 4
1 3 4
2 3 4
*/

标签:乘积,洛谷,P1018,LL,dfs,NOIP2000,数字
From: https://www.cnblogs.com/Vivian-0918/p/16756219.html

相关文章

  • ABC 249 C - Just K(dfs)
    https://atcoder.jp/contests/abc249/tasks/abc249_c题目大意:给定n个字符串,让我们随意选择,然后找到这里面相同的字母刚好等于k个的时候的数量是多少?求可选择出来的最......
  • HDFS shell命令行常用操作
    1.hadoopfs-mkdir[-p]<path>path为待创建的目录,如果没有一个父目录就加一个-p例:hadoopfs-mkdir/yuan创建一个shenzi的目录2.hadoopfs-ls[-h][-R][path]p......
  • 02-分布式文件服务器FastDFS[简介, 架构详解]
    分布式文件服务器-FastDFS什么是FastDFSFastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了......
  • 0460-HDFS纠删码的机架感知
    温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。Fayson的github:​​https://github.com/fayson/cdhproject​​提示:代码块部分可......
  • 0482-HDFS上一次检查点异常分析
    温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。Fayson的github:​​https://github.com/fayson/cdhproject​​提示:代码块部分可......
  • 0464-如何离线分析HDFS的FsImage查找集群小文件
    温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。Fayson的github:​​https://github.com/fayson/cdhproject​​提示:代码块部分可......
  • 【运维实战】3.FastDFS分布式的文件存储系统进阶API使用实践
    ​本章目录:0x00FastDFSAPI使用实践JavaPython0x01FastDFS基础命令与配置1.FastDFS客户端命令浅析2.FastDFS服务端配置浅析0x00FastDFSAPI使用实践Java描述:Fast......
  • Java Api ——HDFS连接和文件创建
    写在前面:需要配置好Linux虚拟机并成功配置Hadoop idea创建maven项目导入maven:<dependencies><dependency><groupId>org.apache.hadoop</group......
  • HDFS和NFS的区别
    #相同点两者的文件系统数据均能够在相关系统内的多台机器上进行数据读取和写入,都是分布式文件系统#不同点##NFS是通过RPC通信协议进行数据共享的文件系统,所以NFS必须在运行......
  • 洛谷 P1506 拯救oibh总部(DFS / 染色法)
    https://www.luogu.com.cn/problem/P1506题目描述给定n*m的图形,由*和0组成。让我们求出被*四面包围了的0的数量。输入#1450000000*000*0*000*00输出......