当前位置: 首页 > article >正文

洛谷-算法2-4-字符串2

P4551 最长异或路径题目描述给定一棵 n 个点的带权树结点下标从 1 开始到 n。求树中所有异或路径的最大值。异或路径指树上两个结点之间唯一路径上的所有边权的异或值。输入格式第一行一个整数 n表示结点数。接下来 n−1 行给出 u,v,w 分别表示树上的 u 点和 v 点有连边边的权值是 w。输出格式一行一个整数表示答案。输入输出样例输入 #1复制4 1 2 3 2 3 4 2 4 6输出 #1复制7说明/提示当两个结点分别是 1,3 时答案是 73⊕4取最大值。数据范围1≤n≤105;0u,v≤n;0≤w231。实现代码#includebits/stdc.h using namespace std; struct qwq{ int v; int w; int nxt; }edge[2000001]; int head[2000001]; int cnt-1; void add(int u,int v,int w){ edge[cnt].nxthead[u]; edge[cnt].vv; edge[cnt].ww; head[u]cnt; } int sum[2000001]; void dfs(int x,int fa){ for(int ihead[x];~i;iedge[i].nxt){ int vedge[i].v; int wedge[i].w; if(v!fa){ sum[v]sum[x]^w; dfs(v,x); } } } struct trie{ int ch[2]; }t[2000001]; int tot; void build(int val,int x){ for(int i(130);i;i1){ bool cvali; if(!t[x].ch[c]){ t[x].ch[c]tot; } xt[x].ch[c]; } } int query(int val,int x){ int ans0; for(int i(130);i;i1){ bool cvali; if(t[x].ch[!c]){ ansi; xt[x].ch[!c]; } else xt[x].ch[c]; } return ans; } int main(){ memset(head,-1,sizeof(head)); int n; scanf(%d,n); for(int i1;in;i){ int u,v,w; scanf(%d%d%d,u,v,w); add(u,v,w); add(v,u,w); } dfs(1,-1); for(int i1;in;i)build(sum[i],0); int ans0; for(int i1;in;i){ ansmax(ans,query(sum[i],0)); } printf(%d\n,ans); }P5283 [十二省联考 2019] 异或粽子题目描述小粽是一个喜欢吃粽子的好孩子。今天她在家里自己做起了粽子。小粽面前有 n 种互不相同的粽子馅儿小粽将它们摆放为了一排并从左至右编号为 1 到 n。第 i 种馅儿具有一个非负整数的属性值 ai​。每种馅儿的数量都足够多即小粽不会因为缺少原料而做不出想要的粽子。小粽准备用这些馅儿来做出 k 个粽子。小粽的做法是选两个整数数 l, r满足 1⩽l⩽r⩽n将编号在 [l,r] 范围内的所有馅儿混合做成一个粽子所得的粽子的美味度为这些粽子馅儿的属性值的异或和。异或就是我们常说的 xor 运算即 C/C 中的ˆ运算符或 Pascal 中的xor运算符小粽想品尝不同口味的粽子因此她不希望用同样的馅儿的集合做出一个以上的粽子。小粽希望她做出的所有粽子的美味度之和最大。请你帮她求出这个值吧输入格式第一行两个正整数 n, k表示馅儿的数量以及小粽打算做出的粽子的数量。接下来一行为 n 个非负整数第 i 个数为 ai​表示第 i 个粽子的属性值。 对于所有的输入数据都满足1⩽n⩽5×105, 1⩽k⩽min{2n(n−1)​,2×105}, 0⩽ai​⩽4294967295。输出格式输出一行一个整数表示小粽可以做出的粽子的美味度之和的最大值。输入输出样例输入 #1复制3 2 1 2 3输出 #1复制6说明/提示测试点nk1, 2, 3, 4, 5, 6, 7, 8⩽103⩽1039, 10, 11, 12⩽5×105⩽10313, 14, 15, 16⩽103⩽2×10517, 18, 19, 20⩽5×105⩽2×105实现代码#includeiostream #includecstdio #includecstring #includequeue using namespace std; const int N2000000010; struct Node{int id,rk;long long w;bool operator (const Node a)const{return wa.w;}}; priority_queueNodeq; long long ans1,x,s[N]; int a[N][2],size[N],n,m,tot; void ins(long long x) { int u0; for(int i31;i0;i--) { int ch(xi)1;size[u]; if(!a[u][ch])a[u][ch]tot; ua[u][ch]; } size[u]; } long long query(long long x,int rk) { int u0;long long ans0; for(int i31;i0;i--) { int ch(xi)1; if(!a[u][ch^1])ua[u][ch]; else if(rksize[a[u][ch^1]])ua[u][ch^1],ans|1LLi; else rk-size[a[u][ch^1]],ua[u][ch]; } return ans; } long long getin() { long long x0;char chgetchar(); while(ch0||ch9)chgetchar(); while(ch0ch9)xx*10ch-48,chgetchar(); return x; } int main() { ngetin(),mgetin();m1; for(int i1;in;i)xgetin(),s[i]s[i-1]^x; for(int i0;in;i)ins(s[i]); for(int i0;in;i)q.push((Node){i,1,query(s[i],1)}); for(int i1;im;i) { Node tq.top();anst.w;q.pop(); if(t.rkn)q.push((Node){t.id,t.rk1,query(s[t.id],t.rk1)}); } cout(ans1)endl; }P1470 [IOI 1996 / USACO2.3] 最长前缀 Longest Prefix题目描述在生物学中一些生物的结构是用包含其要素的大写字母序列来表示的。生物学家对于把长的序列分解成较短的序列即元素很感兴趣。如果一个集合 P 中的元素可以串起来元素可以重复使用组成一个序列 S那么我们认为序列 S 可以分解为 P 中的元素。元素不一定要全部出现如下例中BBC就没有出现。举个例子序列ABABACABAAB可以分解为下面集合中的元素{A,AB,BA,CA,BBC}。序列 S 的前面 k 个字符称作 S 中长度为 k 的前缀。设计一个程序输入一个元素集合以及一个大写字母序列设 S′ 是序列 S 的前缀使其可以分解为给出的集合 P 中的元素求 S′ 的长度 k 的最大值。输入格式输入数据的开头包括若干个元素组成的集合 P用连续的以空格分开的字符串表示。字母全部是大写数据可能不止一行。元素集合结束的标志是一个只包含一个.的行集合中的元素没有重复。接着是大写字母序列 S用字符串表示每 76 个字符换一行。输出格式只有一行输出一个整数表示 S 符合条件的前缀的最大长度。输入输出样例输入 #1复制A AB BA CA BBC . ABABACABAABC输出 #1复制11说明/提示【数据范围】对于 100% 的数据1≤card(P)≤2001≤∣S∣≤2×105P 中的元素长度均不超过 10。翻译来自 NOCOW。实现代码#include iostream #include set #include cstring using namespace std; int dp[200005],m; setstring s[20]; int main(){ string tp; while (cintp){ if (tp.) break; s[tp.size()].insert(tp); mmax(m,int(tp.size())); } int i,ans0; dp[0]1; string n; n ; while (cintp){ nntp; } for (i1;in.size();i){ for (int jmin(i,m);j1;j--){ string ttn.substr(i-j1,j); if (s[tt.size()].count(tt)1dp[i-j]1){ ansi; dp[i]1; break; } } } coutans; }CF25E Test题目描述给定 3 个字符串 s1​,s2​,s3​试求一个字符串使 s1​,s2​,s3​ 都是这个字符串的子串并使这个字符串最短。输出最短字符串的长度 l。输入格式第一行输入一个字符串表示 s1​。第二行输入一个字符串表示 s2​。第三行输入一个字符串表示 s3​。输出格式第一行输出一个正整数表示答案 l。显示翻译题意翻译输入输出样例输入 #1复制ab bc cd输出 #1复制4输入 #2复制abacaba abaaba x输出 #2复制11说明/提示1≤∣s1​∣,∣s2​∣,∣s3​∣≤105。实现代码#include cstdio #include cstring #define min(a,b) ((a)(b))?(a):(b) using namespace std; const int INF2147483646; int nxt[4][100050],l[4]; char s[4][100050]; inline void Pre(){ for(int f1;f4;f){ int p0,lenl[f]; for(int i2;ilen;i){ while(ps[f][i]!s[f][p1]) pnxt[f][p]; if(s[f][i]s[f][p1]) p; nxt[f][i]p; } } return ; } int f(int a,int b,int c){ int ansINF,p10; int all[a],bll[b],cll[c]; for(int i1;ial;i){ while(p1s[b][p11]!s[a][i]) p1nxt[b][p1]; if(s[b][p11]s[a][i]) p1; if(p1bl){ p1-1; break; } } if(p1-1){ int p0; for(int i1;ial;i){ while(ps[c][p1]!s[a][i]) pnxt[c][p]; if(s[c][p1]s[a][i]) p; if(pcl){ p-1; break; } } if(p-1) ansal; else ansalcl-p; } else{ int p0; for(int i1;ial;i){ while(ps[c][p1]!s[a][i]) pnxt[c][p]; if(s[c][p1]s[a][i]) p; if(pcl){ p-1; break; } } if(p!-1){ int p2p; for(int ip11;ibl;i){ while(p2s[c][p21]!s[b][i]) p2nxt[c][p2]; if(s[c][p21]s[b][i]) p2; if(p2cl){ p2-1; break; } } if(p2-1) ansalbl-p1; else ansalbl-p1 cl -p2; } else ansalbl-p1; } return ans; } int main(){ scanf(%s%s%s,s[1]1,s[2]1,s[3]1); int ansINF; l[1]strlen(s[1]1);l[2]strlen(s[2]1);l[3]strlen(s[3]1); Pre(); ansmin(ans,f(1,2,3));ansmin(ans,f(1,3,2)); ansmin(ans,f(2,1,3));ansmin(ans,f(2,3,1)); ansmin(ans,f(3,2,1));ansmin(ans,f(3,1,2)); printf(%d,ans); return 0; }

相关文章:

洛谷-算法2-4-字符串2

P4551 最长异或路径 题目描述 给定一棵 n 个点的带权树,结点下标从 1 开始到 n。求树中所有异或路径的最大值。 异或路径指树上两个结点之间唯一路径上的所有边权的异或值。 输入格式 第一行一个整数 n,表示结点数。 接下来 n−1 行,给…...

保姆级教程:用Python+OpenCV SGBM算法搞定双目测距(附参数调优避坑指南)

PythonOpenCV SGBM双目测距实战:从参数调优到避坑指南 当你第一次尝试用双目摄像头测量物体距离时,可能会遇到这样的困惑:为什么我的视差图有大片黑色区域?为什么调整参数后细节全消失了?这就像新手司机第一次上路&am…...

告别滚动混乱:Scroll Reverser 让 Mac 多设备滚动体验完美统一

告别滚动混乱:Scroll Reverser 让 Mac 多设备滚动体验完美统一 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 你是否曾经历过这样的场景:在触控板上流畅…...

用AI生成数据地图

提供各省市数据&#xff0c;并让AI基于javascript echarts生成数据地图 AI返回的文件保存为 index.html <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>各省份数值分布</title><script src"./echarts.mi…...

算法训练营第二十一天| 基本计算器 II

1.题目链接&#xff1a;https://leetcode.cn/problems/basic-calculator-ii/description/ 优秀题解&#xff1a;https://leetcode.cn/problems/basic-calculator-ii/solutions/91271/chai-jie-fu-za-wen-ti-shi-xi…...

Translumo终极指南:如何用免费开源工具实现游戏、视频、软件的实时屏幕翻译

Translumo终极指南&#xff1a;如何用免费开源工具实现游戏、视频、软件的实时屏幕翻译 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Tr…...

Equalizer APO终极指南:免费开源音频调校完整教程

Equalizer APO终极指南&#xff1a;免费开源音频调校完整教程 【免费下载链接】equalizerapo Equalizer APO mirror 项目地址: https://gitcode.com/gh_mirrors/eq/equalizerapo 想要彻底改变Windows系统的音频体验吗&#xff1f;Equalizer APO作为一款免费开源的系统级…...

学Simulink——基于Simulink的燃料电池-锂电池混合动力能量流管理​

目录 手把手教你学Simulink——基于Simulink的燃料电池-锂电池混合动力能量流管理​ 摘要​ 一、背景与挑战​ 1.1 为什么1+1<2?揭秘多能源系统的“木桶效应”​ 1.2 核心痛点与设计目标​ 二、系统架构与核心控制推导​ 2.1 整体架构:从“各自为战”到“黄金搭档”…...

三维纹理变形技术Interp3D原理与应用实践

1. 技术背景与核心价值在三维图形处理领域&#xff0c;纹理变形一直是个既基础又关键的课题。去年参与某游戏角色面部表情系统开发时&#xff0c;我们团队就深刻体会到了传统变形技术的局限性——当角色从微笑转为愤怒时&#xff0c;面部皱纹的过渡总会出现不自然的断裂或拉伸。…...

【 Godot 4 学习笔记】HTTPRequest

在 Godot 引擎中&#xff0c;HTTPRequest 是最核心且最方便的内置节点&#xff0c;专门用于发送 HTTP 请求&#xff08;如 GET、POST&#xff09;与 Web 服务器或 API 进行交互。 以下是使用 HTTPRequest 节点的完整步骤和代码示例&#xff08;以 GDScript 为例&#xff09;&am…...

构建流程管理工具followbuildersplus:从环境隔离到智能编排的工程实践

1. 项目概述与核心价值最近在折腾一些自动化构建和持续集成流程&#xff0c;发现一个挺有意思的仓库&#xff0c;叫lch9901/followbuildersplus。乍一看这个名字&#xff0c;可能有点摸不着头脑&#xff0c;但如果你也经常在GitHub上维护项目&#xff0c;尤其是那些需要复杂构建…...

如何快速解决Windows任务栏透明工具TranslucentTB启动失败问题:完整解决方案指南

如何快速解决Windows任务栏透明工具TranslucentTB启动失败问题&#xff1a;完整解决方案指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB …...

最小差异对比法:高效区分相似概念的教学技术

1. 问题背景与核心需求在知识传播和教学场景中&#xff0c;我们经常需要向学习者解释两个相似概念之间的细微差别。传统方法往往采用独立描述或简单对比的方式&#xff0c;但这种方式容易让学习者忽略关键差异点。生成最小差异对比答案对&#xff08;Minimal Pair&#xff09;是…...

mysql基础增删改查语句汇总

mysql基础查询修改语句mysql一个字段值挪到另一个字段#将 test2 的值移动到 test3 UPDATE your_table SET test3 test2;mysql取某一字段内的某部分值&#xff0c;赋予其他字段#字段path的值为/test/old/a/cer/ne/qww/,编写sql取第四个/后&#xff0c;第五个/前的内容&#xff…...

华硕笔记本性能调优新选择:G-Helper轻量控制方案深度解析

华硕笔记本性能调优新选择&#xff1a;G-Helper轻量控制方案深度解析 【免费下载链接】g-helper G-Helper is a fast, native tool for tuning performance, fans, GPU, battery, and RGB on any Asus laptop or handheld - ROG Zephyrus, Flow, Strix, TUF, Vivobook, Zenbook…...

Cookie、Session与Token技术全解析

一、Cookie 技术1. 描述Cookie 是服务器通过 HTTP 响应头发送到浏览器&#xff0c;并由浏览器临时或持久化存储的小型文本数据&#xff0c;大小通常不超过 4KB。Cookie 与域名绑定&#xff0c;浏览器访问同一域名时&#xff0c;会自动在请求头中携带 Cookie&#xff0c;服务器以…...

OpenAI公开“小妖精问题”:模型训练怪癖难除,还分享撤销指令方法

OpenAI“小妖精问题”浮出水面《连线》杂志报道披露 OpenAI 编码模型指令&#xff0c;禁止提及小妖精、小怪物等生物&#xff0c;随后 OpenAI 在网站上作出解释&#xff0c;称模型提及这些生物是训练中养成的“奇怪习惯”。问题根源&#xff1a;模型训练奖励古怪隐喻从 GPT - 5…...

Linux性能优化之磁盘基础介绍

写在前面 本文看下磁盘相关基础内容。 1&#xff1a;磁盘的分类 当前磁盘分为机械磁盘&#xff0c;也称为磁盘驱动器&#xff0c;hard disk driver。简称HDD。固态硬盘&#xff0c;简称SSD。分别看下。 1.1&#xff1a;机械磁盘 机械磁盘由盘片和磁头组成&#xff0c;而在盘片上…...

突破二分查找局限!SIMD Quad 算法在不同平台展现卓越性能优势

查找算法选择在查找已排序数组中的某个值时&#xff0c;有线性查找和二分查找等算法。线性查找是逐个遍历数组元素&#xff0c;C 里用 std::find 函数实现。对于大型数组&#xff0c;二分查找更出色&#xff0c;它通过持续将搜索区间一分为二定位目标值&#xff0c;C 中 std::b…...

Vue项目实战:手把手教你封装一个可拖拽、可分组的多级表头配置组件(Element UI el-table)

Vue工程化实战&#xff1a;构建高复用性的可配置多级表头组件 在复杂的中后台系统中&#xff0c;表格作为数据展示的核心载体&#xff0c;往往需要根据不同业务场景灵活调整列配置。传统硬编码方式会导致代码臃肿、维护困难&#xff0c;而一个设计良好的可配置表头组件能显著提…...

GHelper终极指南:3个步骤释放华硕笔记本隐藏性能

GHelper终极指南&#xff1a;3个步骤释放华硕笔记本隐藏性能 【免费下载链接】g-helper G-Helper is a fast, native tool for tuning performance, fans, GPU, battery, and RGB on any Asus laptop or handheld - ROG Zephyrus, Flow, Strix, TUF, Vivobook, Zenbook, ProArt…...

孤舟笔记 并发篇八 可重入锁是什么?为什么面试官说没有它synchronized就是个残废

文章目录 先说结论&#xff1a;可重入锁的核心要点没有可重入锁会怎样&#xff1f;一个自我死锁的灾难可重入锁是怎么实现的&#xff1f;计数器 线程判断synchronized 的可重入&#xff1a;JVM 层面天然支持可重入锁的注意事项可重入锁全景回答技巧与点评标准回答加分回答面试…...

深度解析LenovoLegionToolkit:拯救者笔记本的底层硬件控制架构与性能优化实践

深度解析LenovoLegionToolkit&#xff1a;拯救者笔记本的底层硬件控制架构与性能优化实践 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegion…...

对比直接使用厂商 API 体验 Taotoken 聚合调用的便利性

对比直接使用厂商 API 体验 Taotoken 聚合调用的便利性 1. 统一协议与接口规范 在传统开发流程中&#xff0c;对接不同厂商的大模型 API 通常需要适配各自的协议规范。以 OpenAI 与 Anthropic 为例&#xff0c;两者在请求路径、参数命名和响应结构上存在显著差异。开发者需要…...

科学防癌:乳腺癌自我检查攻略

2022年癌症相关统计数据显示&#xff0c;乳腺癌在我国整体癌症发病率中位列第六&#xff0c;而在女性恶性肿瘤中发病率高居第二位&#xff0c;全年新发患者达35.72万。世界卫生组织曾提出&#xff0c;三分之一的癌症可通过早期筛查实现早诊早治&#xff0c;帮助患者达到临床治愈…...

Spark.NET:一个试图把 Django / Rails 式开发体验带回 .NET 世界的全栈 Web 框架。

前言在 AI 时代&#xff0c;技术选型的思路变了&#xff0c;至少这两年&#xff0c;我的新项目都会偏向于单体式架构(monolithic)最近在调用 AspNetCore 技术栈的时候&#xff0c;发现了一个有意思的框架 Spark.NET一个试图把 Django / Rails 式开发体验带回 .NET 世界的全栈 W…...

如何免费解锁QQ音乐加密音频:QMCDecode终极指南

如何免费解锁QQ音乐加密音频&#xff1a;QMCDecode终极指南 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目录&#xff0c;默认转换结果…...

零依赖!WinForm 车牌识别系统开发全流程(算法实现+模块拆解)

前言常遇到一个现实问题&#xff1a;如何在不依赖商业SDK或深度学习框架的前提下&#xff0c;用纯算法实现车牌识别&#xff1f;尤其在一些资源受限的工控环境里&#xff0c;轻量、稳定、可控成了关键诉求。本文将介绍一个基于WinForm的车牌识别系统的实现过程&#xff0c;从图…...

ncmdump:解锁数字音乐自由的技术钥匙

ncmdump&#xff1a;解锁数字音乐自由的技术钥匙 【免费下载链接】ncmdump ncmdump - 网易云音乐NCM转换 项目地址: https://gitcode.com/gh_mirrors/ncmdu/ncmdump 你是否曾为心爱的音乐被锁在特定平台而烦恼&#xff1f;那些精心收藏的网易云音乐NCM格式文件&#xff…...

3分钟上手:本地化视频字幕提取的完整解决方案

3分钟上手&#xff1a;本地化视频字幕提取的完整解决方案 【免费下载链接】video-subtitle-extractor 视频硬字幕提取&#xff0c;生成srt文件。无需申请第三方API&#xff0c;本地实现文本识别。基于深度学习的视频字幕提取框架&#xff0c;包含字幕区域检测、字幕内容提取。A…...