[Lyndon分解] HDU 6761 Minimum Index (2020多校训练) 题解 待补。 Code #include <iostream> #include <algorithm> #include <cstring> #include <string> #include <cstdi ...
分类:
其他好文 时间:
2020-07-22 01:46:30
阅读次数:
178
题意: ? 给定三个数字 \(n,c,k\) ,求以下式子 ? \(\sum_{i=0}^nF(ic)^k\%(10^9+9)\) ? 其中$F(x)$为斐波那契数列第$x$项。 ? $1\leq n,c\leq10^{18},1\leq k \leq10^5$ 分析: ? 在比赛的时候我搜索了一波 ...
分类:
其他好文 时间:
2020-07-22 01:44:09
阅读次数:
110
只需要用二进制来表示50个数,这样不会超过ll范围 之后按照dfs建树后建线段树维护 #include<iostream> #include<algorithm> #include<stack> #include<vector> #include<cstring> using namespace s ...
分类:
其他好文 时间:
2020-07-10 00:39:02
阅读次数:
94
看到最小最大,显然是经典二分 因此只需要枚举最大距离进行check 如果能存在k组或以上能满足组间距离大于等于mid 那么就可以放大,否则缩小 #include<iostream> #include<algorithm> #include<stack> #include<vector> #inclu ...
分类:
其他好文 时间:
2020-07-10 00:22:13
阅读次数:
70
先求一下lca,之后比较一下给定两点的lca与所求点的关系后分类讨论 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=2e5+10; int h[N],ne[N],e[N],idx; int ...
分类:
其他好文 时间:
2020-07-09 23:58:04
阅读次数:
88
用线段树维护区间剩余的最大值,这样可以辅助二分,越左越好 对于用完k堆的,直接将他的值变为0即可 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=6e5+10; struct node{ i ...
分类:
其他好文 时间:
2020-07-07 23:39:52
阅读次数:
91
写的略微复杂了一些,分了很多种类。 首先肯定只能写一次建树之后进行分类讨论查看位置 #include<iostream> #include<queue> #include<map> #include<vector> #include<cstdio> #include<algorithm> #incl ...
分类:
其他好文 时间:
2020-07-07 09:47:23
阅读次数:
56
概率+暴力dfs 可以暴力枚举所有的状态,判断是否成立,对于每个状态,记录抽到这个状态的概率,如果能成功,就在答案上加上这个概率 #include <cstdio> #include <algorithm> #include<iostream> using namespace std; const ...
分类:
其他好文 时间:
2020-07-05 20:53:24
阅读次数:
57
题意:给定一个字符串,每个操作1修改字符串上的某个值 2.给x,y,询问以x开头和以y开头的两个后缀字符串的最长前缀的大小。 经典的线段树维护hash值,之后对于每个询问,用二分查询答案,带了两个log 比赛的时候一直被卡,结束后加了一行如果第一个字母不等就略过的优化就卡过了,太伤了。 #inclu ...
分类:
其他好文 时间:
2020-07-05 00:58:40
阅读次数:
66
思维题,题目限制了在一个长度为k的滑动窗口内必须要有l个数 因此所有%k相等的位置的状态是固定的,否则两个k中的个数就不相等 因此只需要把%k个相加,之后在k个中选最大的l个就行 #include<bits/stdc++.h> using namespace std; const int N = 1 ...
分类:
其他好文 时间:
2020-07-05 00:41:13
阅读次数:
66