2023年码蹄杯专科组第一场初赛 解题报告 | 珂学家


前言

在这里插入图片描述


题解

有几道感觉还行,不过数据有些弱

  • 安全验证(字符串)
  • 旅行(图论)
    在这里插入图片描述

安全验证

难度: 钻石

思路: 字符串hash + 二分

先提炼下题意:

即存在字符串T, 它即是S的前缀, 也是S的后缀, 同时在S[1:-2]中存在子数组S'=T, 求最长的T

切入点是

  • 先找到满足要求的T(从前后缀一致),获取候选的列表 [ T 1 , T 2 , . . . , T k ] , 且 T i 为 T j 的前缀 i ≤ j {[T_1, T_2, ..., T_k], 且T_i 为 T_j 的前缀 i \le j } [T1,T2,...,Tk],TiTj的前缀ij
  • 然后枚举 i ∈ [ 1 , n − 2 ] {i \in [1, n - 2] } i[1,n2], 作为起点,二分找最长的 T i T_i Ti

为啥二分可以呢?因为存在阶段性

#include <bits/stdc++.h>using namespace std;using int64 = long long;struct StringHash {StringHash(const string& s, int64 p, int64 mod): p(p), mod(mod), pre(s.length() + 1, 0), pow(s.length() + 1, 0) {int n = s.length();pow[0] = 1;for (int i = 0; i < n; i++) {pow[i + 1] = pow[i] * p % mod;pre[i + 1] = (pre[i] * p % mod + s[i]) % mod;}}int query(int l, int r) {return ((pre[r + 1] - pre[l] * pow[r - l + 1] % mod) % mod + mod) % mod;}int64 mod;int64 p;vector<int64> pre;vector<int64> pow;
};int main() {string s;cin >> s;int p1 = 13, p2 = 17;int64 mod = (int64)1e9 +  7;StringHash sh1(s, p1, mod);StringHash sh2(s, p2, mod);int n = s.length();vector<int> ln;for (int i = 0; i < n; i++) {if (sh1.query(0, i) == sh1.query(n - 1 - i, n - 1) && sh2.query(0, i) == sh2.query(n - 1 - i, n - 1)) {ln.push_back(i + 1);}}int ans = 0;for (int i = 1; i < n - 1; i++) {int l = 0, r = ln.size() - 1;while (l <= r) {int m = l + (r - l) / 2;int lz = ln[m];if (i + lz < n && sh1.query(i, i + lz - 1) == sh1.query(0, lz - 1) && sh2.query(i, i + lz - 1) && sh2.query(0, lz - 1)) {l = m + 1;} else {r = m - 1;}}if (r >= 0) {ans = max(ans, ln[r]);}}if (ans > 0) {cout << s.substr(0, ans) << endl;} else {cout << "No" << endl;}return 0;
}

旅行

难度:钻石

思路: 图论

突破口:

所有点都经过,所有边都经过 所有点都经过,所有边都经过 所有点都经过,所有边都经过

那该图必然是

  • 单条链

这两个图,有如下特点

  • 出入度都小于等于1
  • 彼此联通

因此结合这两点,通过出入度校验+并查集来求解

#include <bits/stdc++.h>using namespace std;struct Dsu {
public:Dsu(int n): m(n), arr(n, -1), gz(n, 1) {}int find(int u) {int fa = u;while (arr[fa] != -1) {fa = arr[fa];}while (arr[u] != -1) {int nfa = arr[u];arr[u] = fa;u = nfa;}return fa;}void merge(int u, int v) {int a = find(u), b = find(v);if (a != b) {arr[a] = b;gz[b] += gz[a];}}int group(int u) {return gz[find(u)];}int m;vector<int> arr;vector<int> gz;
};int main() {int t;cin >> t;while (t-- > 0) {int n, m;cin >> n >> m;// 出度,入度vector<int> in(n), out(n);Dsu dsu(n);// 不是环,就是链表for (int i = 0; i < m; i++) {int u, v;cin >> u >> v;u--; v--;in[v]++;out[u]++;dsu.merge(u, v);}bool ok = true;for (int i = 0; i < n; i++) {if (in[i] > 1 || out[i] > 1) {ok = false;break;}}if (ok && dsu.group(0) == n) {cout << "YES" << endl;} else {cout << "NO" << endl;}}return 0;
}


写在最后

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/382894.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

刷题了:344.反转字符串|541. 反转字符串II|卡码网:54.替换数字

344.反转字符串 题目链接:https://leetcode.cn/problems/reverse-string/description/ 文章讲解:https://programmercarl.com/0344.%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.html 视频讲解:https://www.bilibili.com/video/BV1fV4y17748/?spm_id_from333.788&vd_s…

PostgreSQL简介和安装

一、Postgresql简介&#xff1a; 1、PostgreSql是功能强大的&#xff0c;开源的关系型数据库&#xff0c;底层基于C语言实现&#xff1b; 2、开源&#xff1a;允许对PostgreSql进行封装&#xff0c;用于商业收费&#xff1b; 3、版本迭代速度快&#xff0c;正式版本已经到15.R…

Linux网络命令

文章目录 Linux网络命令1、ping 命令2、netstat命令3、pidof Linux网络命令 1、ping 命令 使用命令&#xff1a;ping [-c 次数]网址或者IP地址。可以查看当前客户端与IP的网络是否可达。 ping -c 5 www.baidu.com PING www.a.shifen.com (157.148.69.74) 56(84) bytes of data…

嵌入式代码编译过程概述

嵌入式代码编译过程概述 前言一、c/c编译过程1.1 代码编译过程1.1.1 预处理1.1.2 编译阶段1.1.3 汇编阶段1.1.4 链接阶段 1.2 编译过程中的编译工具GCC /Gclang/clangMinGW / MSVCArm GNU ToolchainarmccMAKE/CMAKE/qmake 二、常见IDE编译过程2.1 keil代码编译过程2.2 windows-…

【Hot100】LeetCode—322. 零钱兑换

目录 题目1- 思路2- 实现⭐322. 零钱兑换——题解思路 3- ACM 实现 题目 原题连接&#xff1a;322. 零钱兑换 1- 思路 思路 其中 amount 是背包容量 ——> 其中 nums 数组代表的背包重量 2- 实现 ⭐322. 零钱兑换——题解思路 class Solution {public int coinChange(in…

2023 N1CTF-n1proxy

文章目录 参考rsa握手rust_proxy源码公匙交换和签名会话钥匙后续通信生命周期和裸指针代码审计漏洞点 libc-2.27.so大致思路&#xff08;exp还有变化&#xff09;调试exp泄露libc写free_hook执行命令exp 参考 https://github.com/Nu1LCTF/n1ctf-2023/tree/main/pwn/n1proxy ht…

算法学习day19

一、通过删除字母匹配到字符字典中的最大值 给你一个字符串 s 和一个字符串数组 dictionary &#xff0c;找出并返回 dictionary 中最长的字符串&#xff0c;该字符串可以通过删除 s 中的某些字符得到。 如果答案不止一个&#xff0c;返回长度最长且字母序最小的字符串。如果…

数据库——单表查询

一、建立数据库mydb8_worker mysql> use mydb8_worker; 二、建立表 1.创建表 mysql> create table t_worker(department_id int(11) not null comment 部门号,-> worder_id int(11) primary key not null comment 职工号,-> worker_date date not null comment…

【多模态】CLIP-KD: An Empirical Study of CLIP Model Distillation

论文&#xff1a;CLIP-KD: An Empirical Study of CLIP Model Distillation 链接&#xff1a;https://arxiv.org/pdf/2307.12732 CVPR 2024 Introduction Motivation&#xff1a;使用大的Teacher CLIP模型有监督蒸馏小CLIP模型&#xff0c;出发点基于在资源受限的应用中&…

CTF-NSSCTF题单[GKCTF2020]

[GKCTF 2020]CheckIN 这道题目考察&#xff1a;php7-gc-bypass漏洞 打开这道题目&#xff0c;开始以为考察反序列化&#xff0c;但实际并不是&#xff0c;这里直接用$_REQUEST传入了参数便可以利用了。这里出现了一个eval&#xff08;&#xff09;函数&#xff0c;猜测考察命…

spring部分源码分析及Bean的生命周期理解

前言&#xff1a; 本文整体框架是通过refresh方法这个入口进入分析&#xff1a;分析IOC容器的创建及一些Bean的生命周期的知识点&#xff0c;写得确实一般般&#xff0c;感觉自己的有些前置知识并没有理解的很到位&#xff0c;所以&#xff0c;这篇文件先记录一下&#xff0c;…

MAT使用

概念 Shallow heap & Retained Heap Shallow Heap就是对象本身占用内存的大小。 Retained Heap就是当前对象被GC后&#xff0c;从Heap上总共能释放掉的内存(表示如果一个对象被释放掉&#xff0c;那会因为该对象的释放而减少引用进而被释放的所有的对象&#xff08;包括…

CentOS 8中 更新或下载时报错:为仓库 ‘appstream‘ 下载元数据失败 : Cannot prepare internal mirrorlist

一、错误重现 CentOS Stream 8 - AppStream 0.0 B/s | 0 B 00:00 Errors during downloading metadata for repository appstream: - Curl error (6): Couldnt resolve host name for http://mirrorlis…

docker tomcat 404

HTTP 404状态码表示“Not Found”&#xff0c;即服务器无法找到请求的页面。 当用户尝试访问一个不存在的网页时&#xff0c;服务器会返回这个状态码。这个状态码是HTTP协议的一部分&#xff0c;用于告知客户端&#xff08;通常是浏览器&#xff09;服务器无法完成请求。404状…

设计模式13-单件模式

设计模式13-单件模式 写在前面对象性能模式典型模式1. 单例模式&#xff08;Singleton Pattern&#xff09;2. 享元模式&#xff08;Flyweight Pattern&#xff09;3. 原型模式&#xff08;Prototype Pattern&#xff09;4. 对象池模式&#xff08;Object Pool Pattern&#xf…

软件测试最全面试题及答案整理(2024最新版)

目录 1、你的测试职业发展是什么? 2、你认为测试人员需要具备哪些素质 3、你为什么能够做测试这一行 4、测试的目的是什么? 5、测试分为哪几个阶段? 6、单元测试的测试对象、目的、测试依据、测试方法? 7、怎样看待加班问题 8、结合你以前的学习和工作经验&#xf…

34_YOLOv5网络详解

1.1 简介 YOLOV5是YOLO&#xff08;You Only Look Once&#xff09;系列目标检测模型的一个重要版本&#xff0c;由 Ultralytics 公司的Glenn Jocher开发并维护。YOLO系列以其快速、准确的目标检测能力而闻名&#xff0c;尤其适合实时应用。YOLOV5在保持高效的同时&#xff0c…

ForCloud全栈安全体验,一站式云安全托管试用 开启全能高效攻防

对于正处于业务快速发展阶段的企业&#xff0c;特别是大型央国企而言&#xff0c;日常的安全部署和运营管理往往横跨多家子公司&#xff0c;所面临的挑战不言而喻。尤其是在面对当前常态化的大型攻防演练任务时&#xff0c;难度更是呈“几何级数”上升&#xff1a; 合规难 众…

Linux中进程的控制

一、进程的创建 1、知识储备 进程的创建要调用系统接口&#xff0c;头文件 #include<unistd.h> 函数fork() 由于之前的铺垫我们现在可以更新一个概念 进程 内核数据结构&#xff08;task_struct, mm_struct, 页表....&#xff09; 代码 数据 所以如何理解进程的独…