
算法
Sailist
这个作者很懒,什么都没留下…
展开
-
2022.11.26 美团笔试 祝福血怒
笔试时用的 dfs 加普通剪枝 55%(贪心只能过 36%),笔试后琢磨了下动态规划,解出来了,妈的,思路变一下,简单的要死,这应该算背包九讲里的泛化背包问题了。令 mem[j] 为 i 价值时存储的最大攻击力数值,每个卡牌遍历更新一遍 mem。原创 2022-11-27 10:22:01 · 3105 阅读 · 0 评论 -
回文串算法题解
假设已得到一个回文子串 s,回文中心为 i,则在该回文中心右侧的下标 j(j>i),可以复用对称侧的信息,避免直接以 j 为中心进行扩展,这是 Manacher 算法的核心思想,从而实现了近似一遍遍历的复杂度。中心扩展法是枚举每一个可能的回文中心,对每个回文中心,用两个指针分别向左右两边拓展,当两个指针指向的元素相同的时候就拓展,否则停止拓展。可以假设字符串中间有间隙,则 n 个字符共有 2n-1 个回文中心(可以分两遍遍历,第一遍奇数中心,第二遍偶数中心。和该最右边界对应的回文子串的回文中心。原创 2022-11-14 16:56:57 · 3388 阅读 · 0 评论 -
【python】归并排序无递归实现(堆栈模拟)
【代码】【python】归并排序无递归实现(堆栈模拟)原创 2022-10-09 11:11:53 · 222 阅读 · 0 评论 -
CCF201803-3,URL映射
没什么难度,主要还是如何很好的把字符串处理成结构体逻辑处理的时候,先分为两类,一类是有path的,一类是没有path的,没有path的先通过匹配项数过滤掉一部分,然后逐项匹配,其中int是判断是否是数字,str直接通过;判断path的时候,从当前项到最后全部都是。匹配到的特殊项加入vector,最后统一输入,path匹配的需要把相应的项用字符串连接到一起然后如果结尾有斜杠的话特殊需要特殊处理...原创 2019-08-22 11:49:29 · 202 阅读 · 0 评论 -
ccf201903_3,损坏的RAID5
这个题竟然卡输入,超时超了我两天,都快疯了,然后挨个试验,最后发现仅仅改了一下接受输入的方法,就简单的通过了,简直shit,卡输入太恶心了说道这个题,思路非常简单,主要注意以下几点:给定块编号,如何映射到相应的硬盘和相应的块区如果相应的硬盘丢失,如何异或操作要注意如果硬盘丢失了一块以上,并且要找的正好是那一块硬盘的数据的话,那么肯定就没有办法恢复数据,这里提前判断一下可以减少开销之后...原创 2019-08-16 12:09:38 · 408 阅读 · 0 评论 -
CCF201903-2,24点
//// Created by saili on 2019/8/12/0012.//using namespace std;#include<cstdio>#include<cstdlib>#include<stack>#include<queue>char eq[10];void solve(){ scanf("%s...原创 2019-08-12 11:14:54 · 188 阅读 · 0 评论 -
c算法题中各种输入和输出方法技巧详解!
文章目录引言导入io库输入各种输入方法`scanf`格式说明符基本示例读入整数读入其他类型的数字读入单个字符读入字符串扫描字符集合`getchar()``gets()``fgets()`输入技巧限制每次读入的字符串长度读入字符但是忽略判断行尾输出输出方法`printf()``puts()``putchar()`输出技巧输出精度限制输出到字符串参考资料引言今天刷题,写了好久写完了,一提交0分,改...原创 2019-08-15 16:16:27 · 2527 阅读 · 1 评论 -
CCF201903_4,消息传递接口
这个题感觉有失水准…有点过于简单了我看了看网上的其他代码,好像都是在模拟通信,实际上没有这么麻烦。这道题实际上就是队列的应用,每一个设备代表一个队列,要保证不死锁,那么每次循环一遍所有的设备,必须要处理一对信息。因此需要两个bool值,一个代表全部队列是否为空,一个代表本次循环是否处理了信息,如果队列为空说明没有死锁,如果一次循坏未处理信息那么代表存在死锁。实现的时候,每遍历到一个R,那么就...原创 2019-08-20 08:59:58 · 260 阅读 · 2 评论 -
CCF201812_4,数据中心
就是最小生成树的模板算法,在中间过程中记录路径最大值即可,注意的是卡数据结构,邻接矩阵肯定是不行的,要选择开辟空间灵活一点的原创 2019-08-20 07:33:29 · 198 阅读 · 0 评论 -
CCF201809-3,元素选择器
嗯,也是折腾了一上午的题啊…好菜啊…其实就是普通的逻辑题,数据范围都很小根本不用担心超,就是把查询逻辑处理好久可以了主要注意:标签大小写不敏感,id大小写敏感,会在一个测试点里集中测试,只有这个没注意能拿90分(我就在这卡了好久,直到看到一个人的答案才恍然大悟)标签和id是可以混合的,也就是可以 div #two p这样,我不清楚为什么说后代选择器A B均为xxxbalabala的,但实际...原创 2019-08-14 12:16:27 · 167 阅读 · 0 评论 -
ccf201809_4,再卖菜
一开始列了不等式,然后开始递推,结果只有10分。。。后来看了一个答案说用动态规划,代码看不懂…然后看了另一个答案用暴搜+记忆化搜索,欸这个可以,于是写出来了…感觉确实没什么难度,用递归的思想其实就一路往下推就可以,主要是怎么写出来。#include<cstdio>#include <cstring>#include <algorithm>using n...原创 2019-08-18 17:18:45 · 186 阅读 · 0 评论 -
CCF201812-3,CIDR合并
嗯,折腾了一上午,终于过了,这个题说难也难,说简单也简单,如果看着分数调bug满分还是挺容易的,但是考试时候一次性通过的可能就比较低了。。。要写出来主要是要意识到两点,一个是从小到大合并的时候,要比较的是小的那个ip的前缀长度范围内两个ip是否相等,如果前缀长度范围内相等,那么另外一个一定是子集;二是同级合并的时候,存在递归合并的可能性,比如先一个23,然后两个24,两个24合并之后会生成一个2...原创 2019-08-13 14:02:47 · 246 阅读 · 0 评论 -
Bribe the prison思路理解
给非ACMer看的详解,大佬请移步…这个的状态转移矩阵一直让我莫名其妙。。。然后debug了几遍才明白是什么意思…比如20个犯人,释放第3,6,14个那么dp[i][j]的含义就是释放区间[I,j]中该释放的犯人需要的最少金币这个i指的是要释放的犯人中的第i个,而不是总的第i个这样,一些初值可能就明显了,比如为什么dp[i][i+1]=1,因为两个相连的犯人之间没有要释放的犯人0这样,...原创 2019-04-18 19:43:54 · 180 阅读 · 0 评论 -
BUC算法及其Python实现
数据分析有时候需要对多个维度上的数据进行聚集操作,完全立方体的聚集操作的复杂度是 2n2^n2n,过于复杂,而且有一些维度由于数据过小我们不需要去关心,因此需要对这种聚集操作进行剪枝,取其中符合的部分进行操作,也就是计算冰山立方体。一种很粗暴的方法是先计算完全立方体,随后进行剪枝,但这种方法并没有减少复杂度,因此需要在聚集的过程中就进行剪枝,这就是算法BUC要实现的过程。算法描述...原创 2019-04-15 19:54:38 · 2035 阅读 · 0 评论 -
POJC++标准库
北大百炼OJ允许使用标准库,但版本是C++98的,因此很多好用的库如unordered_set等就没办法用…这里列一下98版在OJ中常用的可用的库#include <bitset>//提供了专门用来存放位组(一系列 bit)的容器类 std::bitset。#include <deque>//提供了双向队列容器类模板 std::deque。#include &...原创 2019-03-02 08:02:43 · 860 阅读 · 0 评论