计算机算法
文章平均质量分 52
雪融了就该花开
涛涛的代码小屋
展开
-
Codeforces Round #753 (Div. 3)题解
A. Linear Keyboard给你一个包含26个键的键盘,每个键对应一个小写拉丁字母。你需要在键盘上打出一个单词,单词由小写拉丁字母组成。为了打印出该单词你需要移动到对应的按键上,花费的时间是相邻按键在键盘上的位置差(取绝对值)。Input:第一行的整数,表示测试用例的数量,随后两行是测试用例的描述;第一行是长度为26的a~z组成的小写字符串keyboard。第二行是需要打出的单词s。Output:输出在给出的键盘上打出单词s需要花费的最小时间。(实际上顺序打出单词没有什么原创 2021-11-21 22:33:27 · 1111 阅读 · 3 评论 -
codeforces 1567E. Non-Decreasing Dilemma(线段树/计数)
题目链接:Problem - 1567E - Codeforces大致题意:动态维护一个数组,每次可以修改数组里一位数字,或者查询数组中一个区间内,连续非降子序列的总数量。题解:裸线段树维护数组,codeforces标记是2200分难度,但是也就是代码长度大一点。。。每个node维护左侧最长的连续非降串长跟右侧的最长非降串长。以及node区间内连续非降子序列的总数量。数量合并方法: tree[pos].lLen = tree[pos * 2].lLen; tree[pos].原创 2021-09-28 15:02:31 · 235 阅读 · 0 评论 -
Codeforces 1555E(线段树+双指针)
本人回来亲自主持博客了,好久不写这种东西,30分钟切个2100分的水题复健一下题目链接:Problem - 1555E - Codeforces大致题意:在数轴[1,m]上有若干条线段,且每个线段有一个value,现在需要找一个线段集合,使得集合里的线段覆盖整个[1,m]区间,且集合里的线段value最大最小值差值尽量小。输出这个差值。题解:一眼水题。。。根据线段的value从小到大排序,双指针维护value在l~r之间的线段,并实时知道是否这些线段能覆盖[1,m]区间。这个维护的.原创 2021-09-27 19:49:24 · 123 阅读 · 0 评论 -
codeforces - 1574D - The Strongest Build
题目连接:Problem - 1574D - Codeforces题目大意:1个玩家有n个装备槽,第i个装备槽中有c[i]个装备,这c[i]个装备中第j个武器的武力值为a[i][j]。玩家每次从每个装备槽中选择一个装备,构成一个装备组合。游戏给玩家设定m种被ban的装备组合,程序需要输出没有被ban的组合中玩家可以选出的武力总值最高的一个装备组合。题解:将每一条被ban的组合插入set ss中。用pair<int, vector<int>>记录每一种组合的&l原创 2021-09-25 00:14:45 · 192 阅读 · 0 评论 -
牛客 NC97 - 字符串出现次数的TopK问题
字符串出现次数的TopK问题_牛客题霸_牛客网给定一个字符串数组,再给定整数k,请返回出现次数前k名的字符串和对应的次数。返回的答案应该按字符串出现频率由高到低排序。如果不同的字符串有相同出现频率,按字典序排序。对于两个字符串,大小关系取决于两个字符串从左到右第一个不同字符的 ASCII 值的大小关系。比如"ah1x"小于"ahb","231"<"32"。字符仅包含数字和字母。题解:定义一个结构体ss,结构体中包含一个字符串str和该字符串出现的次数cnt。并定义该原创 2021-09-17 23:44:13 · 413 阅读 · 0 评论 -
牛客 NC93 - 设计LRU缓存结构
设计LRU(最近最少使用)缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能1. set(key, value):将记录(key, value)插入该结构2. get(key):返回key对应的value值提示:1.某个key的set或get操作一旦发生,认为这个key的记录成了最常使用的,然后都会刷新缓存。2.当缓存的大小超过K时,移除最不经常使用的记录。3.输入一个二维数组与K,二维数组每一维有2个或者3个数字,第1个数字为opt,第2,3个数字为key,value原创 2021-09-17 23:15:36 · 169 阅读 · 0 评论 -
牛客 NC128—接雨水问题
https://www.nowcoder.com/questionTerminal/31c1aed01b394f0b8b7734de0324e00f给定一个整形数组arr,已知其中所有的值都是非负的,将这个数组看作一个柱子高度图,计算按此排列的柱子,下雨之后能接多少雨水。备注:题解一:双指针left,right分别从两边向中间遍历,找到每个水洼的边界。在每一次循环中,从左向右遍历,当右边的高度小于当前左边界的高度时,这个位置上可以接水,累加接水量。当...原创 2021-09-09 00:47:53 · 408 阅读 · 3 评论 -
Codeforces Round #685 (Div. 2)E2. Bitwise Queries (Hard Version)题解(数学竞赛/组合构造题)
题目链接:https://codeforces.com/contest/1451/problem/E2大意:这是一个人机交互题。一共有N个[0, N-1]的整数,其中N是2的幂次。允许每次人指定其中两个数字与AND、OR、XOR其中一种运算,查询其计算后得到的结果。最多查询N + 1次,复现出整个数组每个数字的值。思路:记我们的原始的数组为A数组。定理一:对于非负整数x与y,有:x + y = (x xor y) + 2 * (x and y)证明:按照比特位,按位计算。.原创 2021-07-15 23:23:53 · 140 阅读 · 1 评论 -
【NOIP2015】子串(动态规划+滚动数组)
题目传送门:https://uoj.ac/problem/149大致题意:数据范围:题解:这题没啥好说的,因为NOIP出的DP题,就好像一个癌症晚期出的题目一样了。DP[n][m][k]为A字符串前n位中一部分匹配了B字符串的前m位,并且切分了k次的方案数量。整一个临时数组,temp[n][m][k],为A字符串第n位中一部分匹配了B字符串的第m位,并且切分了k次的方案数量。那不就有:temp[i][j][k] = dp[i - 1][j - 1][k - 1]...原创 2021-07-08 17:34:47 · 187 阅读 · 2 评论 -
【统一省选2021 B卷】取模(数论)
题目传送门:https://uoj.ac/problem/627题目大意:数据范围:题解:对于每个值不同的a[k],把其余的数字根据%a[k]的值排个序得到数组b,然后b[i]+b[j] % a[k] = b[i]+b[j]或者 b[i] + b[j] - a[k]。所以要么双指针枚举b[i]+b[j]<a[k],要么直接是取最大的b[i]+b[j]-a[k],也就是b[n-1]+b[n-2]-a[k]。直接枚举每一个k就可以拿起码60分了。。。那么我们根据a[k]从大到小枚.原创 2021-06-30 11:53:22 · 206 阅读 · 1 评论 -
【统一省选2021 B卷】数对(送分题)
发一道水题题解。为什么省队选拔赛只有NOIP 1/5的难度呢?反转了,NOIP才是省队选拔赛,背后的原因令人三级烧伤。毕竟学弟NOIP143分进了省队。赢麻了。题目链接:https://uoj.ac/problem/623大致题意:数据范围:题解:、、、你要是数据范围是1<=ai<=1e9我还觉得有点做头,虽然也没啥意思。但是5e5这个范围直接把数据映射在桶里,然后筛法暴力拿不就好了。不吐槽了。上代码:#include "bits/stdc++.h"原创 2021-06-30 09:58:55 · 151 阅读 · 1 评论 -
NOIP2020T2 字符串匹配(递推/DP+筛法枚举+前缀和优化+EXKMP)
题目链接:https://uoj.ac/problem/581题目大致意思:数据规模:T<=5, S长度不超过2^20题解:可以说是非常阴间了放在NOIP第二题。我们拆解一下问题,首先我们需要枚举若干个(AB)^i,那么每个(AB)^i 从 (AB)^(i-1) 递推出来,中间一定长度的一段子串是否为与对应长度前缀相同,可以哈希去处理,但是精确做法是exkmp算法。为什么NOIPT2考EXKMP?可能是时代变了吧。EXKMP算法可以参考百度百科。作用是算出一个串A的所有后.原创 2021-06-29 15:27:27 · 397 阅读 · 1 评论 -
毒瘤赛题讲解【NOIP2020T1】排水系统(拓扑排序+GCD+__uint128_t)
今天做了下去年的NOIP题目看着题目觉得怪怪的,然后一看分数线浙江一等奖195分上海一等奖120分最低的省份70分可以说是逆天了。。。题目出的很神经病。。。体感不适。我把这几题的题做做给大家讲讲。第一题题目链接:https://uoj.ac/problem/580大致题意:有个有向无环图排水系统,从一部分节点节点开始排水,然后均匀的进入其他的入节点。。直到水拍到出水口。最后输出这些出水口的水量,互质比例形式表示。先不吐槽第一道题考图论。也许是拓扑排序2020年默认小学生都原创 2021-06-28 21:02:09 · 796 阅读 · 1 评论 -
NOI 2013 矩阵游戏
原题传送门:https://uoj.ac/problem/124大致题目意思:其中于是,网上便出现了名为矩阵费马小定理的说法,我一头雾水证明不出来,只是花了一个多小时,才证明出了一个递推表达式符合费马小定理的情况,证明方法如下:于是,默认可以认为矩阵乘法也符合欧拉定理(大嘘)所以我便写了一手取模,矩阵快速幂,通过了所有的比赛时用例,皆大欢喜。代码如下:#include "bits/stdc++.h"typedef long long LL;using nam原创 2021-06-25 10:40:32 · 105 阅读 · 0 评论 -
NOI2014随机数生成器(退役多年的社畜自我复健日记#2)
题目传送门:https://uoj.ac/problem/6大致题意:按照给定的式子生成一个N*M的数字矩形(数据大致随机),里面每个数字不相同(为1~N*M)。然后从左上角到右下角找一条单调向下向右的路径,路径上的数字排序后字典序最小。题解:选择路径的很显然,就是每次在可以选择的范围内尽量选最小的那个数字,然后逐渐缩小选择范围。直接写了一个分支的递归,水了30分。然后考虑一个很优秀的思路:每次从1到N*M去枚举,看看每个数字是否在可选范围内,在就选择。于是尝试了维护了两个单调队列,原创 2021-06-23 14:35:59 · 111 阅读 · 1 评论