ACM程序设计选修课——1041: XX's easy problem(神烦的多次字符串重定向处理)
1041: XX's easy problem
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 41 Solved: 7
[Submit][Status][Web
Board]
Description
XX is a good student who likes to ask questions.But sometimes when you get the problem, you are not willing to answer his question bucause the problem is too easy.For example,He'll ask how much a + b is equal to, or how much a +
b is equal to,etc.
Today he just got a new problem,so he asks you for help:He has an expression of form x1 op x2 op x3.....xn,and op is just '+' or '*',xi(1 <= i <= n) a digits between 1 and 9。However, this problem is not so easy, you need to add one pair of brackets in this
expression so that to maximize the value of the resulting expression.
Input
The first line contains expression,x1 op x2 op x3.....xn(1 <= n <= 50),op is '+' or '*'.The answer maxmized dosen't exceed 2^63-1.
Output
In the first line print the maximum possible value of an expression.
Sample Input
1+2*3
2*2*2
Sample Output
9
8
哎西每次可以AC的时候先给我的CE真是醉了,HUST这个OJ真是有毒,字符串长度的unsigned和普通int都要分那么清楚。这题怎么说呢,做了我一个晚上+半个晚上(估计是我思路不太好,只能向麻烦的做法靠近)...试了各种方法,最后特判+巨烦的多次string重定向终于过了。恭喜下自己终于上60题,可以够到大神远远跑在前面留下的灰尘了....做法嘛没什么好说的,毫无算法,枚举所有括号的位置,然后按照括号和加法乘法优先级进行模拟运算再取max。
代码:
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<sstream>
#include<cstring>
#include<cstdio>
#include<string>
#include<deque>
#include<cmath>
#include<queue>
#include<set>
#include<map>
using namespace std;
typedef long long LL;
string s;
inline LL fx(string s)//识别优先级的计算函数
{
LL i,cheng,tans;
for (i=0; i<(LL)s.size(); i++)
{
if(s[i]=='+')
s[i]=' ';
}
istringstream sin(s);
string temp;
LL t,sum=0;
while (sin>>temp)
{
for (i=0; i<(LL)temp.size(); i++)
{
if(temp[i]=='*')
temp[i]=' ';
}
istringstream ssin(temp);
tans=1;
while (ssin>>cheng)
{
tans=tans*cheng;
}
sum=sum+tans;
}
return sum;
}
inline string change(string s)//去括号并将括号内的数据进行计算并代回去
{
LL ans,len=(LL)s.size(),i,j,l=-1,r=-1;
string temp;
for (i=0; i<len; i++)
{
if(s[i]=='(')
{
l=i;
for (j=len-1; j>=i; j--)
{
if(s[j]==')')
{
r=j;
break;
}
}
break;
}
}
ans=fx(s.substr(l+1,r-l-1));
stringstream in;
in<<ans;
in>>temp;
s.replace(l,r-l+1,temp);
return s;
}
int main (void)
{
ios::sync_with_stdio(false);
LL i,j;
LL maxx,t;
string t1,t2,t3,t4;
while (getline(cin,s))
{
if(s.size()==1)
{
cout<<s<<endl;
continue;
}
LL len=s.size();
maxx=-9999999;
for (i=0; i+2<len; i+=2)//枚举所有括号位置(括号内至少两个数)
{
for (j=i+2; j<len; j+=2)
{
t3=s;
t1=s.substr(i,j-i+1);
t2=t3.erase(i,j-i+1);
t2.insert(i,'('+t1+')');
t4=change(t2);
t=fx(t4);
if(t>maxx)
{
maxx=t;
}
}
}
cout<<maxx<<endl;
}
return 0;
}
ACM程序设计选修课——1041: XX's easy problem(神烦的多次字符串重定向处理)的更多相关文章
- ACM程序设计选修课——Problem E:(ds:图)公路村村通(优先队列或sort+克鲁斯卡尔+并查集优化)
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- ACM程序设计选修课——Problem D: (ds:树)合并果子(最优二叉树赫夫曼算法)
Problem D: (ds:树)合并果子 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 80 Solved: 4 [Submit][Status][ ...
- ACM程序设计选修课——Problem E:(ds:图)公路村村通(Prim)
问题 E: (ds:图)公路村村通 时间限制: 1 Sec 内存限制: 128 MB 提交: 9 解决: 5 题目描述 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本, ...
- ACM程序设计选修课——Problem F:(ds:图)旅游规划(优先队列+SPFA)
问题 F: (ds:图)旅游规划 时间限制: 1 Sec 内存限制: 128 MB 提交: 14 解决: 4 题目描述 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路 ...
- ACM程序设计选修课——1018: Common Subsequence(DP)
问题 L: Common Subsequence 时间限制: 1 Sec 内存限制: 32 MB 提交: 70 解决: 40 [提交][状态][讨论版] 题目描述 A subsequence of ...
- ACM程序设计选修课——1043: Radical loves integer sequences(YY)
1043: Radical loves integer sequences Time Limit: 1 Sec Memory Limit: 128 MB Submit: 36 Solved: 4 ...
- ACM程序设计选修课——1076汇编语言(重定向+模拟)
1076: 汇编语言 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 34 Solved: 4 [Submit][Status][Web Board] ...
- ACM程序设计选修课——1057: Beautiful Garden(模拟+耐心调试)
1057: Beautiful Garden Time Limit: 5 Sec Memory Limit: 128 MB Submit: 25 Solved: 12 [Submit][Statu ...
- ACM程序设计选修课——1065: Operations on Grids(暴力字符串)
1065: Operations on Grids Time Limit: 3 Sec Memory Limit: 128 MB Submit: 17 Solved: 4 [Submit][Sta ...
随机推荐
- 卓越管理的实践技巧(4)如何才能给予有效的反馈 Guide to Giving Effective Feedback
Guide to Giving Effective Feedback 前文卓越管理的秘密(Behind Closed Doors)最后一部分提到了总结的13条卓越管理的实践技巧并列出了所有实践技巧名称 ...
- centos7-httpd虚拟主机
Apache虚拟主机: 一台WEB服务器发布单个网站会非常浪费资源,所以一台WEB服务器上会发布多个网站, 在一台服务器上发布多网站,也称之为部署多个虚拟主机,WEB虚拟主机配置方法有三种: 基于单I ...
- 数据库-SQL语法:把一个字段的值设为随机整数
update test2 set zuig = (cast ( ceiling (rand()*9) as int))
- PAT (Basic Level) Practise (中文)- 1014. 福尔摩斯的约会 (20)
http://www.patest.cn/contests/pat-b-practise/1014 1014. 福尔摩斯的约会 (20) 时间限制 50 ms 内存限制 65536 kB 代码长度限制 ...
- [BZOJ] 1441 Min
题意:给一堆数ai,求S=Σxiai,使得S最小且为正整数 根据裴蜀定理,一定存在ax+by=gcd(a,b),同理可以推广到n个整数 也就是说,在不考虑正负的情况下,所有数的gcd就是所求 #inc ...
- 如何用纯 CSS 创作一个文本淡入淡出的 loader 动画
效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/ERwpeG 可交互视频 ...
- zookeeper伪集群(一)
Zookeeper的安装和配置十分简单, 既可以配置成单机模式, 也可以配置成伪集群模式.集群模式. 本人将对伪集群.集群进行重点介绍: 铺垫: 1.集群必须是奇数(2N+1),伪集群和集群一致. 2 ...
- loc与iloc函数的使用
Pandas中loc和iloc函数用法详解(源码+实例) https://blog.csdn.net/w_weiying/article/details/81411257 Pandas中loc,il ...
- 并查集:CDOJ1593-老司机破阵 (假的并查集拆除)
老司机破阵 Time Limit: 4500/1500MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Problem Descri ...
- JQuery根据字母检索元素并导航到指定位置
介绍:类似于实现ios通讯录中右侧字母,快速导航到联系人的效果,如图: Html代码如下,分别是字母和港星名字的排序: <input type="text" id=" ...