zoukankan      html  css  js  c++  java
  • HDU5090——贪心——Game with Pearls

    Problem Description
    Tom and Jerry are playing a game with tubes and pearls. The rule of the game is:

    1) Tom and Jerry come up together with a number K. 

    2) Tom provides N tubes. Within each tube, there are several pearls. The number of pearls in each tube is at least 1 and at most N. 

    3) Jerry puts some more pearls into each tube. The number of pearls put into each tube has to be either 0 or a positive multiple of K. After that Jerry organizes these tubes in the order that the first tube has exact one pearl, the 2nd tube has exact 2 pearls, …, the Nth tube has exact N pearls.

    4) If Jerry succeeds, he wins the game, otherwise Tom wins. 

    Write a program to determine who wins the game according to a given N, K and initial number of pearls in each tube. If Tom wins the game, output “Tom”, otherwise, output “Jerry”.
     
    Input
    The first line contains an integer M (M<=500), then M games follow. For each game, the first line contains 2 integers, N and K (1 <= N <= 100, 1 <= K <= N), and the second line contains N integers presenting the number of pearls in each tube.
     
    Output
    For each game, output a line containing either “Tom” or “Jerry”.
     
    Sample Input
    2 5 1 1 2 3 4 5 6 2 1 2 3 4 5 5
     
    Sample Output
    Jerry Tom
     
    Source
     

     大意:给出n个管子,以及管子里面珍珠的数目,问你向里面假如0或者k的倍数,是否能够满足i = a[i],如果都满足输出Jerry,没有考虑其他也可以转变成这个并不是一一对应的关系

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int a[150];
    int b[150];
    int main()
    {
        int T;
        int n,k;
        scanf("%d",&T);
        while(T--){
            memset(b,0,sizeof(b));
            scanf("%d%d",&n,&k);
            for(int i = 1; i <= n ; i++)
                scanf("%d",&a[i]);
            for(int i = 1; i <= n ; i++){
                for(int p = a[i]; p <= n ; p+=k){
                    b[p]++;
                }
            }
            int flag = 1;
            for(int i = 1; i <= n && flag ; i++){
                if(!b[i]){
                    flag = 0;
                    break;
                }
                else {
                    for(int j = i; j <= n ; j+=k)
                        b[j] --;
                }
            }
            if(flag)
                printf("Jerry
    ");
            else printf("Tom
    ");
        }
        return 0;
    }
    

      

  • 相关阅读:
    SDOI2015 寻宝游戏
    SDOI2015 排序
    CF 500G
    CF 506E
    CEOI2014 wall Spoiler
    java 反射
    安卓资源网站收集
    JNI学习2:android 调用C语言方法与C语言调用android方法
    自定义视图收藏
    Android开源项目第一篇——个性化控件(View)篇
  • 原文地址:https://www.cnblogs.com/zero-begin/p/4514954.html
Copyright © 2011-2022 走看看