zoukankan      html  css  js  c++  java
  • NIM游戏

    这是一个NIM游戏,可以直接通过判断异或操作判断序列{a1,a2,...,an}是否为p-positon(即 a1^a2^...^an),不过因为1=<n<=10^5, mi<=10^16,导致参与异或运算的数会特别多,可以通过(n*4)^(n*4+1)^(n*4+2)^(n*4+3) = 0  ,n属于N。来进行计算优化。

    实现代码如下:

     1 import java.util.Scanner;
     2 
     3 public class Main {
     4 
     5     public static long xor_fn(long val, long l) {
     6         long ans = 0;
     7         for (int i = 0; i < l; i++) {
     8             ans ^= (val + i);
     9         }
    10         return ans;
    11     }
    12 
    13     public static void main(String[] args) {
    14         Scanner scan = new Scanner(System.in);
    15         
    16         while (scan.hasNext()) {
    17             int n = scan.nextInt();
    18             long grundy = 0;
    19             for (int i = 0; i < n; i++) {
    20                 long ans = 0;
    21                 long x = scan.nextLong();
    22                 long m = scan.nextLong();
    23                 if (m > 6) {
    24                     long y = x + m - 1, var = 0, var1 = 0;
    25                     if (x % 4 != 0) {
    26                         long t = 0;
    27                         if (x % 4 == 1)
    28                             t = 3;
    29                         else if (x % 4 == 2)
    30                             t = 2;
    31                         else if (x % 4 == 3)
    32                             t = 1;
    33                         var = xor_fn(x, t);
    34                     }
    35                     if (y % 4 != 3) {
    36                         long k = y % 4 + 1;
    37                         var1 = xor_fn(y - k + 1, k);
    38                     }
    39                     ans = var ^ var1;
    40                 } else {
    41                     ans = xor_fn(x, m);
    42                 }
    43                 grundy ^= ans;
    44             }
    45             System.out.println(((grundy > 0) ? "first" : "second"));
    46         }
    47         scan.close();
    48     }
    49 
    50 }
  • 相关阅读:
    poj 1456 贪心+STL
    hdu 4283 区间dp
    hdu 4745 区间dp
    hdu 3652 数位dp
    poj 2955 区间dp
    ubuntu apache2配置详解(含虚拟主机配置方法)
    从 mysql 客户端导出数据库 mysqldump
    Git 版本回退问题详解
    SEO 外链 内链 的定义
    为项目编写Readme.MD文件
  • 原文地址:https://www.cnblogs.com/jade640/p/6765747.html
Copyright © 2011-2022 走看看