• 【洛谷2420】让我们异或吧


    原题:

     n<=1e5

    这题简单,求出树上异或前缀和,每次询问时找出lca就行了

    but,实际上根本不用求lca想过么

    直接把询问的两个点的树上异或前缀和异或起来就vans了,根到lca上的边会异或两次,自动抵消

    异或的性质还值得引起注意的呀

    代码:

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 struct edg{int y,nxt,z;}e[210000];  int lk[110000],ltp=0;
     5 void ist(int x,int y,int z){
     6     e[++ltp]=(edg){y,lk[x],z};  lk[x]=ltp;
     7     e[++ltp]=(edg){x,lk[y],z};  lk[y]=ltp;
     8 }
     9 int n,m;
    10 int f[110000];
    11 void dfs(int x,int y){
    12     for(int i=lk[x];i;i=e[i].nxt)if(e[i].y!=y){
    13         f[e[i].y]=f[x]^e[i].z;
    14         dfs(e[i].y,x);
    15     }
    16 }
    17 int main(){
    18     cin>>n;
    19     int l,r,v;
    20     for(int i=1;i<n;++i){
    21         scanf("%d%d%d",&l,&r,&v);
    22         ist(l,r,v);
    23     }
    24     dfs(1,0);
    25     cin>>m;
    26     while(m --> 0){
    27         scanf("%d%d",&l,&r);
    28         printf("%d
    ",f[l]^f[r]);
    29     }
    30     return 0;
    31 }
    View Code
  • 相关阅读:
    javaEE_maven_struts2_tomcat_first
    企业框架-Spring
    MyBatis延迟加载及缓存
    MyBatis注解及动态Sql
    框架之MyBatis
    SQL中的一些关键字用法
    Mysql————基本sql语句
    表单验证
    java中的锁——列队同步器
    线程同步Lock锁
  • 原文地址:https://www.cnblogs.com/cdcq/p/12294026.html
Copyright © 2020-2023  润新知