cdoj1334郭大侠与Rabi-Ribi

 2023-09-05 阅读 39 评论 0

摘要:地址:http://acm.uestc.edu.cn/#/problem/show/1334 题目: 郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) SubmitStatus 最近郭大侠迷上了玩Rabi-Ribi这个游戏。 Rabi-Ribi呢,是一个打兔子的动作

 地址:http://acm.uestc.edu.cn/#/problem/show/1334

题目:

郭大侠与Rabi-Ribi

Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)
Submit Status

title

最近郭大侠迷上了玩Rabi-Ribi这个游戏。

Rabi-Ribi呢,是一个打兔子的动作冒险游戏,萌萌哒的兔子在地上跑来跑去,好萌好萌呀~

这个游戏是这样玩的,郭大侠作为一个主角,拿着一个小锤子,他的目标是敲晕兔子,然后最后把这些敲晕的兔子都带回家。

当然咯,郭大侠想带回的兔子的总价值最高~

但是,兔子实在是太多了,郭大侠的锤子每一秒钟只能敲晕一只兔子,而且每一只兔子只会在地面上逗留a[i]a[i]秒,在a[i]a[i]秒之后,这一只兔子就会跑回自己的小窝里面。

所以郭大侠面临一些抉择,希望你能帮助他。

Input

第一行包含一个整数NN表示有NN个兔子在地上跑来跑去。

第二行NN个用空格分隔的整数a[i]a[i]表示第i只兔子冒出后停留的时间

第三行NN个用空格分隔的整数v[i]v[i]表示第i只兔子的价值。

1N1000001≤N≤100000

1a[i]50001≤a[i]≤5000

1v[i]10001≤v[i]≤1000

Output

输出郭大侠最多能获得的价值是多少

Sample input and output

Sample InputSample Output
5
5 3 6 1 4
7 9 2 1 5
24
3
1 1 1
1 2 3
3

Hint

死宅真可怕,连可爱的兔子都要敲晕带回家 QAQ

思路:

。。大侠好残忍,兔子都打

         正如卿学姐所说倒着打就好了,把兔子消失的时间记为兔子出现的时间,然后倒着打兔子

用一个优先队列来维护兔子,每次打权重最大的,每过一秒就加进相应的兔子。。

就这个简单了。。

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstdio>
 4 #include <cmath>
 5 #include <cstring>
 6 #include <queue>
 7 #include <stack>
 8 #include <map>
 9 #include <vector>
10 #include <cstdlib>
11 #include <string>
12 #include <bitset>
13 
14 #define PI acos((double)-1)
15 #define E exp(double(1))
16 #define K 1000000
17 using namespace std;
18 vector<pair<int,int> >p;
19 priority_queue<int>q;
20 bool cmp(pair<int,int> c ,pair<int,int>d)
21 {
22     return c.first>d.first;
23 }
24 int main(void)
25 {
26     int n,ans=0,temp;
27     cin>>n;
28     for(int i=1;i<=n;i++)
29     {
30         scanf("%d",&temp);
31         p.push_back(make_pair(temp,0));
32     }
33 
34     for(int i=0;i<n;i++)
35         scanf("%d",&p[i].second);
36     sort(p.begin(),p.end(),cmp);
37     for(int i=p[0].first,t=0;i>0&&t<n;i--)
38     {
39         while(p[t].first==i && t<n)
40             q.push(p[t++].second);
41         if(!q.empty())
42            {
43                 ans+=q.top();
44                 q.pop();
45            }
46 
47     }
48     printf("%d\n",ans);
49     return 0;
50 }
View Code

 

 

转载于:https://www.cnblogs.com/weeping/p/5456005.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/1199.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息