- 博客(6)
- 收藏
- 关注
原创 Codeforces Round #769 (Div. 2)
A. ABC题目简述: 给定01字符串S ,判断其是否有长度 >= 2 的回文子串,有则输出YES,无则输出NO。思路: 对于长度 >= 3 的 S 必定包含长度 >= 2的回文子串,当长度为2或1时注意特判。代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;void solve(){ int n; string s; cin >
2022-02-04 21:40:07
745
2
原创 循环数组最大子段和
循环数组最大子段和题解:二次最大子段和求解。 此题可类比最大子段和,但如果把循环数组扩链处理后直接跑最大子段和,是不可行的,因为会导致子段和中元素数量大于循环数组长度。 换一个角度,该循环数组的最大子段和出现的位置有两种情况,一为原数组中间一段和最大,可直接跑最大子段和求解。二为首尾相接的部分最大,该种情况即是循环数组与非循环数组求最大子段和的区别所在,原因是数组中间部分出现了绝对值较大的负数,可以把数组取负,跑最大子段和后再与原数组和相加, 也可理解为求最小子段和。两种情况取最大值即可。#
2022-01-19 22:40:12
602
原创 Atcoder 235 题解
AtCoder Beginner Contest 235C - The Kth Time Query题意: 现有包含 N 个的整数序列 A 以及 Q 次查询,每次查询从序列 A 中找到 xix_ixi 第 kik_iki 的位置,若查询不到,则输出 -1。题解: 知识点:排序加二分。 将原下标及aia_iai封装结构体进行排序,键值为aia_iai,二分查找 xix_ixi 所出现的第一个位置及出现的最后一个位置加一位置,即lower_bound, upper_bound,若在序
2022-01-18 18:33:44
1138
原创 set及链表解决邻值查找
题目简述: 对于序列A中的任意数AiA_iAi, 求min1≤j<i∣Ai−Aj∣min_{1\leq j < i}|A_i - A_j|min1≤j<i∣Ai−Aj∣ ,即求当前标号之前,与 AiA_iAi最接近的值及其索引。方法一: 利用值及索引建立 vector, 然后根据值对原数组进行排序。则可得知对于AiA_iAi 数值最接近的为Ai−1 Ai+1A_{i-1}\ A_{i+1}Ai−1 Ai+1 ,然后根据原数组索引
2021-11-02 12:01:45
235
原创 利用优先队列建立哈夫曼树并输出哈夫曼编码
#include <bits/stdc++.h>using namespace std;const int N = 1e3 + 10;struct HaffNode{ int val; HaffNode *lc, *rc; HaffNode () : val(0), lc(nullptr), rc(nullptr) {} HaffNode (int _val) : val(_val), lc(nullptr), rc(nullptr) {} bo
2021-10-26 23:16:43
294
原创 dfs判断自环
有向图及重边dfs 判环及输出 dfs 判断有无自环, 即在深度优先遍历时访问到一个已经访问过的点,同时满足访问点与当前点通过返祖边相连, 则会出现环 注:dfs 过程中会出现两种特殊边, 横插边、返祖边, 当且仅当出现返祖边时会出现环。// determine whether the connected has a ring// print the length of the ringvoid dfs(int u) // when undiredted dfs(int u, int f
2021-10-17 13:00:55
493
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅