题目

Alice 和 Bob 在一棵 \(n\) 个点的树上玩游戏,第 \(i\) 个节点上有 \(a_i\) 个石子,

每轮可以选择一个深度至少为 \(k\) 的节点并移动任意多石子到其 \(k\) 级祖先处,对每个结点询问如果将其作为根谁会赢。


分析

设\(dp[x][d]\)表示以 \(x\) 为根的子树离\(x\)的距离\(\bmod 2k\) 为 \(d\) 的SG值

由于先手移动偶数层后手可以用同样的方式移上去所以只需要考虑奇数层的SG值,

直接二次扫描换根即可


代码

#include <cstdio>
#include <cctype>
#define rr register
using namespace std;
const int N=100011; struct node{int y,next;}e[N<<1];
int dp[N][40],n,m,ans[N],a[N],et=1,as[N],f[40];
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline void dfs1(int x,int fa){
dp[x][0]=a[x];
for (rr int i=as[x];i;i=e[i].next)
if (e[i].y!=fa){
dfs1(e[i].y,x);
for (rr int j=0;j<m;++j)
dp[x][(j+1)%m]^=dp[e[i].y][j];
}
}
inline void dfs2(int x,int fa){
if (fa){
for (rr int j=0;j<m;++j) f[(j+1)%m]=dp[fa][(j+1)%m]^dp[x][j];
for (rr int j=0;j<m;++j) dp[x][(j+1)%m]^=f[j];
}
for (rr int i=as[x];i;i=e[i].next)
if (e[i].y!=fa) dfs2(e[i].y,x);
}
signed main(){
n=iut(),m=iut()<<1;
for (rr int i=1;i<n;++i){
rr int x=iut(),y=iut();
e[++et]=(node){y,as[x]},as[x]=et;
e[++et]=(node){x,as[y]},as[y]=et;
}
for (rr int i=1;i<=n;++i) a[i]=iut();
dfs1(1,0),dfs2(1,0);
for (rr int i=1;i<=n;++i){
for (rr int j=m/2;j<m;++j) ans[i]^=dp[i][j];
putchar((ans[i]>0)+48),putchar(32);
}
return 0;
}

#阶梯NIM,树形dp#CF1498F Christmas Game的更多相关文章

  1. [SDOI2019]移动金币(博弈论+阶梯Nim+按位DP)

    首先可以把问题转化一下:m堆石子,一共石子数不超过(n-m)颗,每次可以将一堆中一些石子推向前一堆,无法操作则失败,问有多少种方法使得先手必胜? 然后这个显然是个阶梯Nim,然后有这样的结论:奇数层异 ...

  2. Atcoder #014 agc014_D 树形DP+nim变形

    LINK 题意:两人在一颗树上做游戏,先手可以将树上一个节点染白,后手染黑,到最后时,所有与黑色相邻的白色同时变黑.如果还存在白色,先手胜,否则后手胜. 思路:首先不考虑树上,单独为链时,不管找规律也 ...

  3. Codeforces Round #384 (Div. 2)D - Chloe and pleasant prizes 树形dp

    D - Chloe and pleasant prizes 链接 http://codeforces.com/contest/743/problem/D 题面 Generous sponsors of ...

  4. poj3417 LCA + 树形dp

    Network Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4478   Accepted: 1292 Descripti ...

  5. COGS 2532. [HZOI 2016]树之美 树形dp

    可以发现这道题的数据范围有些奇怪,为毛n辣么大,而k只有10 我们从树形dp的角度来考虑这个问题. 如果我们设f[x][k]表示与x距离为k的点的数量,那么我们可以O(1)回答一个询问 可是这样的话d ...

  6. 【BZOJ-4726】Sabota? 树形DP

    4726: [POI2017]Sabota? Time Limit: 20 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 128  Solved ...

  7. 树形DP+DFS序+树状数组 HDOJ 5293 Tree chain problem(树链问题)

    题目链接 题意: 有n个点的一棵树.其中树上有m条已知的链,每条链有一个权值.从中选出任意个不相交的链使得链的权值和最大. 思路: 树形DP.设dp[i]表示i的子树下的最优权值和,sum[i]表示不 ...

  8. 树形DP

    切题ing!!!!! HDU  2196 Anniversary party 经典树形DP,以前写的太搓了,终于学会简单写法了.... #include <iostream> #inclu ...

  9. BZOJ 2286 消耗战 (虚树+树形DP)

    给出一个n节点的无向树,每条边都有一个边权,给出m个询问,每个询问询问ki个点,问切掉一些边后使得这些顶点无法与顶点1连接.最少的边权和是多少.(n<=250000,sigma(ki)<= ...

  10. POJ2342 树形dp

    原题:http://poj.org/problem?id=2342 树形dp入门题. 我们让dp[i][0]表示第i个人不去,dp[i][1]表示第i个人去 ,根据题意我们可以很容易的得到如下递推公式 ...

随机推荐

  1. 【libGDX】加载G3DJ模型

    1 前言 ​ libGDX 提供了自己的 3D 格式模型文件,称为 G3D,包含 g3dj(Json 格式)和 g3db(Binary 格式)文件,官方介绍见 → importing-blender- ...

  2. python运算符---day04

    1.python运算符 (1)算数运算符: + - * / // % ** (2)比较运算符: > < >= <= == != (3)赋值运算符:= += -= *= /= / ...

  3. 从0开始入门智能知识库和星火大模型,打造AI客服。

    介绍FastWiki FastWiki是一个高性能.基于最新技术栈的知识库系统,旨在为大规模信息检索和智能搜索提供解决方案.它采用微软Semantic Kernel进行深度学习和自然语言处理,在后端使 ...

  4. [学习笔记] Linux 环境下搭建基于Ngnix的反向代理服务

    ​之前为了方便同事测试微信小程序,搭建了基于CentOS的预发布环境,.Net5 程序也已经部署好在上面,在公网上可以通过http协议的临时域名(jevonsflash.xxx.net)访问到后台Ap ...

  5. 并发操作导致的BUG-解决方案

    一.问题由来 上周五项目发布新版本之后,生产环境一直没有出现什么问题,大家也都开开心心,平平安安的开始新需求的开发. 可是刚稳定运行没几天,负责人突然在群里面发了一个截图,从图片中的信息可以看到,有一 ...

  6. vue3 如果用ts,导出时候要用 defineComponent,这俩是配对的,为了类型的审查正确

    vue3 如果用ts,导出时候要用 defineComponent,这俩是配对的,为了类型的审查正确

  7. mybatis-plus处理blob字段

    转载自:www.javaman.cn 在 Spring Boot 项目中使用 MyBatis-Plus 处理 longblob 字段时,我们可以按照以下步骤进行操作.假设 longblob 存储的是字 ...

  8. Typora自定义主题详解--打造自己的专属样式

    你真的会使用Typora吗? 欢迎关注博主公众号「Java大师」, 专注于分享Java领域干货文章, 关注回复「主题」, 获取大师使用的typora主题: http://www.javaman.cn/ ...

  9. Android webview只加载10%且出现白屏问题排查解决

    原文:Android webview只加载10%且出现白屏问题排查解决 - Stars-One的杂货小窝 问题 有一个主页面,布局里是包含的一个自定义Webview,并且注入了些原生的方法进去,供原生 ...

  10. Navicat下载、安装、破解永久许可证密钥激活教程

    https://www.cnblogs.com/marchxd/p/15580739.html 如果破解机生成的激活码无效,试着在破解机的Products里选择Mysql选项,再重新生成激活码