博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 1896.Stones 解题报告
阅读量:4948 次
发布时间:2019-06-11

本文共 1489 字,大约阅读时间需要 4 分钟。

题目链接:

题目意思:给出 n 块石头的初始位置和能到达的距离。对于第奇数次遇到的石头才抛掷,偶数次的就忽略。问最多能扔到多远。如果有多颗石头在一个位置,距离小的那个标记为先遇到的。

  所以先解说一下第二个测试案例:

  2

  1  5

  6  6

   

 

      在6这个位置的时候,由于5比6小,所以规定1(5)这个点是先遇上的,是偶数次遇到,所以忽略。

  用优先队列做,位置近的优先级越高,如果位置相同,距离短的优先级越高。

  

1 #include 
2 #include
3 #include
4 #include
5 using namespace std; 6 7 const int maxn = 100000 + 5; 8 struct node { 9 int P, D;10 bool operator < (const node& a) const {11 return P > a.P || (P == a.P && D > a.D);12 }13 };14 15 int main() {16 #ifndef ONLINE_JUDGE17 freopen("in.txt", "r", stdin);18 #endif // ONLINE_JUDGE19 20 int T, N;21 node stone;22 priority_queue
pq;23 while (scanf("%d", &T) != EOF) {24 while (T--) {25 scanf("%d", &N);26 for (int i = 0; i < N; i++) {27 scanf("%d%d", &stone.P, &stone.D);28 pq.push(stone);29 }30 int ans = 0;31 int judge = 1;32 while (!pq.empty()) {33 stone = pq.top();34 pq.pop();35 if (judge) {36 stone.P += stone.D;37 ans = stone.P;38 pq.push(stone);39 }40 judge = !judge;41 }42 printf("%d\n", ans);43 }44 }45 return 0;46 }

 

转载于:https://www.cnblogs.com/windysai/p/4295343.html

你可能感兴趣的文章
MongoDB的简单使用
查看>>
git clone 遇到的问题
查看>>
hdfs 命令使用
查看>>
hdu 1709 The Balance
查看>>
prometheus配置
查看>>
定宽320 缩放适配手机屏幕
查看>>
BZOJ 2120 数颜色 【带修改莫队】
查看>>
【noip2004】虫食算——剪枝DFS
查看>>
Codeforces 40 E. Number Table
查看>>
CLR via C#(第3 版)
查看>>
java语法之final
查看>>
关于响应式布局
查看>>
详解ASP.Net 4中的aspnet_regsql.exe
查看>>
python 多进程和多线程的区别
查看>>
hdu1398
查看>>
[android] 网络断开的监听
查看>>
156.Binary Tree Upside Down
查看>>
MongoDB在windows下安装配置
查看>>
Upselling promotion stored procedure
查看>>
mysql编码配置
查看>>