首页 > 其他分享 >2024.7.16

2024.7.16

时间:2024-07-16 21:51:15浏览次数:8  
标签:oo itn cnt ch 2024.7 int 16 st

### 2024.7.16 【I never lose.I either win or learn.】 ### Tuesday 六月十一 --- ## 0/1Trie学习笔记 使用trie维护异或极值可以使用0/1Trie, 这是一种以{0,1}为字符集的Trie树, 他支持修改和全局加一 使用异或操作时,我们其实并不需要知道每一位上的具体值,只需要知道每一位上1的个数即可 (这句非常非常重要 考虑维护节点,每次插入考虑新添加到树的位 但是需要注意,每次插入要插到最深, 这样才能保证每次异或时位是冲齐的 > [P4551 最长异或路径](https://www.luogu.com.cn/problem/P4551) ```cpp //2024.7.16 //by white_ice //P4551 最长异或路径 #include using namespace std; #define itn int constexpr int oo = 2000006; struct nod{itn v,w,nxt;}st[oo]; itn head[oo]; itn cnt = -1; void add(int u,int v,int w){ st[++cnt].nxt=head[u]; st[cnt].v=v; st[cnt].w=w; head[u]=cnt; } int sum[oo]; void dfs(int x,int fa){ for(int i=head[x];~i;i=st[i].nxt){ int v=st[i].v; int w=st[i].w; if(v!=fa){ sum[v]=sum[x]^w; dfs(v,x); } } } struct trie{int ch[2];}t[oo]; int tot; void build(int val,int x){ for(int i=(1<<30);i;i>>=1){ bool c=val&i; if(!t[x].ch[c]){ t[x].ch[c]=++tot; } x=t[x].ch[c]; } } int query(int val,int x){ int ans=0; for(int i=(1<<30);i;i>>=1){ bool c=val&i; if(t[x].ch[!c]){ ans+=i; x=t[x].ch[!c]; } else x=t[x].ch[c]; } return ans; } int main(){ ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); memset(head,-1,sizeof(head)); int n; cin >> n; for(int i=1;i<n;++i){ int="" u,v,w;="" cin="">> u >> v >> w; add(u,v,w); add(v,u,w); } dfs(1,-1); for(int i=1;i<=n;++i) build(sum[i],0); int ans=0; for(int i=1;i<=n;++i) ans=max(ans,query(sum[i],0)); cout << ans; return 0; } ``` 学习了一下AC自动机和SA ```cpp //2024.7.16 //by white_ice //P5357 【模板】AC 自动机 #include using namespace std; #define itn int constexpr int oo = 2000006; constexpr int op = 200005; char st[oo],sp[oo]; int n,cnt,is[200051]; itn in[oo]; itn ton[oo]; struct nod{int vis[26],fail,flag,ans;}trie[oo]; void insert(char* s,int num){ int u=1,len=strlen(s); for(int i=0;i<len;i++){ int="" v="s[i]-'a';" if(!trie[u].vis[v])="" trie[u].vis[v]="++cnt;" u="trie[u].vis[v];" }="" if(!trie[u].flag)="" trie[u].flag="num;" ton[num]="trie[u].flag;" void="" getfail(){="" queue="" <int=""> q; for(int i=0;i<26;i++) trie[0].vis[i]=1; q.push(1); while(!q.empty()){ int now=q.front(); q.pop(); for(int i=0;i<26;i++){ int v=trie[now].vis[i]; if(!v){ trie[now].vis[i]=trie[trie[now].fail].vis[i]; continue; } trie[v].fail=trie[trie[now].fail].vis[i]; in[trie[v].fail]++; q.push(v); } } } void topu(){ queue q; for(int i=1;i<=cnt;i++) if(in[i]==0) q.push(i); while(!q.empty()){ int u=q.front(); q.pop(); is[trie[u].flag]=trie[u].ans; int v=trie[u].fail; in[v]--; trie[v].ans+=trie[u].ans; if(in[v]==0) q.push(v); } } void query(char* s){ int now=1; itn len=strlen(s); for(int i=0;i<len;i++){ now="trie[now].vis[s[i]-'a'];" trie[now].ans++;="" }="" int="" main(){="" cin="">> n; cnt=1; for(int i=1;i<=n;i++){ cin >> st; insert(st,i); } getfail(); cin >> sp; query(sp); topu(); for(int i=1;i<=n;i++) cout << is[ton[i]] << '\n'; return 0; } ```

标签:oo,itn,cnt,ch,2024.7,int,16,st
From: https://www.cnblogs.com/white-ice/p/18306203

相关文章

  • (20240716)无机非金属材料工学(1)原料及粉体制备
    一、概述1.水泥的生产方法:水泥的生产历来就有干法生产和湿法生产两种最典型的方法,随着干法生产水泥技术和装备的高度、快速发展,同时出于节能的考虑,水泥的湿法生产在全世界基本上已经停用。2.粉碎无机非金属材料的原料大多来自天然的硬质矿物,多数为块状必须对其实施破碎......
  • 7月16日JavaSE学习笔记
    方法(函数、过程)语法返回值类型方法名(参数列表){方法体}返回值类型:该方法必须返回的一个这个类型的对象当方法不需要返回值时,返回值类型就定义为voidpublicstaticintmax(inta,intb){intmax=a>b?a:b;//方法名和变量名不会冲突//return返回......
  • 7/16 训练笔记
    闲话插,就硬插,插完就过了(P4781【模板】拉格朗日插值模板题,写拉格朗日插值即可。代码:#include<bits/stdc++.h>#defineintlonglong#definerep(i,l,r)for(inti=l;i<=r;i++)usingnamespacestd;constintmod=998244353;intx[2010],y[2010],n,k;int......
  • MySQL 数据库 day 7.16
        ok了家人们今天继续记录一下数据库,看看今天学了什么。一.事物概述1.1环境准备--账户表createtableaccount(idintprimarykeyauto_increment,namevarchar(20),moneydouble);insertintoaccountvalues(null,'张三',1000......
  • 7.16(yum源的安装)
    一、yum源安装1、yum安装优点:rpm安装(下载软件、单独安装、需要解决依赖关系)rpm-ivhxxx  手动添加依赖软件包源码安装(configuremakemakeinstall)yum基于rpm,相当于rpm升级版,自动解决依赖关系yum (软件包管理器)不止执行安装,自动处理依赖管理2、本地yum源: yu......
  • 2024-07-16 使用了.md文件作为路由文件来引用,在开发中能正常显示,打包的时候就报错了:Ca
    我使用了.md文件作为路由文件来引用,在开发中能正常显示,打包的时候就报错了//vite.config.ts import{defineConfig}from'vite'; importvuefrom'@vitejs/plugin-vue'; importmarkdownfrom"vite-plugin-md"; exportdefaultdefineConfig({  plugin......
  • [CF1616H] Keep XOR low
    Lastdance。最后一篇文章,就写我两年前就看过但不敢尝试的题目吧。首先,两数异或\(\lex\)的条件看起来是好维护的,显然可以Trie树上跑一跑,但我们发现当\(x\)某一位是\(1\)的时候非常难受,情况变得非常复杂。此时我进行了一些尝试,尝试直接刻画合法的\(S\)的结构,未果。把......
  • 【AI】DeepStream(16):deepstream_image_decode_app-MJPEG编解码器的使用
    【AI】AI学习目录汇总1、简介deepstream-test1:演示各种DeepStream插件构建GStreamer管道。从文件中获取视频、解码、批处理,然后进行对象检测,最后在屏幕上渲染框。deepstream_image_decode_app示例是在deepstream-test1示例之上,增加如下功能:在管道pipe中使用多个......
  • 一些想法的记录 2024-07-16
    2024-07-16我这后知后觉挺严重的,没事,总比一直不知不觉要好。    上周五,我去看轮椅称的偏载问题,我一看就明白,要么是结构问题要么是硬件问题,我认为跟我没有关系。我心里就很不爽。几年前开始一段时间,我都没有抱怨,有问题就去查出来想办法解决,到最近两年越来越严重了,认为不......
  • 2024-07-16升级问题:调用自带软件打开文件时 android.os.FileUriExposedException
    2024-07-16升级问题:调用手机自带软件打开文件时,出现以下问题:E/AndroidRuntime:FATALEXCEPTION:mainProcess:rs.tabletcropland,PID:10997android.os.FileUriExposedException:file:///storage/emulated/0/arcgis/%E7%9F%B3%E7%8B%AE%E5%B8%82/Attachment/%E7......