Codeforces Round #316 (Div. 2) D. Tree Requests dfs_clock,二分
2015-08-16 01:07
537 查看
将每一层的字符保存下来,并算出没个节点的时间戳,然后就可以二分查找了,当奇数个字符<=1就可以构成回文,用二进制处理一下。
#include<iostream> #include<cstring> #include<cstdio> #include<ostream> #include<istream> #include<algorithm> #include<queue> #include<string> #include<cmath> #include<set> #include<map> #include<stack> #include<vector> #define fi first #define se second #define pii pair<int,int> #define inf (1<<30) #define eps 1e-8 #define ll long long using namespace std; const int maxn=510005; int n,m; vector<int>g[maxn]; char s[maxn]; vector<int>dep[maxn]; vector<int>op[maxn]; int id[maxn][2]; int deep[maxn]; int mx[maxn]; int dfs_clock=1; void dfs(int u,int d) { deep[u]=mx[u]=d; id[u][0]=dfs_clock++; dep[d].push_back(1<<(s[u]-'a')); op[d].push_back(id[u][0]); for(int i=0;i<g[u].size();i++) { dfs(g[u][i],d+1); mx[u]=max(mx[u],mx[g[u][i]]); } id[u][1]=dfs_clock++; } int main() { int p; scanf("%d%d",&n,&m); for(int i=2;i<=n;i++) { scanf("%d",&p); g[p].push_back(i); } scanf("%s",s+1); dfs(1,1); for(int i=1;i<=n;i++) { for(int j=1;j<dep[i].size();j++) { dep[i][j]^=dep[i][j-1]; } } int u,h; for(int i=0;i<m;i++) { scanf("%d%d",&u,&h); if(h<=deep[u] || h>mx[u]) { printf("Yes\n"); } else { int i=upper_bound(op[h].begin(),op[h].end(),id[u][0])-op[h].begin(); int j=upper_bound(op[h].begin(),op[h].end(),id[u][1])-op[h].begin()-1; int a; if(i-1>=0) a=dep[h][j]^dep[h][i-1]; else a=dep[h][j]; int num=0; for(int i=0;i<26;i++) { if(a&(1<<i)) num++; } if(num<=1) printf("Yes\n"); else printf("No\n"); } } return 0; }
相关文章推荐
- 从UE4开始蜕变
- POJ - 1904 King's Quest(强连通分量+二分图匹配)
- poi Build path 配置,顺序问题
- 解决PHPCMS使用ueditor时缩略图上传问题
- UEditor使用技巧(2):自定义样式
- 百度Ueditor编辑器的Html模式自动替换样式的解决方法
- 空中网面试题二SynchronousQueue
- poj 1947 Rebuilding Roads 树形dp
- UIButton和UIImageView的区别一
- iOS开发UI篇—核心动画(UIView封装动画)
- pat(A) 1007. Maximum Subsequence Sum(和最大子段)
- HDU 1005.Number Sequence【很多问题是不能直接求的】【8月15】
- codeforces#FF DIV2C题DZY Loves Sequences(DP)
- HDU 2227 Find the nondecreasing subsequences
- 刀哥多线程全局队列gcd-09-global_queue
- zoj 2672 Fibonacci Subsequence(hash + dp)
- UINavigationControl
- CoreGraphics对UIImage图片裁剪
- 刀哥多线程之主队列gcd-06-main_queue
- 刀哥多线程之并发队列gcd-05-dispatch_queue_concurrent