自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 P8085 [COCI2011-2012#4] KRIPTOGRAM(kmp)

题目链接题目的意思就是给你两个字符串数组,第二个字符串数组是密码本,每个字符串对应第一个数组的一个字符串,问你第二个字符串数组在第一个字符串数组第一次出现的位置首先,怎样才是对应呢?即每个字符串出现的频率和位置相同,像aabbc和bbccd是对应的那么对应的条件是什么?不难想到找到每个字符在这个字符串前一次出现的位置即可如 aabbc 对应的数组 0 1 0 1 0bbccd 对应的数组 0 1 0 1 0重点来了我们通过上面这样的方式,就将题意变成了最基础的kmp匹配了,但是在实现过程

2022-05-28 16:12:55 629

原创 Codeforces Round #734 (Div. 3) (A-E题详解)

A. Polycarp and Coins题意:t组测试数据,每组测试数据包含一个n,问你把n元钱平均分成1块钱和两块钱,输出一块钱和两块钱的个数思路:先给两块钱,剩下的钱就是一块钱的,因为除法可能不平衡,在把差值抹掉平衡就好#include<cstdio>#include<cstring>#include<vector>#include<queue>#include<iostream>#include<algorithm&g

2021-07-25 16:54:10 537 1

原创 约瑟夫环问题(递归求解)小白也绝对能看懂

这篇文章是写给一个同学的,他说自己太笨了学不会,其实是我讲不清楚,写篇博客给他吧,这样清楚一些约瑟夫环人所皆知n个人,报到m死,问最后活下来的是原本序号几的人先正着推 假设有10个人 ,报到3死令这10个人的编号为0到9,那么就变成了报到2死我们来推下一下情况:2死, 序列变成了0 1 3 4 5 6 7 8 9让它变成7 8 0 1 2 3 4 5 6这时候就是n-1人,我们怎么推出第二个死的这个人的原本序号呢,首先死的人一定是序号2,那么它原本的序号就是(2+(M-1))%10=4,同理我

2021-07-22 17:12:18 1036 2

原创 博弈题单(未完成)

博弈这个东西,感觉很有意思但又有点难上手,先从简单的题目开始刷起吧我可是要成为博弈王的男人 (笑)Calendar Game这个题目的意思是,给你n个1900年1月1日到2001年11月4日中的某一天,亚达和夏娃一次走一天或者走一个月,谁先走到2001年11月4日谁赢,亚当先走第一步,问你每次亚当能不能赢这个是找规律题,每一次移动,月日和的奇偶性就发生了改变,除了9月30日和11月30日这两天,而如果要赢,先不考虑这特殊的两天,亚当必须一开始就在月日和为偶数的一天(11月4日为奇数)那么特殊日子

2021-07-21 16:53:45 243

原创 迪杰特斯拉(链式前向星优化)

发现迪杰特斯拉的优化过一段时间不写就直接忘光光了,写个博客加深一下印象(这里默认是双向模板)基础的迪杰特斯拉就不写了,只写优化首先是这部分void add(int x,int y,int z){ to[++count1]=y; v[count1]=z; nex[count1]=fr[x]; fr[x]=count1;}这个是记录所有单条能走通的路的,to数组代表去往哪里,v数组代表这条路的权值,nex数组是表示下一个节点的位置,fr数组表示前一个这个节点能过的路,你看到看不明白很正常,我

2021-07-14 15:41:27 380 1

原创 RMQ算法

什么是RMQ?RMQ指的是求一个区间的某个数值(例如:最大值,最小值…)首先还是要先推数学公式设a[i]是要求区间最值的数列,F[i, j]F[i,j]表示从第i个数起连续2^j个数中的最大值。(DP的状态)例如: a数列为:3 2 4 5 6 8 1 2 9 7F[1,0]表示第1个数起,长度为2^0=1的最大值,其实就是3这个数。同理 F[1,1]=max(3,2)=3,F[1,2]=max(3,2,4,5) = 5 F[1,3] = max(3,2,4,5,6,8,1,2) = 8;并且

2021-07-13 17:17:44 226

原创 洛谷题单1-7 搜索题解

P1219 [USACO1.5]八皇后 Checker Challenge这个是我最最开始的写法,也是篇幅最大的写法,每放一个棋子就考虑放这个棋子满不满足 每行每列,左斜线和右斜线都只有一个棋子,注意左斜线和右斜线是有规律的,右斜线的格子横纵坐标和都是一样的,左斜线上的横纵相减是一样的,左斜对角线下的左斜线差小于0,因为数组不能有负数,全加一个他们差的绝对值得最大值(随便一个更大得数也行,不能小),剩下的就是dfs爆搜了,没什么讲的 , 其实有个更简单的写法,但意思是一样的,就不贴上来了#includ

2021-07-12 15:56:52 559

原创 AtCoder Beginner Contest 204-E

E-Rush Hour 2题目大意是:有n个城市,从城市a到城市b会花费c + d /( t +1 )的时间,且0点的时候不允许通行,问能不能从城市1到城市n,能就输出花费的最小时间,不能输出 -1这个题写的时候很容易想到优先队列的迪杰斯特拉,但是对这个图的存储需要花费一点小心思,需要保留一个最适合出发的时间,这个时间可以从给的公式t + = c + d /( t +1得到,根据高中的知识(a + b > =2 * sqrt( a * b)),可以得知,当t = sqrt (d)-1 时,是最适

2021-06-15 13:39:20 368

原创 差分数组浅析

什么是差分数组?简单的来说,你有一个原始数组,而差分数组就是你原始数组的每一个数减上一个数假设有原始数组a[10],差分数组b[10]那么就有for(int i=1;i<10;i++){ b[i]=a[i]-a[i-1];}因为我们是从b[1]开始,所以要设个a[0]=0,而且a中的值是从a[1]开始存储差分数组有什么用?当我们要对一个区间进行修改,那么差分数组的作用一定就是求多次进行区间修改后的数组为什么要用差分数组?举个栗子我们不难发现当一个区间同时加减一个数时,差分数

2021-06-07 16:24:58 201

原创 树状数组浅析(附数组离散化)

树状数组的作用: 主要用于数组的单点修改&&区间求和我们求数组的和一般是遍历,时间是O(n),每次修改一个数时间也是O(n),树状数组的作用就是优化这个过程树状数组的思路:假设我们要计算比每个数大或小的数有几个 (题目)树状数组(如t[8])其实只有一个核心思想:用二进制形式存储数的和并进行运算什么意思?即我们每有一个数(如5),它的二进制为101,那么首先t[5]++,然后5加它本身最低位的1代表的数(1)即101(5)+001(1)=110(6),变成110(6),那

2021-05-22 13:16:26 515 2

原创 双向dfs

为什么要用双向dfs?如果dfs调栈超过1e5时,那么考虑双向dfs当进行的变换是可逆的时候,且规定步数的上限时,可以使用双向dfs从源点和终点一起搜索。这样可以把时间从O(n)->O(n/2)核心就是两个dfs分别处理一半的数据,然后进行调用附上两个题目题目一AtCoder Beginner Contest 184-F这是一个学长的代码#include<bits/stdc++.h>using namespace std;#define ll long longll

2021-05-08 12:29:40 511

原创 尺取法

尺取法用来干什么?尺取法一般用来算有关连续子序列有关的问题。注意,是连续!!!什么是尺取法?顾名思义,就是像尺子一样一段一段的取连续子序列,根据题目的不同要求做不同的判断条件(例如有时候会是循环连续子序列)核心思想取一个l,一个r做下标的标记,假如我要算一个长度为n的数组的连续子序列的和满足小于等于总和的一半的最短长度,一开始让l和r都等于0,让r不断右移直到大于总和的一半,判断一次当前长度-1与之前长度哪个更小,然后l也开始右移,直到 l到r的和小于等于总和的一半,判断当前长度与之前长度哪个更小

2021-04-29 10:51:17 193

原创 快速幂与快速乘(c语言实现)

快速幂思想快速幂是什么?简单来说,快速幂就是快速算出a的b次方模c的一种算法。那么,它的本质是什么?本质上是一个数学公式a^b % c = (a % c) * (a % c) * … *(a % c) % c(总共b个小括号) 若b为偶数 = (a^2 % c) * (a^2 % c) * … * (a^2 % c) % c (总共b/2个小括号)若b为奇数 = (a^2 % c) * (a^2 % c) * … * (a^2 % c) * a % c % c(总共(b-1)/ 2个小括号)

2021-04-27 22:59:13 704

原创 欧拉筛(线性筛)优化素数

普通筛法(埃氏筛)我们一般要得到1~n以内的素数,用的都是埃拉托斯特尼筛法(后文都用埃氏筛 代替)。那么,什么是埃氏筛?埃氏筛的本质从2开始删去素数本身倍数,向后找到的第一个数字一定是素数。证明如下:设已找到第n个素数,删去此数自身倍数后找到剩下的第一个数字L,知L之前有且仅有n个素数,且都无法整除L,即L无法被小于自身的所有素数整除,推出L是素数(L就是第n+1个素数)。照此由第一个素数2往后递推即可。即从2开始,我们把素数的所有倍数(小于n)都剔除掉,再用下一个素数,也就是3筛,把3留下,把3

2021-04-25 17:14:59 515 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除