HDU 1896 Stones

66 篇文章 0 订阅

题意:sempr走在路上会遇见一些石头,如果遇见第奇数个石子,则将它扔到前面,如果是偶数,则什么也不做,如果某一个位置上有多个石头,则先遇见扔的比较近的那个,现在给出一些石头的初始位置和能够扔的距离,问到最后最远处的石头离初始位置多远!

#include "stack"
#include "cstdio"
#include "iostream"
#include "cmath"
#include "set"
#include "sstream"
#include "cctype"
#include "string"
#include "cstring"
#include "algorithm"
#include "queue"
#include "map"
using namespace std;
#define LL long long
#define inf 0x7ffffff
#define pa pair<int,int>
#define pi 3.1415926535897932384626433832795028841971

const int M=55;


struct node
{
 int p;
 int d;
 bool operator<(const node t) const
 {
  if(p!=t.p)
   return p>t.p;
  else
   return d>t.d;
 }
};

int main()
{
 int t,n,i,k;
 node temp;
 priority_queue<node> que;
 scanf("%d",&t);
 while(t--)
 {
  scanf("%d",&n);
  while(!que.empty())
   que.pop();
  for(i=0;i<n;i++)
  {
   scanf("%d%d",&temp.p,&temp.d);
   que.push(temp);
  }
  k=1;
  while(!que.empty())
  {
   temp=que.top();
   que.pop();
   if(k&1)
   {
    temp.p+=temp.d;
    que.push(temp);
   }
   k++;
  }
  printf("%d\n",temp.p);
 }
 return 0;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值