洛谷 P2441 角色属性树
题目描述
绪萌同人社是一个有趣的组织,该组织结构是一个树形结构。有一个社长,直接下属一些副社长。每个副社长又直接下属一些部长……。
每个成员都有一个萌点的属性,萌点属性是由一些质数的萌元素乘积构成(例如,猫耳的值是2,弱气的值是3,黄毛的值是5,病娇的值是7,双马尾的值是11等等)
举个例子,正妹是双份的猫耳,而且有一份弱气,她的属性值为2*2*3=12。
现在组员关心一个问题,希望知道离自己最近且有相同萌元素上司是谁,例如,属性值为2、4、6、45这样的属性值都算是和正妹有相同的属性。
然而,组员可能会随时变化自己的属性。啊。。感觉好麻烦啊。。
输入输出格式
输入格式:
第一行,n,k 表示成员数与询问的次数
第二行,n个数,分别是1~n号成员的属性值
接下来n-1行,x_i,y_i 表示x_i是y_i的上司。
接下来来k行,有两种情况
1 u_i 询问离u_i成员最近且有相同萌元素上司。
2 u_i a 更改u_i的属性值为a
输出格式:
对于每个1类型的询问,输出符合要求的编号。如果没有符合要求的编号,输出-1。
输入输出样例
4 6
10 8 4 3
1 2
2 3
3 4
1 1
1 2
#include <bits/stdc++.h> using namespace std;
#define inf 0x3f3f3f3f
#define M 200200
int next[M],pre[M],last[M],n,query,meng[M],tot=,father[M];
bool vis[M];
int gcd (int a,int b){return b==?a:gcd(b,a%b);}//1行代码gcd
void addedge (int u,int v)
{
tot++;
next[tot]=v;//next数组存的是点
pre[tot]=last[u];//pre和last存的是边的编号
last[u]=tot;
}
void dfs (int x)
{
for (int i=last[x];i;i=pre[i])
father[next[i]]=x,dfs(next[i]);//每个点找上司
//因为树是按顺序建的,所以直接无脑搜索就行了,不用vis,因为不可能走重
}
int main() {
//freopen("de.txt","r",stdin);
scanf("%d%d",&n,&query);
memset(vis,false,sizeof vis);
for (int i=;i<=n;++i)
scanf("%d",&meng[i]);
for (int i=;i<n;++i)
{
int x,y;
scanf("%d%d",&x,&y);
addedge(x,y);
}
dfs();
for (int i=;i<query;++i)
{
int x,y,z,ans=-;
scanf("%d%d",&x,&y);
if (x==)
scanf("%d",&z),meng[y]=z;
else
{
for (int j=father[y];j;j=father[j])
{
int a=meng[y],b=meng[j];
if (a>b) swap(a,b);
if (gcd(a,b)!=)
{
ans=j;
break;
}
}
printf("%d\n",ans);
}
}
return ;
}
1 3
1 4
2 1 9
1 4
-1
1
2
-1
1 这道题看评论很水...反正就是练一下树状的结构。顺便学会了1行gcd。
代码如下:
洛谷 P2441 角色属性树的更多相关文章
- 2021.08.06 P2441 角色属性树(树形结构)
2021.08.06 P2441 角色属性树(树形结构) P2441 角色属性树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 求离x最近的祖先y且(x,y)>1. ...
- 洛谷1087 FBI树 解题报告
洛谷1087 FBI树 本题地址:http://www.luogu.org/problem/show?pid=1087 题目描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全 ...
- 洛谷P3018 [USACO11MAR]树装饰Tree Decoration
洛谷P3018 [USACO11MAR]树装饰Tree Decoration树形DP 因为要求最小,我们就贪心地用每个子树中的最小cost来支付就行了 #include <bits/stdc++ ...
- NOIP2017提高组Day2T3 列队 洛谷P3960 线段树
原文链接https://www.cnblogs.com/zhouzhendong/p/9265380.html 题目传送门 - 洛谷P3960 题目传送门 - LOJ#2319 题目传送门 - Vij ...
- 洛谷P3703 [SDOI2017]树点涂色(LCT,dfn序,线段树,倍增LCA)
洛谷题目传送门 闲话 这是所有LCT题目中的一个异类. 之所以认为是LCT题目,是因为本题思路的瓶颈就在于如何去维护同颜色的点的集合. 只不过做着做着,感觉后来的思路(dfn序,线段树,LCA)似乎要 ...
- 洛谷P3372线段树1
难以平复鸡冻的心情,虽然可能在大佬眼里这是水题,但对蒟蒻的我来说这是个巨大的突破(谢谢我最亲爱的lp陪我写完,给我力量).网上关于线段树的题解都很玄学,包括李煜东的<算法竞赛进阶指南>中的 ...
- 洛谷P3830 随机树(SHOI2012)概率期望DP
题意:中文题,按照题目要求的二叉树生成方式,问(1)叶平均深度 (2)树平均深度 解法:这道题看完题之后完全没头绪,无奈看题解果然不是我能想到的qwq.题解参考https://blog.csdn.ne ...
- 洛谷 P3714 - [BJOI2017]树的难题(点分治)
洛谷题面传送门 咦?鸽子 tzc 竟然来补题解了?incredible( 首先看到这样类似于路径统计的问题我们可以非常自然地想到点分治.每次我们找出每个连通块的重心 \(x\) 然后以 \(x\) 为 ...
- 洛谷 P2590 [ZJOI2008]树的统计(树链剖分)
题目描述一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w. 我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v ...
随机推荐
- mock.js模拟生成假数据
mock使用方法很简单, 下面是简单的用法, 详细的用法可以看官方文档, 写的很清楚, 下面的代码直接拷贝到本地html文件, 双击打开即可生成你想要的数据 <!DOCTYPE html> ...
- SQLmap注入
一.安装 先安装Python2.7 下载SQLmap:http://sqlmap.org/ 下载文件解压到Python文件目录下 然后设置环境变量:D:\Python27\sqlmap 在cmd查看是 ...
- mysql中or和in,in和exists的效率问题
mysql中or和in的效率问题 在网上一直看到的是or和in的效率没啥区别,一直也感觉是这样,前几天刚好在看<mysql数据库开发的36条军规>的文章,里面提到了or和in的 ...
- ruby+selenium-webdriver一步一步完成自动化测试-----准备篇
这一系列文章目的不是讲ruby,也不是讲selenium-webdriver,而是通过一个登录soso首页的小例子讲怎样一步一步写好自动化测试.目标是:面向对象编程,实现逻辑与数据分离. 如果你觉得已 ...
- 102.kaldi 斯坦福语音识别工具的编译
接着上一节,在编译完了openFST有限状态机之后,便开始了最重要部分,语音识别插件的编译过程 首先看目录是如下所示的 1.首先添加openBLAS的支持,这是一个矩阵运算库,个人觉得这个矩阵运算库 ...
- scrapy错误-[scrapy.core.scraper] ERROR: Spider error processing
一.问题,就是我的callback没得回调函数 二:然后我查看源代码,发现: 三.我把解析页数的函数名设置为,def parse(self,response): 就没保错了 能运行成功 总结:在sp ...
- luoguP1083 借教室(题解)(我用的线段树)
luoguP1083 借教室 题目 #include<cstdio> #include<iostream> #include<cmath> #include< ...
- python第三方库安装失败处理方法
各位道友,是不是在使用pip 命令安装第三方库遇到了以下情形呢? 这种情况可真让人头疼啊..经过几番周折,终于找到了认为最有效的解决方法 首先 先把要安装的包下载下来,不管用什么方式 在这里我用的迅雷 ...
- BUUCTF 梅花香自苦寒来
梅花香自苦寒来 打开图片可以看到,在jpg后面有大量的数据,将它保存出来,可以看出是十六进制,将它转为ascii,写脚本 with open('hex.txt','r') as h: h=h.read ...
- SetViewportOrgEx和SetWindowOrgEx
在MM_TEXT映射模式下使用这两个函数. 对于 BOOL SetViewportOrgEx( HDC hdc, // 设备内容HANDLE int X, // 新Viewport的x坐标 int Y ...