返回顶部
摘要: 问题 :对于一个字符串$s$,询问$q$次:字符串$t$是否为$s$的子序列. 题解 :我们记录一个位置$pos$,遍历$t$,在$s$中二分查找第一个下标大于$pos$并且等于$t[i]$的位置,更新$pos$. ​ 如果找不到直接标记一下即可. 代码 : 阅读全文
posted @ 2020-05-08 15:15 Rayotaku 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 题意 :RT 题解 :这题比较坑,我用了扩欧和快速幂都T了,后来学习了一种线性算法,用来求一连串数的逆元. ​ 首先我们知道 $p\equiv0 \;(mod\,p)$ . ​ 设: $p=k i +r$,$k$是$p/i$的商,$r$是余数. ​ 于是我们得到$k i+r\equiv 0\;(mo 阅读全文
posted @ 2020-05-08 15:02 Rayotaku 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 题意: 一个人在雪地上滑雪,每次可以向上下左右四个方向移动一个单位,如果这条路径没有被访问过,则需要5秒的时间,如果被访问过,则需要1秒(注意:判断的是两点之间的距离,不是单纯的点).给你他的行动轨迹,求消耗的时间. 题解:我们用两个pair来维护边,用map来对边进行标记,每次更新map记得双向更 阅读全文
posted @ 2020-05-08 12:43 Rayotaku 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 题意 :给你两个指数类型的数$Am$和$Bn$,比较他们的大小.保证底数和指数中最多只有一个为0. 题解 :题目数据非常大,肯定不能直接比较.由换底公式和$Log$函数的性质我们知道:\(LogA^m=mLogA\),又因为$Log$函数是单增的,我们便可以用它来进行大小的比较.这里要注意当底数为0 阅读全文
posted @ 2020-05-05 14:02 Rayotaku 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一组数,求最长的严格上升子序列及个数(mod 1e9+7) 题解:用动态规划来求LIS,记$dp[i]$是数组中第i个位置上的数的LIS最优解,我们遍历一遍原数组,然后找i位置前的LIS,如果$a[j]<a[i]$并且$dp[j]+1>dp[i]$那么当前i位置的最优解就应该更新成$dp[ 阅读全文
posted @ 2020-05-05 13:45 Rayotaku 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 题意:给你n个数,有m次操作,每次使得两个数相连接,询问q次,问某两个数是否连接在一起. 题解:这其实是一道并查集的裸题,这里就不再多说了,写个路径压缩的find函数即可. 代码: #include <iostream> #include <cstdio> #include <cstring> #i 阅读全文
posted @ 2020-05-05 13:22 Rayotaku 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 之前学的时候忘了上传,补. 阅读全文
posted @ 2020-04-30 01:08 Rayotaku 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个整数n,求所有n/k的值(k∈{1,2,3...,n,.......}). 题解:最简单的方法是用枚举1~sqrt(n),把除数和商放进set中,就能直接水过,但后来看其他人的题解了解到了一种新方法:分块. 1,2,3,4,5,6,7,8,9,10. 10,5,3,2,2,1,1,1, 阅读全文
posted @ 2020-04-30 01:03 Rayotaku 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 题意:给你两个正整数a和b,询问q次,每次给你一个区间[l,r],问[l,r]中有多少数字满足:x%a%b!=a%b%a. 题解:看公式无从下手的题,一般都是要找规律的.首先,我们知道,假如x%a%b!=x%b%a,那么:(x+lcm(a,b))%a%b!=(x+lcm(a,b))%b%a,(这个知 阅读全文
posted @ 2020-04-27 16:15 Rayotaku 阅读(237) 评论(0) 推荐(1) 编辑
摘要: 题意:给你n个数和一个底数k,每个数每次能减去k^i(i=0,1,2,....),每个k^i只能用一次,问是否能够将每个数变为0. 题解:我们将每个数转化为k进制,因为每个k^i只能用一次,所以我们统计每个位置上的cnt,若cnt>1,则需要多次用到k^i,则不满足条件. 代码: 1 #includ 阅读全文
posted @ 2020-04-27 14:39 Rayotaku 阅读(168) 评论(0) 推荐(0) 编辑