zoukankan      html  css  js  c++  java
  • Problem G. Wiki with Alpha

    最近,在拉布拉多星球举办了一场举世瞩目的人机智力pk赛。当然pk赛的主角依然是我们的Wiki同学,
    他的对手是一个名为"Alpha"的超强机器人!比赛规定最终获得胜利的一方将会得到"卡哇伊"魔法权杖,
    得到权杖的一方也将统治拉布拉多星球。
    已知"卡哇伊"魔法权杖需要注入能量才能发挥威力。现在比赛现场一共有k种的能量水晶,不同的水晶可
    能具有不同的能力值ai且每种能量水晶可以被使用无限次
    现在比赛要求选手轮流将能量水晶注入魔法权杖之中,选手每次可以在这k种水晶中挑选任意一个注入魔
    法权杖(选中的水晶必须用完,不能剩余),谁先为权杖注满能量(这里假设魔法权杖所需能量值为n,
    满意味着刚好等于n,不能多于n),谁就赢得胜利。
    由于在抛硬币的过程中, Wiki赢得了胜利,因此, Wiki先进行能量注入, Alpha后进行,然后依次轮流
    下去,直到比赛结束。
    众所周知, WikiAlpha都绝顶聪明,请问谁将赢得最终胜利?如果Wiki得到"卡哇伊"魔法权杖,请输
    "Wiki Wins";否则,输出"Wiki Loses"

    Input
    第 一 行 输 入 两 个 正 整 数nk, 表 示 魔 法 权 杖 需 要 的 能 量 值 和 能 量 水 晶 的 种 类 个
    (1 <= n <= 100000; 1 <= k <= 100)
    接下来输入k个正整数ai(1 <= ai <= 10000),表示每种水晶的能量值,数与数之间用一个空格隔开(题目
    保证ai中至少有一个为1
    Output
    输出比赛结果
    Samples

    standard input standard output
    5 2
    1 4
    Wiki Loses
    10 8
    2 1 6 7 8 10 9 20
    Wiki Wins


    思路:从小到大枚举能量值,只要当前的能量小于枚举的能量值以及枚举的能量值减去当前的能量值是false(是false)表示是对手获胜
    最后判断目标能量值是否是true即可

    #include <iostream>
    
    using namespace std ;
    
    const int N = 100010, M = 110 ;
    
    bool f[N] ;
    int w[M] ;
    int n, m ;
    
    int main(){
        cin >> m >> n ;
        
        for(int i=0;i<n;i++) cin >> w[i] ;
        
        for(int i=1;i<=m;i++){
            for(int j=0;j<n;j++){
                if(i>=w[j] && !f[i-w[j]]){
                    f[i] = true ;
                    break ;
                }
            }
        }
        if(f[m]){
            cout << "Wiki Wins" << endl ;
        }else{
            cout << "Wiki Loses" << endl ;
        }
        return 0 ;
    }

    ...

  • 相关阅读:
    awk 入门教程【转】
    xargs 命令教程【转】
    redis 执行lua脚本
    SpringMVC 执行过程分析
    EurekaClient 服务注册、发现、续约
    Springboot 自动配置 & 自定义Starter
    Netty 实现HttpServer
    Spring中@Import 用法
    Netty自定义任务&Future-Listener机制
    Springboot + Netty + WebSocket 实现简单的聊天
  • 原文地址:https://www.cnblogs.com/gulangyuzzz/p/12560310.html
Copyright © 2011-2022 走看看