C. cltt的幸运数LCAtarjan
/*C: cltt的幸运数
Time Limit: 1 s Memory Limit: 128 MB
Submit
Problem Description
一棵树有n个节点,共m次查询,查询a,b的最近公共祖先是否为好数?若好数的数目是幸运数,输出YES,否则输出NO。
好数:可以表示为2的指数幂。如:1, 2,4,8,16,32,……
幸运数就是素数。
Input
nn(nn表示节点数目,接下来n−1n−1行,每行两个整数 x,yx,y 其中xx是yy的父节点)
mm(表示查询数目,接下来mm行,每行两个整数a,ba,b)
(1≤n≤105,1≤m≤10)(1≤n≤105,1≤m≤10)
Output
YESYES or NONO
Sample Input
12
1 2
1 3
2 5
3 4
3 6
4 7
7 9
7 10
6 8
8 11
8 12
4
9 8
4 7
11 12
10 7
Sample Output
YES*/
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
struct node
{
int fa;
bool vis;
}p[100001];
bool check(int x)
{
if(x==0||x==1)return 0;
if(x==2)return 1;
for(int i=2;i*i<=x;i++)
if(x%i==0)
return 0;
return 1;
}
int lca(int x,int y)
{
p[x].vis=1;
while(x!=p[x].fa)//往上遍历到0
{
p[x].vis=1;
x=p[x].fa;
}//printf("%d\n",x);
while(y!=p[y].fa)//无公共祖先时y=0;
{
if(p[y].vis)
break;
y=p[y].fa;
}//printf("%d\n", y);
return y;
}
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
p[i].fa=0;
for(int i=1;i<n;i++)
{
int x,y;
scanf("%d%d",&x,&y);
p[y].fa=x;
}
int o;
int cnt=0;
scanf("%d",&o);
for(int i=0;i<o;i++)
{
int x,y;
scanf("%d%d",&x,&y);
for(int i=0;i<=100001;i++)
p[i].vis=0;
int ans=lca(x,y);
if(!(ans&(ans-1)))//0是本题特例,一般情况写if(ans!=0&&!(ans&ans-1))
cnt++;//printf("%d\n",cnt );
}
if(check(cnt))
printf("YES\n");
else
printf("NO\n");
return 0;
}
C. cltt的幸运数LCAtarjan的更多相关文章
- C. cltt的幸运数LCAdfs
/*C: cltt的幸运数 Time Limit: 1 s Memory Limit: 128 MB Submit Problem Description 一棵树有n个节点,共m次查询,查询 ...
- 京东2017校园招聘笔试题 【第K个幸运数】
题目描述 4和7是两个幸运数字,我们定义,十进制表示中,每一位只有4和7两个数的正整数都是幸运数字. 前几个幸运数字为:4,7,44,47,74,77,444,447... 现在输入一个数字K,输出第 ...
- [COJ0528]BJOI幸运数
[COJ0528]BJOI幸运数 试题描述 输入 见"试题描述" 输出 见"试题描述" 输入示例 见"试题描述" 输出示例 见"试 ...
- [51NOD1230]幸运数(数位DP)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1230 dp(l,s,ss)表示长度为l的数各位和为s,各位平方 ...
- Problem 1007 幸运数 线段树成段更新
题目链接: 题目 Problem 1007 幸运数 Time Limit: 2000 mSec Memory Limit : 131072 KB 问题描述 皮特的幸运数是2和5.只由幸运数字2和5组成 ...
- pongo英雄会-幸运数题解
显然我们只要知道1~x范围有多少幸运数(用f(x)表示),lucky(x,y)=f(y)-f(x-1). 解法1. 计算排列数 由于y<=1000000000这个规模,我们不能暴力验证每个数是否 ...
- Python 计算当真因子个数为偶数个时为幸运数,计算区间内幸运数之和
晚饭后朋友发来个问题,正好无事做,动手写了一下 若一个正整数有偶数个不同的真因子,则称该数为幸运数.如4含有2个真因子为 1 和 2 .故4是幸运数.求[2,100]之间的全部幸运数之和. 常规思路 ...
- 蓝桥杯 历届试题 幸运数 dfs
历届试题 幸运数 时间限制:1.0s 内存限制:256.0MB 问题描述 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的"筛法"生成 . 首先从1开始写出自然数1,2, ...
- [蓝桥杯]PREV-10.历届试题_幸运数
问题描述 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的“筛法”生成 . 首先从1开始写出自然数1,,,,,,.... 就是第一个幸运数. 我们从2这个数开始.把所有序号能被2整除的项删除,变 ...
随机推荐
- 使用Numpy将数据集中的data和target同时shuffle
假设现在有图像数据imgs和对应标签targets.数据维度分别如下 imgs.shape = (num, channel, width, height) targets.shape = (num, ...
- RVIZ 保存配置 and 使用配置
每次无参数启动RVIZ, 都会使用配置 -/.rviz/default.rviz 如果每次是正常退出的话,上一次的配置会被保存到文件-/.rviz/default.rviz 需要另外保存成配置文件的话 ...
- Linux下查询文件的md5,sha1值
验证下载下来的文件包是不是一致 ··· 验证md5值 #md5sum filename 验证shal值 #sha1sum filename ···
- Python3-进程
进程 什么是进程 进程调度 进程的并行与并发 进程的创建与结束 在python程序中的进程操作 守护进程 进程同步(multiprocess.Lock) 进程间通信——队列 生产者消费者模型 进程池和 ...
- dubbo源码分析11——服务暴露2_doExport()方法分析
protected synchronized void doExport() { //如果是已经解除暴露的接口则抛出异常 if (unexported) { throw new IllegalStat ...
- Linux内存管理 (10)缺页中断处理【转】
转自:https://www.cnblogs.com/arnoldlu/p/8335475.html 专题:Linux内存管理专题 关键词:数据异常.缺页中断.匿名页面.文件映射页面.写时复制页面.s ...
- jquery获取、设置、删除cookie
获取cookie: function getCookie(cname) { var name = cname + "="; var ca = document.cookie.spl ...
- lvs为何不能完全替代DNS轮询
1)接入层架构要考虑的问题域为:高可用.扩展性.反向代理+扩展均衡 2)nginx.keepalived.lvs.f5可以很好的解决高可用.扩展性.反向代理+扩展均衡的问题 3)水平扩展scale o ...
- web页面加载、解析、渲染过程
仅做学习参考,侵权删 原文链接:风吹De麦浪 https://www.cnblogs.com/CandyManPing/p/6635008.html 一.浏览器 浏览器的主要功能是将用户选择的we ...
- Laravel 5.2分页--怎么在一个页面实现两个以上的列表分页,互不影响?
今天就碰到这样的一个问题?想在一个页面里面放两个列表,并且两个列表都可以进行分页. 但是,laravel提供的分页方法很方便,可是两个以上就出问题了,当我点其中一个分页的链接时候,页面上其余的分页跟着 ...