Problem A. Game with pearls http://acmoj.shu.edu.cn/openjudge/viewproblem.php?coll_id=1&prob_id=350

贪心,每次选最小,看能否满足,用优先队列维护。

 1 #include<cstdio>
 2 #include<queue>
 3 using namespace std;
 4 struct G{
 5     int val;
 6     friend bool operator <(G a,G b){
 7         return a.val>b.val;
 8     }
 9 }now;
10 priority_queue<G> q;
11 int main(){
12     int t,n,k,x;
13     while(~scanf("%d",&t)){
14         while(t--){
15             scanf("%d%d",&n,&k);
16             while(!q.empty()) q.pop();
17             for(int i=0;i<n;i++){
18                 scanf("%d",&x);
19                 now.val=x;
20                 q.push(now);
21             }
22             bool ans=true;
23             for(int i=1;i<=n;i++){
24                 bool flag=false;
25                 while(!q.empty()){
26                     now=q.top();
27                     q.pop();
28                     if(now.val>i){
29                         break;
30                     }
31                     while(true){
32                         if(now.val>=i) break;
33                         now.val+=k;
34                     }
35                     if(now.val==i){
36                         flag=true;
37                         break;
38                     }
39                     q.push(now);
40                 }
41                 if(!flag){
42                     ans=false;
43                     break;
44                 }
45             }
46             if(ans) puts("Jerry");
47             else puts("Tom");
48         }
49     }
50     return 0;
51 }
View Code

相关文章:

  • 2022-12-23
  • 2022-01-06
  • 2021-09-08
  • 2021-06-22
  • 2022-01-04
  • 2021-07-13
  • 2021-11-21
  • 2021-05-21
猜你喜欢
  • 2021-10-01
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-24
  • 2022-12-23
相关资源
相似解决方案