首页 > 其他分享 >棒球比赛

棒球比赛

时间:2024-02-15 12:22:19浏览次数:20  
标签:得分 比赛 ops int res 记录 棒球 10

你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。

比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表 ops,其中 ops[i] 是你需要记录的第 i 项操作,ops 遵循下述规则:

整数 x - 表示本回合新获得分数 x
"+" - 表示本回合新获得的得分是前两次得分的总和。题目数据保证记录此操作时前面总是存在两个有效的分数。
"D" - 表示本回合新获得的得分是前一次得分的两倍。题目数据保证记录此操作时前面总是存在一个有效的分数。
"C" - 表示前一次得分无效,将其从记录中移除。题目数据保证记录此操作时前面总是存在一个有效的分数。
请你返回记录中所有得分的总和。

示例1:

输入:ops = ["5","2","C","D","+"]
输出:30
解释:
"5" - 记录加 5 ,记录现在是 [5]
"2" - 记录加 2 ,记录现在是 [5, 2]
"C" - 使前一次得分的记录无效并将其移除,记录现在是 [5].
"D" - 记录加 2 * 5 = 10 ,记录现在是 [5, 10].
"+" - 记录加 5 + 10 = 15 ,记录现在是 [5, 10, 15].
所有得分的总和 5 + 10 + 15 = 30

示例2:

输入:ops = ["5","-2","4","C","D","9","+","+"]
输出:27
解释:
"5" - 记录加 5 ,记录现在是 [5]
"-2" - 记录加 -2 ,记录现在是 [5, -2]
"4" - 记录加 4 ,记录现在是 [5, -2, 4]
"C" - 使前一次得分的记录无效并将其移除,记录现在是 [5, -2]
"D" - 记录加 2 * -2 = -4 ,记录现在是 [5, -2, -4]
"9" - 记录加 9 ,记录现在是 [5, -2, -4, 9]
"+" - 记录加 -4 + 9 = 5 ,记录现在是 [5, -2, -4, 9, 5]
"+" - 记录加 9 + 5 = 14 ,记录现在是 [5, -2, -4, 9, 5, 14]
所有得分的总和 5 + -2 + -4 + 9 + 5 + 14 = 27

示例3:

输入:ops = ["1"]
输出:1

提示:

  • 1 <= ops.length <= 1000
  • ops[i] 为 "C"、"D"、"+",或者一个表示整数的字符串。整数范围是 [-3 * 104, 3 * 104]
  • 对于 "+" 操作,题目数据保证记录此操作时前面总是存在两个有效的分数
  • 对于 "C" 和 "D" 操作,题目数据保证记录此操作时前面总是存在一个有效的分数

思路:

先获取二维数组operations每行的第一个元素,然后根据第一个元素进行相关操作。
由于数字可能有很多位,所以要遍历该行的所有的元素来获取实际数字。

int getNum(char *strs){
    int start = strs[0]=='-'?1:0;
    int j = start,res = 0;
    char cur=strs[start];
    while(cur!='\0'){
        res = res*10+(cur-'0');
        cur = strs[++j];
    }
    res = start==1?-res:res;
    return res;
}
int calPoints(char** operations, int operationsSize) {
    int* tmp = (int*)malloc(sizeof(int)*operationsSize);
    int idx = 0;
    for(int i = 0;i<operationsSize;i++){
        char ch = operations[i][0];
        switch(ch){
            case '+':
                tmp[idx++] = tmp[idx-2]+tmp[idx-1];
                break;
            case 'D':
                tmp[idx++] = tmp[idx-1]*2;
                break;
            case 'C':
                idx--;
                break;
            default :
                tmp[idx++] = getNum(operations[i]);
        }
    }
    int res = 0;
    for(int i=0;i<idx;i++){
        res+=tmp[i];
    }
    free(tmp);
    return res;
}

标签:得分,比赛,ops,int,res,记录,棒球,10
From: https://www.cnblogs.com/mooysy/p/18016142

相关文章

  • 牛客2.7比赛E,F题
    链接:https://ac.nowcoder.com/acm/contest/67743/E来源:牛客网智乃最近学习了冒泡排序和最长子段和,所以她现在想把它们合并成一个新的算法。众所周知,冒泡排序是一种通过交换相邻元素实现排序的算法,最长子段和是指从一个数组aaa中取出一段连续的非空数组区间[l,r][l,r][l,r],最大......
  • 牛客比赛2.5
    比赛链接9题,就看结果来说还是不错的,但是过程我是很不满意的。。A,B签到题,没什么说的必要。C题,数据结构题,很烦,trie树带查询,码起来有些麻烦,考试的时候没有开。其实思路很简单,用01trie树,对每一个点,查找比他小的和它异或起来最大的数字,这个东西在trie树上就是一个贪心,O(logn)级别......
  • 第四次比赛
    D.网络寻路(dfs,但是可以简便方法)#include<bits/stdc++.h>usingnamespacestd;ints[100000],a[100010],b[100010];intmain(){intn,m;cin>>n>>m;for(inti=0;i<m;i++){cin>>a[i]>>b[i];s[a[i]]++;......
  • 第三次比赛E题.砝码
    //01背包变形(三类情况,不增不减,增砝码,减砝码)include<bits/stdc++.h>usingnamespacestd;constintN=110,M=200010,b=M/2;intv[N],f[N][M];intmain(){intn,sum;cin>>n;for(inti=1;i<=n;i++)scanf("%d",&v[i]),sum+=v[i];f[0][b]=true;for(int......
  • 第一次比赛C题.日期
    include<bits/stdc++.h>usingnamespacestd;vectorv;//vectormap的应用//先将所有情况用vector存入,再利用map容器的特性输出intd[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};intrun(inta,intb){if((a%40&&a%100!=0)||(a%4000)){if(b==2)return1;return0;}......
  • 比赛
     第3题    比赛查看测评数据信息N头奶牛,编号1∼N,一起参加比赛。奶牛的战斗力两两不同。这些奶牛之间已经进行了M轮两两对决。在对决中,战斗力高的奶牛一定会战胜战斗力低的奶牛。请问,通过上述M轮对决的结果,可以确定多少头奶牛的具体战斗力排名。1≤N≤100,1≤M≤4500,......
  • P5738 【深基7.例4】歌唱比赛
    1.题目介绍【深基7.例4】歌唱比赛题目描述\(n(n\le100)\)名同学参加歌唱比赛,并接受\(m(m\le20)\)名评委的评分,评分范围是\(0\)到\(10\)分。这名同学的得分就是这些评委给分中去掉一个最高分,去掉一个最低分,剩下\(m-2\)个评分的平均数。请问得分最高的同学分数是多少?......
  • 搜索推荐DeepFM算法详解:算法原理、代码实现、比赛实战
    搜索推荐DeepFM算法详解:算法原理、代码实现、比赛实战可以说,DeepFM是目前最受欢迎的CTR预估模型之一,不仅是在交流群中被大家提及最多的,同时也是在面试中最多被提及的:1、Deepfm的原理,DeepFM是一个模型还是代表了一类模型,DeepFM对FM做了什么样的改进,FM的公式如何化简并求......
  • UofTCTF 2024 比赛记录
    这次的题目挺有意思,难度适中,*开头的代表未做出,简单记录一下解题笔记。IntroductionGeneralInformation题目TheflagformatforallchallengesisUofTCTF{...},caseinsensitive.Ifyouareexperiencingtechnicaldifficultieswithchallenges,supportisonour......
  • 新开的信使——比赛总结
    7.7线上组队赛,队友:luomiao,305/400pts,rnk4/6。A题枚举保留的矩阵,坑点是\(k=0\)时可以不保留矩阵。B题简单构造,坑点是\(n=1,m=1\)。C题由于最小一半,可以用随机化,可以枚举模数再随机化判断,也可以随机两个数判断差的模数;也可以利用数量的限制优化枚举,如果模数是\(m\),则......