[lnsyoj1158] 淘淘蓝蓝之幻影树

题意

image

sol

若某一方胜利,则设该方战胜的区间为 \([l_i,r_i]\),那么过程可描述为 \(1\) 打败 \([l_1,r_1]\)\(2\) 打败 \(l_2,r_2\)…………\(k\) 打败 \([l_k,r_k]\)。显然,\(k\) 打败 \([l_k,r_k]\)…………\(2\) 打败 \(l_2,r_2\)\(1\) 打败 \([l_1,r_1]\) 与之等价,即顺序的正反对结果没有影响。
因此可以将序列翻转进行计算。设 \(f_{u,j}\) 表示从第 \(u\) 个点开始,会被上方的哪一个点击败,特别地,若全部战胜则 \(f_{u,j}=0\)。那么每次操作可以将序列倒序并进行处理,若最终结果为 \(0\) 则胜利,否则失败。

\[f_{u,j}=\left\{\begin{matrix} f_{father,j}(win_{j,c[u]}=true) \\ u(win_{j,c[u]}=false) \end{matrix}\right. \]

代码

#include <iostream>
#include <algorithm>
#include <cstring>using namespace std;const int N = 200005, M = N * 2, K = 25;int h[N], e[M], ne[M], idx;
int vs[K][K];
int n, m, q;
int c[N], f[N][K];
int w[N];void add(int a, int b){e[idx] = b, ne[idx] = h[a], h[a] = idx ++ ;
}void dfs_init(int u, int father){for (int i = 1; i <= m; i ++ ) if (vs[i][c[u]]) f[u][i] = f[father][i];else f[u][i] = u;for (int i = h[u]; ~i; i = ne[i]){int j = e[i];if (j == father) continue;dfs_init(j, u);}
}int main(){// freopen("ex_tree.in", "r", stdin);memset(h, -1, sizeof h);scanf("%d%d%d", &n, &m, &q);for (int i = 1; i <= m; i ++ )for (int j = 1; j <= m; j ++ )scanf("%d", &vs[i][j]);for (int i = 1; i <= n; i ++ ) scanf("%d", &c[i]);for (int i = 1; i < n; i ++ ){int x, y;scanf("%d%d", &x, &y);add(x, y), add(y, x);}dfs_init(1, 0);while (q -- ){int k, p;scanf("%d%d", &k, &p);for (int i = 1; i <= k; i ++ ) scanf("%d", &w[i]);for (int i = k; i; i -- ) p = f[p][w[i]];if (p) puts("0");else puts("1");}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/880211.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NAS——强化学习结合CNN

一. 子模型的基本架构子模型由N个卷积单元和M个缩减单元按一定规则排列后加上GAP层、FC层和Softmax层组成。关键:通过引入卷积单元和缩减单元,充分发挥了CNN模型强大的特征提取能力。 整个结构中后面三层是确定的,中间的卷积单元和缩减单元要从搜索空间中获取。 二. 搜索空间…

Learn Learn Go Reverse

根据做题学习 [i春秋ezgo]Go栈扩容的逻辑,这里无需关注。具体汇编代码输入函数与输出函数系统学习go reverse 参考文章: https://forum.butian.net/share/1874 Go基础 见 https://forum.butian.net/share/1874 查看Go版本 //一、查看版本号 go version xx.exe //二、查看地址以…

Learn Learn Android Reverse

安卓基础 NDK开发 jni调用什么是jni?jni是Java Native lnterface的缩写。从java1.1开始,jni标准成为Java平台的一部分,允许Java代码和其他语言写的代码进行交互GetStringUTFChars();将java字符串转换为c字符串.java的字符串在虚拟机中,通过硬编码调用,cstring在内存中.env-&g…

2016蓝桥杯省赛B组

2016蓝桥杯省赛B组 1.煤球数目#include<bits/stdc++.h>using namespace std;int dp[200];int main(){ int sum=0; for(int i=1;i<=100;i++){ dp[i]=dp[i-1]+i; sum+=dp[i]; } cout<<sum; return 0;} 思路: 每一层煤球个数 0+1-&g…

css3手册

布局浮动:做文字环绕效果 弹性盒:单行或单列布局 网格:多行多列布局 弹性盒详细文档见MDN 弹性盒小游戏生成弹性容器和弹性项目默认情况下,弹性项目沿着主轴依次排列,侧轴拉伸 更改方向 通过flex-direction可更改主轴方向主轴排列 通过justify-content属性,可以影响主轴的…

CNN

具体在第五次汇报卷积神经网络是多层感知机(MLP)的变种。卷积神经网络(Convolutional Neural Networks)是一种包含卷积计算且具有深度结构的前馈神经网络,CNN具有表征学习的能力,能够按阶层对输入数据进行平移不变分类。CNN的设计灵感来源于动物视觉系统分级处理信息的能力…

LSTM(Long Short-Term Memory)长短时记忆结构

随着RNN在长序列处理中的应用深入,发现了其难以捕捉长距离依赖的问题。LSTM是传统RNN的变体,与经典RNN相比能够有效捕捉长序列之间的语义关联,通过引入了“记忆单元”(Memory Cell)和“门控机制”来控制信息的流动,解决了标准RNN中梯度消失和梯度爆炸的问题。其核心结构可…

MDB2PPT_v2.0 mdb数据转换为PPT

前言: 本软件原名“DataToPowerPoint”,已有将近20年的历史,目的是方便将mdb数据库中的数据导出为ppt进行学习或讲座。2007-9-29曾发布于“网上读书园地”,原先为共享软件,未注册版本有功能限制,如:至多输出30条数据、不能使用高级功能。近期对软件界面的布局等作了一些…

2.7 完成剩余表

今天完成了作业中所有表的建立,还剩余历史查询功能计划明天完成所有内容,并进行测试 今天还通过视频进一步学习了javaweb的知识

RNN

一.RNN介绍在学习LSTM之前,得先学习RNN。RNN实际上就是一个带有记忆的时间序列的预测模型。RNN的基本结构包括输入层、隐藏层和输出层。在RNN中,输入序列被分成多个时间步,每一个时间步都对应于序列中的一个元素。每个时间步更新一个隐藏状态(Hidden State),该状态不仅接…

每日练习 25.2.7

Guess the K-th Zero (Hard version) 题目 这是一个交互问题。 这是问题的困难版本。与简单版不同的是,在困难版中,查询次数为 \(1 \le t \le \min(n, 10^4)\),查询总数限制为 \(6 \cdot 10^4\)。 波利卡普正在玩一个电脑游戏。在这个游戏中,一个由 \(0\) 和 \(1\) 组成的数…

树上邻域理论(树上圆理论) 小记

邻域:记 \(f(u, r)\) 表示距离 \(u\) 不超过 \(r\) 的点组成的邻域。令 \(x, y\) 为点集 \(S\) 中两个距离最远的点,设 \(u\) 为 \(x, y\) 中点(可能是一条边的中心),设 \(d\) 为 \(x, y\) 的距离,那么覆盖 \(S\) 的最小邻域为 \(f(u, \frac d2)\)。邻域 \(f(u_1, r_1)\)…