B最强的决斗者一切都是必然的!

题目链接:B最强的决斗者一切都是必然的!

题意分析:只可意会不可言传~(其实是懒得打字enmmm);

思路:设置“指针”(double)记录改变状态的起始位置,然后进行暴力求解。

总结:注意题意的理解,注意连锁数的概念。可圈可点的是,通过本题,我重温了一下codeblocks的调试方法。

每日一句正能量:责其所难,则其易者不劳而正;补其所短,则其长者不功而遂。

代码:

#include <bits/stdc++.h>
using namespace std;


struct card{
    int s;
    int t;
    int x;
};
card c[1010];
int f(int from, int to){
    int temp = 0;
    for (int i = to; i >= from; i--){
        if (c[i].t == 1){
            temp += c[i].x;
        }
        if (c[i].t == 2){
            temp += (i - from + 1) * c[i].x;
        }
        if (c[i].t == 3){
            return temp;
        }
        if (c[i].t == 4){
            i --;
        }//为什么这么写?题意使然!
    }
    return temp;
}
int main(){
    int n;
    while (scanf("%d", &n) != EOF){
        for (int i = 0; i < 1010; i ++){
            c[i].s = 0;
            c[i].t = 0;
            c[i].x = 0;
        }//初始化
        for(int i = 0; i < n; i ++){
            scanf("%d%d", &c[i].s, &c[i].t);
            if (c[i].t == 1 || c[i].t == 2){
                scanf("%d", &c[i].x);
            }
        }//读入数据
        int i = 0;//循环变量
        int from = 0, to = 0;//"指针“
        int ans = 0;
        while (i < n){
            if (c[i].s <= c[i + 1].s){
                //啥也不做~~
            }
            else{
                to = i;
                ans += f(from, to);
                from = to + 1;//指针更新以及函数调用
            }
            i ++;
        }
        printf("%d\n", ans);
    }
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值