CF 1986D. Mathematical Problem

原题链接:Problem - 1986D - Codeforces

题意:一串长度最多为20的由数字组成的字符串,在这些数字中间可以添加字符串长度减去二数量的符号,加或者乘,例如1234,就可以添加加号或者乘号二个,变成1+2*34,1*2*34,12+2*3等等,求算出来的最小值。

思路:观察可以得到,对于每个字符串,都会有一个数字由二个字符组成,并且这二个字符为相邻字符,所以可以枚举这个数字的位置,然后求出每次的最小值,然后取最小。

//冷静,冷静,冷静
//调不出来就重构
#pragma GCC optimize(2)
#pragma GCC optimize("O3")
#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<ll,ll> pii;
const int N=1e6+10,mod=998244353;
ll n;string s;
int main()
{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	ll t;cin>>t;
	while(t--)
	{
		cin>>n;
		cin>>s;
		ll k=n-2;
		if(k<=0)
		{
			bool l=0;
			for(int i=0;i<s.size();i++)
			{
				if(s[i]!='0')l=1;
                if(i==s.size()-1)l=1;
				if(l)cout<<s[i];
			}
			cout<<endl;
			continue;
		}
		map<ll,ll> op;
		for(int i=0;i<s.size();i++)
		{
			op[s[i]-'0']++;
		}
		ll min1=1e18;
		for(int i=0;i+1<s.size();i++)
		{
			ll sum=1e18;//因为sum可能变成0
			ll zhi=(s[i]-'0')*10+s[i+1]-'0';
			op[s[i]-'0']--;op[s[i+1]-'0']--;
			op[zhi]++;
			for(auto v:op)
			{
				for(int j=0;j<v.second;j++)
				{
					if(sum==1e18)
					{
						sum=v.first;
					}
					else
					{
						sum=min(sum+v.first,sum*v.first);
					}
				}
			}
			min1=min(min1,sum);
			op[zhi]--;
			op[s[i]-'0']++;op[s[i+1]-'0']++;
		}
		cout<<min1<<endl;
	}
    return 0;
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《数学分析一》是由弗拉基米尔·A·佐里奇所著的一本数学教材,该书是数学分析的入门教材之一。数学分析是研究连续和极限的数学学科,它是数学的基础,也是许多其他数学分支的基础。 《数学分析一》内容丰富,涵盖了数学分析的基本概念和理论。这本教材首先介绍了实数和复数的基础知识,包括数集的性质、数列的极限和级数的性质等。随后,教材讲解了函数的概念和性质,包括连续、可微和可积函数等。接着,教材介绍了微积分的基本内容,包括导数、积分和微分方程等。最后,教材还涉及了级数、傅里叶级数和曲线积分等高级内容。 这本教材不仅内容全面,而且讲解清晰易懂。它通过引入数学定理和举例等方法,帮助读者理解和掌握数学分析的概念和理论。此外,教材还提供了大量的习题和练习题,帮助读者加深对所学知识的理解和应用。 《数学分析一》适用于大学数学专业的本科生和研究生,也适用于对数学分析感兴趣的人士。它不仅可以作为教学的辅助教材,还可以作为自学的教材使用。这本教材不仅有助于学生发展数学思维和解题能力,而且对于培养学生的逻辑思维和分析问题的能力也具有重要意义。 总之,弗拉基米尔·A·佐里奇的《数学分析一》是一本内容全面、讲解清晰的数学教材,它对于学习和研究数学分析具有重要的参考价值。它不仅向读者介绍了数学分析的基本概念和理论,还帮助读者加深了对数学的理解和应用能力。无论是学生还是对数学感兴趣的人,在学习数学分析时都值得参考这本教材。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值