• 【杭电】[1896]Stones


    这里写图片描述
    这里写图片描述

    像这种题都是理解题目难
    真理清思路之后写的时候可能很简单就AC了……

    这个利用优先队列做比较方便

    题目大意是
    遇见第奇数次石子就向前扔di米
    遇见第偶数次石子就忽略
    这样一直进行直到遇不见石子
    问最远的石子距离出发点有多远
    (总是从1出发)

    这里是一个不断把石子加入队列的过程
    直到队列为空(前方没有石子)
    运用优先队列可以方便的按照
    优先Pi再看Di的方式来取石子

    #include<stdio.h>
    #include<queue>
    using namespace std;
    struct node {
        int p,d;
        bool friend operator<(node A,node B) {
            if(A.p==B.p)
                return A.d>B.d;
            else
                return A.p>B.p;
        }
    } a;
    int main() {
        int T;
        scanf("%d",&T);
        while(T--) {
            priority_queue<node>q;
            int n;
            scanf("%d",&n);
            while(n--) {
                scanf("%d %d",&a.p,&a.d);
                q.push(a);
            }
            int time=0,flag=0;
            while(!q.empty()) {
                time++;
                if(time&1) {
                    a=q.top();
                    a.p+=a.d;
                    if(a.p>flag)
                        flag=a.p;
                    q.push(a);
                    q.pop();
                } else {
                    a=q.top();
                    if(a.p>flag)
                        flag=a.p;
                    q.pop();
                }
            }
            printf("%d
    ",flag);
        }
        return 0;
    }

    题目地址:【杭电】[1896]Stones

  • 相关阅读:
    shell 冒泡算法 解决数组排序问题
    react(二)
    react(一)
    mybatis-plus:3
    lambda
    配置中心(nacos)-控制台使用
    nacos作为配置中心的简单项目配置
    nacos作为注册中心的简单项目配置
    Vue初步学习
    nacos单例模式简单搭建
  • 原文地址:https://www.cnblogs.com/BoilTask/p/12569679.html
Copyright © 2020-2023  润新知