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

2025牛客五一集训派对day4

C

其实就是比较 a+b 和 b+a 的字典序然后加入res中即可

python中可以用cmp_to_key将比较函数传入key中

n=int(input())
nums=[]for i in range(n):nums.append(input())from functools import cmp_to_keydef compare(a, b):# 比较 a + b 和 b + a 的字典序if a + b < b + a:return -1elif a + b > b + a:return 1else:return 0sorted_nums = sorted(nums, key=cmp_to_key(compare))result = ''.join(sorted_nums)print(result)

但是会TLE,转为C++就不会了

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;bool compare(const string &a, const string &b) {return a + b < b + a;
}int main() {int n;cin >> n;  vector<string> nums(n);for (int i = 0; i < n; i++) {cin >> nums[i];}sort(nums.begin(), nums.end(), compare);string result = "";for (const auto &num : nums) {result += num;}cout << result << endl;  return 0;
}

H

构建后缀自动机SAM快速查找任意子字符串

计算bi的前缀和数组并用稀疏表快速查找区间最小值,从而计算最大区间权重和

import sys
import mathclass State:def __init__(self):self.next = [-1] * 26  # Using array for transitions, ord(c) - ord('a')self.link = -1self.len = 0def build_sam(s):ord_a = ord('a')size = 1last = 0states = [State()]for c in s:c_ord = ord(c) - ord_ap = lastcurr = sizestates.append(State())states[curr].len = states[p].len + 1while p >= 0 and states[p].next[c_ord] == -1:states[p].next[c_ord] = currp = states[p].linkif p == -1:states[curr].link = 0else:q = states[p].next[c_ord]if states[p].len + 1 == states[q].len:states[curr].link = qelse:clone = size + 1states.append(State())states[clone].len = states[p].len + 1states[clone].next = list(states[q].next)states[clone].link = states[q].linkwhile p != -1 and states[p].next[c_ord] == q:states[p].next[c_ord] = clonep = states[p].linkstates[q].link = clonestates[curr].link = clonesize = clonelast = currsize += 1return statesdef process_b(sam, b):n = len(b)max_len = [0] * ncurrent = 0length = 0ord_a = ord('a')for i in range(n):c = b[i]c_ord = ord(c) - ord_awhile current != 0 and sam[current].next[c_ord] == -1:current = sam[current].linklength = sam[current].lenif sam[current].next[c_ord] != -1:current = sam[current].next[c_ord]length += 1else:current = 0length = 0max_len[i] = lengthreturn max_lenclass SparseTable:def __init__(self, data):n = len(data)self.log_table = [0] * (n + 1)for i in range(2, n + 1):self.log_table[i] = self.log_table[i // 2] + 1self.k = self.log_table[n] + 1self.st = []self.st.append(data.copy())j = 1while (1 << j) <= n:curr = []for i in range(n - (1 << j) + 1):val = min(self.st[j-1][i], self.st[j-1][i + (1 << (j-1))])curr.append(val)self.st.append(curr)j += 1def query_min(self, l, r):if l > r:return float('inf')length = r - l + 1k = self.log_table[length]return min(self.st[k][l], self.st[k][r - (1 << k) + 1])n,m,k=map(int,input().split())A=input()
v=list(map(int,input().split()))B_list=[]
for i in range(k):B_list.append(input())sam = build_sam(A)for b in B_list:max_len = process_b(sam, b)sum_vals = [0] * (m +1)for i in range(m):sum_vals[i+1] = sum_vals[i] + v[i]st = SparseTable(sum_vals)max_sum = 0for i in range(m):current_max_len = max_len[i]if current_max_len ==0:continuea_start = i - current_max_len +1if a_start <0:a_start =0a_end = iif a_start > a_end:continuemin_val = st.query_min(a_start, a_end)current_sum = sum_vals[i+1] - min_valif current_sum > max_sum:max_sum = current_sumprint(max(max_sum, 0))

http://www.xdnf.cn/news/282205.html

相关文章:

  • 纯继电器电路控制小车自动往复运动
  • (39)VTK C++开发示例 ---选择区域
  • MFiX(Multiphase Flow with Interphase eXchanges)软件介绍
  • 5块钱的无忧套餐卡可以变成流量卡吗
  • Winform(10.常用控件3)
  • ResNet改进(36):ResNeXt与ResNet的混合模型实现
  • Spring AI 实战:第十一章、Spring AI Agent之知行合一
  • 线程与进程深度解析:从fork行为到生产者-消费者模型
  • Raycaster光线投射
  • OPENGLPG第九版学习 -视口变换、裁减、剪切与反馈
  • dpm_sysfs_add
  • 《算法精解:C语言描述》note-2 链表
  • 文章记单词 | 第64篇(六级)
  • 【Godot】使用 Shader 实现可调节的精确切角效果
  • 超详细讲解C语言转义字符\a \b \r \t \? \n等等
  • 数模13种可视化脚本-Python
  • QT设计权限管理系统
  • BUUCTF Pwn wustctf2020_closed WP
  • 【JAVA】String类深度解析:不可变性与常量池(10)
  • 五年级数学知识边界总结思考-上册
  • 含铜废水的资源化利用
  • vue-chat 开源即时聊天系统web本地运行方法
  • python进阶(3)字符串格式化
  • 普通IT的股票交易成长史--20250504实盘记录
  • 【MyBatis-2】深入浅出MyBatis开发流程:从入门到实战
  • MATLAB基于格拉姆角场与2DCNN-BiGRU的轴承故障诊断模型
  • 10倍速学完斯坦福的大模型课程
  • 数据工程:数据清洗、特征工程与增强技术对模型性能的基础性影响
  • HTTPS协议原理
  • HTTP协议(一)