zoukankan      html  css  js  c++  java
  • 洛谷 P1288 取数游戏II(博弈论)

    传送门


    解题思路

    设置状态(x--你在这里--y)表示所处的点两边的边权分别为x和y
    考虑终止状态(0--你在这里--0)能由什么状态转移过来:

    • (k--你在这里--x---0)经过边x并把边x的边权设置为0 -->必胜

    (貌似就一种)
    很显然每次都会选择使经过的边权为0(否则先手等于把先手权交到了对方手中或者直接失败)(重点,敲黑板)
    所以实际上答案就和起始位置向左或向右到边权为0的边的奇偶性有关(有一边是奇数先手即可获胜)。

    AC代码

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<iomanip>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    int n,a[25],cnt1,cnt2; 
    int main(){
    	cin>>n;
    	for(int i=1;i<=n;i++) cin>>a[i];
    	for(int i=1;i<=n;i++){
    		if(a[i]==0) break;
    		cnt1++;
    	}
    	for(int i=n;i>=1;i--){
    		if(a[i]==0) break;
    		cnt2++;
    	}
    	if(cnt1&1||cnt2&1) cout<<"YES";
    	else cout<<"NO";
        return 0;
    }
    
  • 相关阅读:
    网络面试题2
    网络
    Linux os
    操作系统面试题2
    操作系统面试题
    Linux
    算法-字符全排列
    第k大数问题
    地址
    ListView里面嵌套CheckBox
  • 原文地址:https://www.cnblogs.com/yinyuqin/p/14880226.html
Copyright © 2011-2022 走看看