avatar
文章
162
标签
107
分类
5

首页
分类
友链
说说
Doraemon's Blog
搜索
首页
分类
友链
说说

Doraemon's Blog

KMP
发表于2020-11-05|算法|KMP
暑假学习了KMP,奈何掌握不深,现在又来复习,结果又是从零开始 什么是KMP?现在有一个原字符串,再给你一段模式串,问你在原字符串中是否存在一段子串等于模式串,或者模式串在原串中出现几次? BF算法,也就是人人都会的指针回朔暴力算法,略过 原串: ABABABAABA (i) 模式串: ABAA (j) 当匹配时第一个失配的位置是3(下标从0开始),然后朴素做法是把i和j指针都回朔,但其实可以利用之前已经匹配的信息的,可以找到当前失配字符之前的最大公共前后缀长度,假设长度为k,则s[i-k]…s[i-1]==t[j-k]…t[j-1],而t[0]…t[k-1]==t[j-k]…t[j-1],所以s[i-k]..s[i-1]==t[0]…t[k-1],所以只需要把j移到k位置就可以了,i指针不回朔,这样一来就只要j指针回朔,而且大概率没有回朔到0,省去大量时间,那么问题就来了,怎么找到模式串中每一个位置的k呢? 前面已经说了,k是每一个位置之前字符串(不包括k位置)的最长公共前后缀长度,而公共前后缀与原串无关,只是在模式串中求即可 求解NEXT用next[i]表示i位置之前字符串的 ...
CCPC打铁记
发表于2020-10-22|生活|竞赛
2020年10月18日,这一天是我第一次打比赛的日子,非常有纪念意义,但是时至今日我才补了这篇文章 2020年注定是不平凡的一年,突如其来的疫情改变很多人的生活轨迹,原本该在这一年大展拳脚的学长们无奈只能在家里打着练习赛,然而对我们而言,有好也有坏吧,好的是我们有更多时间去提升自己(当然全靠自觉),坏的是少了许多阅历,不管怎样,终于在2020年8月29日我们开学了,开学后经过一个星期的过渡,又回到了算法的训练中去,在下面也打了许多训练赛,每次都紧紧抱着大佬的大腿,每次成绩也都还不错(不错指的是会的都比较快的做出来了),然而只要是dp只要是新算法我们就止步于此了 又过了一个月,我们迎来的这一年的CCPC邀请赛,首先是出线问题,最终学长们也都打进去了,我们19级的因为时间还多,机会就都留给学长们了,不过一星期后,老师跟我们说可以办外卡,也可以参赛拿奖,高兴了我一天,当时我以为是线下赛,想着终于可以出去涨涨见识了,然而第二天就丧了,因为疫情,这一年几乎所有比赛都是线上举行的!一下子感觉气氛都不对了,不过毕竟是比赛,比赛前我还是有去多刷题的,然而因为好多新算法都没学,有很多题目都是干瞪眼 ...
LCA最小公共祖先
发表于2020-09-29|算法|算法
LCA 公共祖先什么是最小公共祖先,顾名思义就是俩点最近的公共祖先 如图所示: 2和5的最小公共祖先就是4 2和1的最小公共祖先就是4 3和5的最小公共祖先是1 那么怎么求呢? 先介绍两种朴素的做法,也就是超时的做法🐷 第一种: 向上标记法 想求两个点的最小公共祖先可以先从其中一个点往上找父亲结点,直到根节点,把路径标记一下,然后从另一个点开始做同样的操作,当遇到已经标记过的点的时候就停下来,这个点一定是最小公共祖先( 每次查询时间复杂度:O(n) ) CODE12345678910111213141516171819202122232425262728293031323334353637383940414243#include <bits/stdc++.h>using namespace std;const int MAXN=500100;vector<int> vt[MAXN];int fa[MAXN];bool vis[MAXN];void dfs(int u){ int len=vt[u].size(); for(int i=0;i&l ...
博弈论
发表于2020-09-24|算法|博弈论
注意注意注意: 异或运算符优先级比等于还要低!!!!二进制的运算符尽量都加上括号 必胜状态后继节点一定有必败 必败状态后继都是必胜 巴什博弈 数上博弈俩人轮流取数,一次可以取走1到m个数,假如有m+1个数,则第一个人怎么取第二个人都可以一次取走,第二个人就赢了,现在有x个数,这x个数可能是m+1的倍数,也可能不是,假设不是,那么那么第一个人就可以第一次取s个数,把m+1这个必败状态给对方,假如是,则自己就是必败了x=n*(m+1)+s Brave game (HDU1846)1234567891011121314#include <bits/stdc++.h>using namespace std;int main(){ int t; cin>>t; while(t--){ int a,b; cin>>a>>b; int mod=a%(b+1); if(mod>=1) cout<<"first"< ...
Millionaire Madness
发表于2020-09-11|题目|BFS
计蒜客之前比赛的一道题目,记录一下 G Millionaire Madness A close friend of yours, a duck with financial problems, has requested your help with a matter that will help him pay off his debts. He is the nephew of an extremely wealthy duck, who has a large vault, filled with mountains of coins. This wealthy duck has a certain coin in his possession which has a lot of sentimental value to him. Usually, it is kept under a protective glass dome on a velvet cushion.However, during a recent relocating of the coins in t ...
python_arrange
发表于2020-09-03|python
写这个代码花了一个小时,因为刚学了一点点OS模块,还不是很熟悉,写完后功能也都有,但是!!!导出为exe文件时不小心误删了py文件,气死我了!又重新写了一遍。 新加了GUI界面的整理页面小程序,效果如下图所示 GitHub项目地址 Here 效果图: {height=”400”,width=”400”} CODE1(不含有重命名)12345678910111213141516171819202122232425262728293031323334353637383940414243444546import osfrom shutil import copyfiledef create(): print('------创建文件夹------') for i in var_list: Path_now = os.path.join(Path, i).replace('\\', '/') if(not os.path.exists(Path_now)): os.m ...
浅谈哈希
发表于2020-08-16|算法|集训
前言 趁着还没忘记录一下吧🐷 哈希能干些啥?学一个新算法首先一定要知道学这个能干些啥对吧,我们是为了用某个东西而去学这个东西而不是盲目目的的学,现在假如给你两段字符串让你去比较他们是否相同,如果暴力做法就是从头到尾扫一遍,都相同则相同,复杂度为O(N),假如数据量非常大,而且字符串长度很大,现在题目就变成了给你n个字符串,现在又给你t个字符串问你每一个字符串是否在这n个字符串中,平常做法时间复杂度O(tt个字符串每一个字符串长度\n),若用哈希预处理时间复杂度降到O(t*字符串长度+n),也就是把那n个字符串预先处理一下,使得接下来比较每一个字符串时时间复杂度变成O(1),让我们来看一下具体怎么操作吧 思想其实哈希和二进制思想是类似的,如果让你比较两个二进制串是否相同,你肯定会想到把二进制转成十进制比较起来会更方便,因为复杂度降低到了O(1),不用你去逐位比较了,那字符串也是可以像二进制那样转换成为一个数字的,例如:abcd这个字符串可以转换成为ap^3^+b\p^2^+c*p^1^+d*p^0^,这里的p值是多少先不说,每一个字符都是有acall值的,我们可以直接利用这一点把每 ...
积分赛5
发表于2020-08-15|题目|集训
最友好的一次积分赛2333应该也是最后一个个人积分赛了,不知道最后一次会不会是团队赛,再说吧,已经八月十五了,自从集训以来每天都有训练,虽然晚上一般都是有些时间去记录一些题解的,但是懒癌晚期的我真的不想去写,终于今天下定决心,趁着这两天我要补一下题解,把最近有意义的题目记录一下,也算是一个复习吧🎉 D 何不好的晨练描述 何不好是一名晨练爱好者,每天他都要一大早出门进行晨跑锻炼,何不好生活的城市很大, 同时也比较繁荣,路边高楼耸立,道路上车辆往来,川流不息。 晨练的同时还可以欣赏路边的风景,于是,何不好打算每天选择 M 条路段,其中包括 N 个路口。 但何不好想要从起点开始不重复的跑完所有路段,并且跑回起点,苦于是学渣的他不知道 能不能完成这个条件,于是他向你寻求帮助。 输入数据 第一行给定两个整数 N , M 。 接下来 M 行,每行有两个整数 U,V 代表路段相连的两个路口。 1 ≤ N ≤ 100,000. 0 ≤ M ≤ 100,000. 毎对儿 U, V 互不相同,且 U, V 不同。 输出数据 若能完成这个条件则输出Yes,否则输出No。 样例输入 4 4 1 2 2 ...
积分赛4
发表于2020-08-10|题目|集训
题目面板 提取码:k2fu A. 胡图图的数学难题这道题很有意思让你求斐波那契数列的平方和,一篇易懂的题解 得到公式以后直接一个矩阵快速幂就解决了 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051#include <bits/stdc++.h>#define ios ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)using namespace std;typedef long long ll;const ll MOD=1e9+7;struct node{ ll mat[2][2]; void set(){ memset(mat,0,sizeof mat); for(int i=0;i<2;i++) mat[i][i]=1; } node operator * (const node &o){ node ans; for(int ...
dfs记忆化搜索
发表于2020-08-05|题目|集训
dfs标记的位置太重要了,放在不同位置产生的效果都有巨大的差别,记录今天的一些dfs记忆化搜索题目 A- Function Run Fun题目链接 12345678910111213141516171819202122232425#include<stdio.h>#include<string>#include<string.h>#include<algorithm>#include<iostream>typedef long long ll;using namespace std;ll used[50][50][50];ll w(int x,int y,int z){ if(x<=0||y<=0||z<=0) return 1; if(x>20||y>20||z>20) return w(20,20,20); if(used[x][y][z]) return used[x][y][z]; if(x<y&&y<z) return used[x][y] ...
1…111213…17
avatar
Doraemon
记录成长经历
文章
162
标签
107
分类
5
Follow Me
公告
纵岁月在笔尖洇开深浅,初心始终是砚台上那方不涸的墨。
最新文章
分布式 ID 的生成方案
分布式 ID 的生成方案2025-09-20
分布式事务
分布式事务2025-09-19
秋招-操作系统篇
秋招-操作系统篇2025-09-17
利用云服务器搭建 vpn
利用云服务器搭建 vpn2025-09-14
Java的线程池
Java的线程池2025-03-03
最新评论
正在加载中...
分类
  • 技术8
  • 生活5
  • 算法88
  • 记录21
  • 题目36
标签
线段树+欧拉函数 AIO kmeans 强化学习 hexo 笔试 凸包 雪花算法 高精 背包 状压+前缀异或和 动态规划 分布式 ID 信息安全 操作系统 ACM冷知识 题目 文件读写 类的加载过程 STL 全排列 Leetcode BIO A*算法 miniob dfs 可持久化系列 异或题 单调栈 二进制 win10 三分 事务隔离 数据一致性 算法 图论 BFS 考研 div3 随笔
归档
  • 九月 20254
  • 三月 20252
  • 二月 20255
  • 一月 20251
  • 九月 20243
  • 八月 20242
  • 七月 20242
  • 二月 20242
网站资讯
文章数目 :
162
已运行时间 :
本站总字数 :
251.9k
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2025 By Doraemon
框架 Hexo|主题 Butterfly
Hi, welcome to my blog!
搜索
数据库加载中