• HDU 5938 Four Operations(暴力枚举)


    题目戳这

    题意:给你一个由数字组成的字符串,让你分成五份,然后在中间按顺序插入加减乘除这四个符号,然后算出答案,求这个答案的最大值。

    思路:暴力枚举减号的位置就行了,就是由减号为一个分界线,前面的字符串分成两部分,一个部分是一个数字,其余的部分组成剩下的数字,后面的让前面两个数字相乘,余下的数字组成最后一个数字。所以就成了aaa+a-a*a/aaaaaa 或者a+aaa-a*a/aaaa。

    P.S.一开始以为只是简单地让前面的所有数字组成加法,然后后面剩下4个数字组成后面部分,也就是aaaaa+a-a*a/a,然而这是错的,反例:123991,这个应该是1+2-3*9/91。然后就想到会不会是看长度,如果是小于8的就是暴力枚举,否则就是按照第一种方法那样得出答案(8这个数字是随便想的),然后还是WA了,最后,看到题解了,说是枚举减号的位置,很好,这回应该可以了,然后枚举完了之后还是WA了,尼玛,最后由同学提醒才看到,答案不应该初始化为0,而是应该初始化为-1e18······,改好之后终于对了······

     1 #include<stdio.h>
     2 #include<iostream>
     3 #include<string.h>
     4 #include<math.h>
     5 #include<algorithm>
     6 #include<vector>
     7 #include<string>
     8 #include<queue>
     9 #include<map>
    10 #include<stack>
    11 #include<set>
    12 #include<list>
    13 #define ll long long
    14 #define maxn 100100
    15 #define PI acos(-1.0)    //圆周率
    16 const ll INF = 1e18;
    17 using namespace std;
    18 int T;
    19 char s[50];
    20 int main()
    21 {
    22     ll cas=0;
    23     scanf("%d",&T);
    24     while(T--)
    25     {
    26         scanf("%s",s);
    27         int len=strlen(s);
    28 
    29         ll big=0;
    30         ll ans=-INF;
    31         for(int i=2;i<len-2;i++)
    32         {
    33             ll l=0,r=0;
    34             big=0;
    35             ll f=1;
    36             for(int j=i-1;j>=1;j--)  r+=(s[j]-'0')*f,f*=10;  f=1;
    37             for(int j=i-2;j>=0;j--)  l+=(s[j]-'0')*f,f*=10;
    38 
    39             if(l>r)  big=l+(s[i-1]-'0');
    40             else  big=r+(s[0]-'0');
    41 
    42             //cout<<big<<endl;
    43 
    44             ll c=s[i]-'0';
    45             ll d=s[i+1]-'0';
    46 
    47             f=1;
    48             ll e=0;
    49             for(int j=len-1;j>=i+2;j--)  e+=(s[j]-'0')*f,f*=10;
    50 
    51             //cout<<c<<" "<<d<<" "<<e<<endl;
    52 
    53             big-=c*d/e;
    54 
    55             ans=ans>big?ans:big;
    56         }
    57 
    58         printf("Case #%lld: %lld
    ",++cas,ans);
    59     }
    60 
    61     return 0;
    62 }
    View Code
  • 相关阅读:
    使用 Apache OpenJPA 开发 EJB 3.0 应用,第 3 部分: 实体继承
    使用 Apache OpenJPA 开发 EJB 3.0 应用,第 2 部分: 开发第一个 Open JPA 应用
    使用 Apache OpenJPA 开发 EJB 3.0 应用,第 6 部分: 处理实体生命周期事件的回调
    http://www.oschina.net/question/129540_20547
    tomcat6实现远程调试
    FluorineFx和Flex配置
    今天才开通这个博客呀!
    vue中install方法
    Vue.nextTick 的原理和用途
    vue3.0中使用nextTick
  • 原文地址:https://www.cnblogs.com/2cm-miao/p/6011879.html
Copyright © 2020-2023  润新知