题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5938

题意:给一个不超过20位并且大于2位的数字字符串(只包含1-9)然后找到适当的位置依次放入"+-*/"四个符号,然后求能构成的最大的数;

可以看成是 A+B-C*D/E这种形式,要想让结果最大,那么A+B要尽可能大,C*D/E要尽可能小;

所以C和D只能是一位数,那么C*D的结果就是1位数或者2位数,因此E取3位数时C*D/E一定是0了,但是这不一定是最大的结果, 所以我们可以枚举E为1,2,3位数时的三种情况, 取最大值;

这样就确定了C,D,E和AB的长度;就可以直接求了;

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N = ;
const int INF = 0x3f3f3f3f;
const double eps = 1e-; char s[N];
int len; LL solve(int n)
{
LL Max = ;
for(int i=; i<=n-; i++) ///a由i位数构成;
{
LL a = , b = ;
for(int j=; j<i; j++)
a = a* + s[j]-'';
for(int j=i; j<n; j++)
b = b* + s[j]-'';
Max = max(Max, a+b);
}
return Max;
} LL Find(int k)/// 表示/号后面有k位数;
{
if(len-k < )///要剩下4位以上才可以;
return -INF; LL c, d, e = ;///求 a + b - c*d/e;
for(int i=len-k; i<len; i++)
e = e* + s[i]-''; d = s[len-k-]-'';
c = s[len-k-]-''; LL m = solve(len-k-);///求前面的数能组成的最大的a+b存到m中; return (m-c*d/e);
} int main()
{
int T, t = ;
scanf("%d", &T);
while(T --)
{
scanf("%s", s); len = strlen(s);
LL ans = -INF; ans = max(ans, Find());
ans = max(ans, Find());
ans = max(ans, Find()); printf("Case #%d: %I64d\n", t++, ans);
}
return ;
}

Four Operations---hdu5938(暴力)的更多相关文章

  1. [HDOJ5938]Four Operations(暴力,DFS)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5938 题意:给出一个长度最大是2020的数字串, 你要把数字串划分成55段, 依次填入'+', '-' ...

  2. ACM程序设计选修课——1065: Operations on Grids(暴力字符串)

    1065: Operations on Grids Time Limit: 3 Sec  Memory Limit: 128 MB Submit: 17  Solved: 4 [Submit][Sta ...

  3. 开源服务专题之------ssh防止暴力破解及fail2ban的使用方法

    15年出现的JAVA反序列化漏洞,另一个是redis配置不当导致机器入侵.只要redis是用root启动的并且未授权的话,就可以通过set方式直接写入一个authorized_keys到系统的/roo ...

  4. [暴力搜索] POJ 3087 Shuffle'm Up

    Shuffle'm Up Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10003   Accepted: 4631 Des ...

  5. Codeforces Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) B. Batch Sort(暴力)

    传送门 Description You are given a table consisting of n rows and m columns. Numbers in each row form a ...

  6. HDU4288:Coder(线段树单点更新版 && 暴力版)

    Problem Description In mathematics and computer science, an algorithm describes a set of procedures ...

  7. hdu 5475 An easy problem(暴力 || 线段树区间单点更新)

    http://acm.hdu.edu.cn/showproblem.php?pid=5475 An easy problem Time Limit: 8000/5000 MS (Java/Others ...

  8. Codeforces Round #312 (Div. 2) C. Amr and Chemistry 暴力

    C. Amr and Chemistry Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/558/ ...

  9. TZOJ 4325 RMQ with Shifts(线段树查询最小,暴力更新)

    描述 In the traditional RMQ (Range Minimum Query) problem, we have a static array A. Then for each que ...

  10. HDU 6315 Naive Operations(线段树区间整除区间)

    Problem DescriptionIn a galaxy far, far away, there are two integer sequence a and b of length n.b i ...

随机推荐

  1. BZOJ2757 : [SCOI2012]Blinker的仰慕者

    BZOJ AC900题纪念~~ 若K>0,则 设f[i][j]表示i位数字,积为j的数字的个数 g[i][j]表示i位数字,积为j的数字的和 DP+Hash预处理 查询时枚举LCP然后统计贡献 ...

  2. 转载关于KeyPress和KeyDown事件的区别和联系

    KeyDown:在控件有焦点的情况下按下键时发生. KeyPress:在控件有焦点的情况下按下键时发生. KeyUp:在控件有焦点的情况下释放键时发生. 1.KeyPress主要用来接收字母.数字等A ...

  3. c/c++ 关于swap的不同写法

    利用模板 template<typename T>inline void swap(T& a, T& b){ T tmp = a; a = b; b = tmp; } 利用 ...

  4. TYVJ P1086 Elevator Label:dp

    背景 广东汕头聿怀初中 Train#2 Problem4 描述 现有N种箱子,每种箱子高度H_i,数量C_i.现选取若干箱子堆成一列,且第i种箱子不能放在高度超过A_i的地方.试求最大叠放高度. 输入 ...

  5. winform学习-----理解小概念-20160517

    1.MouseDown事件 当鼠标指针位于控件上并按下鼠标键时发生. 2.MouseUp事件 当鼠标指针在控件上并释放鼠标按键时发生. 与 mouseout 事件不同,只有在鼠标指针离开被选元素时,才 ...

  6. 兼容ie[6-9]、火狐、Chrome、opera、maxthon3、360浏览器的js本地图片预览

    html代码: <div id="divPreview"> <img id="imgHeadPhoto" src="Images/H ...

  7. 两个List,第二个List根据第一个List排序

    /// <summary> /// 协同排序 /// </summary> /// <param name="sod"></param&g ...

  8. Ubuntu 14.04 使用的一些笔记

    1. 今天下载了安卓的2.3.5的源代码,解压tar的时候,发现一个错误中断了解压过程: could not create the hard link file, 看了一下基本上都是每个主目录下的 . ...

  9. C++中函数中没写返回值会怎么样?

    先看这一段代码: /* P125 清单7.15 使用迭代求第N个Fibonacci数 */ #include <iostream> int fib(int position); int m ...

  10. in_array 的第三个参数strict设置为 true

    var_dump(in_array(0, array('s' )); 这句话的结果是bool(true). 因为in_array会将0 和's' 进行比较,0是number类型,'s'是string类 ...