LOJ P10118 打鼹鼠 题解】的更多相关文章

每日一题 day17 打卡 Analysis 二维树状数组的单点修改和区间查询,和一维的差不多 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #define int long long #define maxn 4096+10 #define INF 2147483647/2-1 using namespace s…
可能是一个 SAM 常用技巧?感觉 SAM 的基础题好多啊.. 题目描述 给定一个长度为 \(n\) 的字符串 \(S\) ,令 \(T_i\) 表示它从第 \(i\) 个字符开始的后缀,求: \[ \sum_{1\le i<j\le n}len(T_i)+len(T_j)-2\times lcp(T_i,T_j) \] 其中,\(len(a)\) 表示字符串 \(a\) 的长度,\(lcp(a,b)\) 表示字符串 \(a\) 和字符串 \(b\) 的最长公共前缀. 输入输出格式 输入格式:…
后缀自动机入门. 题目描述 为了提高智商,ZJY 开始学习弦论. 这一天,她在<String theory>中看到了这样一道问题:对于一个给定的长度为 \(n\) 的字符串,求出它的第 \(k\) 小子串是什么.你能帮帮她吗? 输入输出格式 输入格式: 第一行是一个仅由小写英文字母构成的字符串 \(s\). 第二行为两个整数 \(t\) 和 \(k\),\(t\) 为 \(0\) 则表示不同位置的相同子串算作一个.\(t\) 为 \(1\) 则表示不同位置的相同子串算作多个.\(k\) 的意义…
每日一题 day45 打卡 Analysis 这道题跟LOJ P10004 一样,但是数据范围不同,不允许O(n²) 的贪心算法通过. 我们可以加一个limit 来判断这个截止期限已经不行了,所以以后出现截止期限<=limit的就不行了. LOJ上数据很水,这一个小优化就可以通过此题. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define in…
每日一题 day62 打卡 Analysis 这道题一看感觉很像搜索,但是每次枚举x∈(1,10000000)作为分母显然太蠢了. 所以我们要想办法优化代码. 优化一:迭代加深 优化二: 我们确定了搜索方式,现在就要确定搜索的上下界. 因为现在搜索的分数一定要比剩下的值小,于是有: 1/i​<x/y​ 上界满足 y<xi 设还有k个分数,因为枚举的分母是单调递增的,所以分数的值是单调递减的,可得后k个分数的值严格小于k/i,而这个值一定要比当前剩下的值大, 于是有: k/i>x/y下界满…
每日一题 day15 打卡 Analysis 树状数组 用树状数组来维护每个字符变化的次数,如果是偶数就是0,奇数就是1 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define int long long #define maxn 100000+10 using namespace std; inline int read() { int x=0; b…
每日一题 day13 打卡 Analysis 用简单的树状数组维护单点修改和查询就行了 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define maxn 500000+10 using namespace std; inline int read() { ; ; char c=getchar(); ; )+(x<<)+c-'; if(f)…
Analysis 区间dp裸题 初始化有点麻烦 i,j能匹配时要特判 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define maxn 110 #define INF 2139062143 using namespace std; int n,dp[maxn][maxn]; char ch[maxn]; int main() { memset(dp,,…
Analysis 区间dp裸题,因为是环所以存两次 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define maxn 210 #define INF 2139062143 using namespace std; int n,minn=INF,maxx; *maxn],dp_max[*maxn][*maxn]; int main() { scanf(&…
Analysis 区间dp+前缀和 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define maxn 210 #define INF 2139062143 using namespace std; int n,minn=INF,maxx; *maxn],dp_min[*maxn][*maxn],dp_max[*maxn][*maxn],sum[*max…