山治的婚约

Description

我们知道,山治原来是地下有名的杀人家族文斯莫克家族的三子,目前山治的弟弟已经出现,叫做四治,大哥二哥就叫汪(One)治跟突(Two)治好了(跟本剧情无关) 。山治知道自己跟夏洛特家族有婚约之时,决定参加大妈的茶会,跟父亲做个了断。然而夏洛特公主早已看穿了一切,她给山治出了个难题,如果山治能够解决难题,夏洛特公主就帮助山治解除婚约。公主安排了 N 只拿着蛋糕的猴子,排成一列,每只猴子都有自己的初始位置 Pi 和行动量 Di,山治从前往后夺取猴子的蛋糕,因为光谱踢技能的冷却时间太久,每干掉一直猴子,来不及对其后面的猴子下手,其后面的第一只猴子就会往后逃跑一段距离 Di,重新插入到队伍中。这时又可以对接下来的猴子动手,夺取蛋糕,公主答应只要山治知道自己夺得所有蛋糕需要移动多远,就算通过了考验。山治的幸福就交给大家了。
注:如果两只猴子在同一位置,可以看做两只猴子一前一后,初始位置小的在前假设山治的初始位置为 0

Input

第一行给出整数 N,猴子的数量
接下来 N 行,每行两个整数,Pi 和 Di
其中 0<N<=10000,并保证所有数据在 INT 范围内,保证每只猴子的初始位置都不同

Output

输出一个整数,表示山治夺得所有蛋糕需要移动多远

Sample Input

8 112 26 63 35 54 47 78 8

Sample Output

24

思路

题目给出的样例解释感觉反而会误导别人,所以就没有把它放出来。就是一排猴子,然后山治从0起点沿路下去打猴子,用优先队列模拟一下就好。

 AC代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int maxn = 10005;  

struct Node{
    int pi,di,id;
    bool operator <(const Node &a)const
    {
        if (pi == a.pi) return id > a.id;
        return pi > a.pi;
    }
};  

int main()
{
    //freopen("input.txt","r",stdin);
    int N,i;
    priority_queue<Node>pque;
    Node ptmp;
    scanf("%d",&N);
    for (i = 0;i < N;i++)
    {
        scanf("%d%d",&ptmp.pi,&ptmp.di);
        ptmp.id = ptmp.pi;
        pque.push(ptmp);
    }
    i = 1;
    while (!pque.empty())
    {
        ptmp = pque.top();
        pque.pop();
        if (!i)
        {
            ptmp.pi += ptmp.di;
            pque.push(ptmp);
        }
        i = !i;
    }
    printf("%d\n",ptmp.pi);
    return 0;
}

  

数据结构作业——Sanji(优先队列)的更多相关文章

  1. 数据结构作业——ギリギリ eye(贪心+优先队列/贪心+并查集)

    ギリギリ eye Description A.D.1999,由坠落地球的“谜之战舰”带来的 Over Technology,揭示了人类历史和远古文明之间的丝丝联系, 促使人类终止彼此间的战争,一方面面 ...

  2. 数据结构作业——Fresh Meat(优先队列)

    Fresh Meat Description 我们故事的主角是屠夫扒鸡,起初屠夫扒鸡只是一个佣兵,他先去拜了太上老君为师,学了一技能肉钩,凭着一技肉钩驰骋决斗场,达到一段以后到阿尔伯特那里偷学了二技能 ...

  3. 数据结构与算法——优先队列类的C++实现(二叉堆)

    优先队列简单介绍: 操作系统表明上看着是支持多个应用程序同一时候执行.其实是每一个时刻仅仅能有一个进程执行,操作系统会调度不同的进程去执行. 每一个进程都仅仅能执行一个固定的时间,当超过了该时间.操作 ...

  4. 数据结构-堆实现优先队列(java)

    队列的特点是先进先出.通常都把队列比喻成排队买东西,大家都非常守秩序,先排队的人就先买东西. 可是优先队列有所不同,它不遵循先进先出的规则,而是依据队列中元素的优先权,优先权最大的先被取出. 这就非常 ...

  5. 数据结构作业——buzhidao(队列)

    buzhidao Description 有一个长度为 n 的序列,第 i 个数的大小为 a[i].现在从第 1 个数开始从左往右进行以下操作:1. 如果当前数是剩下的数中最大的,则输出并删去这个数. ...

  6. 数据结构作业——expectation(树形dp+dfs)

    expectation Description 给出一棵带权值的树,我们假设从某个节点出发,到目标节点的时间为两个节点之间的最短路.由于出发节点不好选取,所以选在每个节点都有一定的概率,现在我们要求从 ...

  7. 数据结构作业——hash(字符串哈希)

    Hash Description 给定长度为 n ( n<=1000000)的字符串,字符串仅由小写字母的前 m ( m<=6) 个字符组成,请你计算出共有多少长度为 k( k<=6 ...

  8. 数据结构作业之用队列实现的基数排序(Java版)

    题目: 利用队列实现对某一个数据序列的排序(采用基数排序),其中对数据序列的数据(第1和第2条进行说明)和队列的存储方式(第3条进行说明)有如下的要求: 1)当数据序列是整数类型的数据的时候,数据序列 ...

  9. 数据结构作业——brothers(二叉树)

    brothers Description 给你一棵节点编号从 1 到 n 的,根节点为 1 的二叉树.然后有 q 个询问,每个询问给出一个整数表示树的节点,要求这个节点的兄弟节点数目和堂兄弟节点的数目 ...

随机推荐

  1. js实现toggleClass

  2. 从Java String实例来理解ANSI、Unicode、BMP、UTF等编码概念

    转(http://www.codeceo.com/article/java-string-ansi-unicode-bmp-utf.html#0-tsina-1-10971-397232819ff9a ...

  3. iOS陀螺仪 参数意义

    self.mManager = [[CMMotionManager alloc]init]; self.mManager.deviceMotionUpdateInterval = 0.5; if (s ...

  4. Android开发学习—— ContentProvider内容提供者

    * 应用的数据库是不允许其他应用访问的* 内容提供者的作用就是让别的应用访问到你的数据库.把私有数据暴露给其他应用,通常,是把私有数据库的数据暴露给其他应用. Uri:包含一个具有一定格式的字符串的对 ...

  5. UITableView点击每个Cell,Cell的子内容的收放

    关于点击TableviewCell的子内容收放问题,拿到它的第一个思路就是, 方法一: 运用UITableview本身的代理来处理相应的展开收起: 1.代理:- (void)tableView:(UI ...

  6. 【代码笔记】iOS-获得当前硬盘空间

    一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...

  7. Hibernate 系列 03 - 使用Hibernate完成持久化操作

    引导目录: Hibernate 系列教程 目录 康姆昂,北鼻,来此狗.动次打次,Hibernate继续走起. 目录: 使用Hibernate实现按主键查询 使用Hibernate实现数据库的增.删.改 ...

  8. T-SQL 实现行转列

    问题: 我正在寻找一种有效的方式将行转换为SQL服务器中的列 例如,通过下表如何构建出预期结果表. Id  Value   ColumnName 1   John    FirstName 2   2 ...

  9. Oracle导出excel

    oracle导出excel(非csv)的方法有两种,1.使用sqlplus  spool,2.使用包体 现将网上相关代码整理后贴出以备不时之需: 使用sqlplus: 使用sqlplus需要两个文件: ...

  10. SQL Server 2008 R2:快速清除日志文件的方法

    本例,快速清理“students”数据库的日志,清理后日志文件不足1M. USE [master] GO ALTER DATABASE students SET RECOVERY SIMPLE WIT ...