- 博客(61)
- 收藏
- 关注
原创 CodeForces 1312
1312A题A题A题测网速#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 5;const int mod = 1e9 + 7;typedef long long ll;typedef unsigned long long ull;int a[N];int main(){ i...
2020-03-11 12:22:17 172
原创 BZOJ2465
BZOJ 2465题目BZOJ2465分析贪心将小球的分数从大到小排序将瓶子容积从小到大排序将球放入瓶子中时遵循尽量找到比小球分数大的瓶子中容积最小的。代码const int N = 205;int a[N];struct node{ int c; int q;} b[N];bool cmp(int a, int b){ return a > ...
2020-01-26 13:33:52 188
原创 CodeForces 17E
CodeForces 17E题目17E分析回文树裸题这题由于空间的限制,所以要使用邻接表的形式。。转换一下就成了回文树裸题了。求相交的回文串个数。。转换:求相交的个数 === 总个数 −-− 不交的个数求回文串的总个数:回文树可以解决回文树可以求到 iii 的回文串个数 A[i]A[i]A[i] ,把串反着插入回文树中就得到从 iii 开始的回文串个数 B[i]B[i]...
2019-08-17 11:32:55 169
原创 BZOJ2565
BZOJ2565题目BZOJ2565分析前置知识: manachermanachermanacher要知道 manachermanachermanacher 的性质:插完无关字符后得到的回文路径数组 hw[i]hw[i]hw[i] ,可以通过这个数组得到原字符串当前位置下的最长回文路径即:hw[i]−1hw[i] - 1hw[i]−1。这个可以自己模拟模拟假设 manacher...
2019-08-12 23:49:30 172
原创 欧拉定理及其推论
欧拉定理及其推论欧拉定理内容:若正整数 a,na,na,n 互质,则对于 aφ(n)≡1(modn)a^{\varphi(n)} \equiv 1 \pmod naφ(n)≡1(modn) ,其中 φ(n)\varphi(n)φ(n) 为欧拉函数。证明:(略欧拉定理推论内容:若正整数 a,na,na,n 互质,则对于任意正整数 bbb ,有 ab≡ab&ThinS...
2019-08-12 13:11:53 1640
原创 BZOJ3155
BZOJ3155题目BZOJ3155分析要求的 SnS_nSn :Sn=∑i=1n∑j=1iajSn=∑i=1n(n−i+1)ai容斥一下:Sn=(n+1)∑i=1nai−∑i=1ni×ai\begin{aligned}&S_n = \sum_{i = 1}^{n}\sum_{j = 1}^{i}a_j \\&S_n = \sum_{i =...
2019-08-07 23:11:13 150
原创 BZOJ1103
BZOJ 1103题目BZOJ1103分析考虑树链剖分本题考虑边的个数,而不是点的个数。但是可以考虑用点权代替边权,nnn 个点会有 n−1n - 1n−1 条边,所以在操作时只考虑 n−1n - 1n−1 个点即可。代码const int N = 250005;int head[N], ver[N], Next[N];int d[N], son[N], fa[N],...
2019-08-07 21:06:38 194
原创 P1306 斐波那契公约数
P1306 斐波那契公约数题目P1036分析记个结论:fnf_nfn 表示 FibonacciFibonacciFibonacci 数列第 nnn 项。gcd(fn,fm)=fgcd(n,m)gcd(f_n,f_m) = f_{gcd(n,m)}gcd(fn,fm)=fgcd(n,m)矩阵快速幂一下,在用结论求一下即可。。代码const int mod = 1...
2019-08-07 16:35:22 108
原创 BZOJ1407
BZOJ1407题目BZOJ1407分析考虑位置移动后相等的情况。。ci+xpi≡cj+xpj(modn)c_i + xp_i \equiv c_j + xp_j \pmod nci+xpi≡cj+xpj(modn) nnn 为山洞数x(pi−pj)≡cj−ci(modn)x(p_i - p_j) \equiv c_j - c_i \pmod nx(pi−pj)≡c...
2019-08-07 16:34:49 169
原创 整除分块
整除分块可以用到整除分块的形式:∑i=1n⌊ni⌋\sum_{i = 1}^{n}\lfloor\frac{n}{i}\rfloori=1∑n⌊in⌋每一个 ⌊ni⌋\lfloor\frac{n}{i}\rfloor⌊in⌋ 成块状分布,右端点是 n/(n/i)n/(n/i)n/(n/i) 。所以时间复杂度可以优化到 n\sqrt{n}nfor(int i = l,r;l ...
2019-08-06 21:41:20 154
原创 LOJ2332
LOJ2332题目LOJ2332分析比较神的一道题。。。首先分析出一段区间的增加和减少不会改变 [l,r][l,r][l,r] 中的数的差值,会改变的是 a[l]−a[l−1],a[r+1]−a[r]a[l] - a[l - 1],a[r + 1] - a[r]a[l]−a[l−1],a[r+1]−a[r] 这两个差值,先预处理出 b[i]=a[i+1]−a[i]b[i] = a...
2019-08-05 22:27:03 94
原创 BZOJ1036
BZOJ1036题目BZOJ1036分析裸的树链剖分。。线段树:单点更新,区间查询即可。。不会的可以看之前的博客。。代码const int N = 1e5 + 5;int head[N], ver[N << 1], Next[N << 1];int size[N], d[N], son[N], fa[N], cnt, top[N], rk[N]...
2019-08-05 16:20:36 135
原创 Catlan数
Catlan数前 100100100 个 CatlanCatlanCatlan 数string catalan[]={ "1", "2", "5", "14", "42", "132", "429", "1430", "4862", "16796", "58786", "208012", ...
2019-08-05 14:06:35 265
原创 范德蒙德卷积
范德蒙德卷积∑i=0kCniCmk−i=Cn+mk\begin{aligned}\sum_{i = 0}^{k}C_{n}^{i}C_{m}^{k-i} = C_{n+m}^{k}\end{aligned}i=0∑kCniCmk−i=Cn+mk从数量为 nnn 和 mmm 的两个堆中一共选择 kkk 个物品。这两个堆在实际意义上可以不存在∑i=1nCniCni−1=C2n...
2019-08-04 10:27:21 1707
原创 树链剖分
树链剖分问题引入:操作 111将树从 xxx 到 yyy 结点最短路径上所有节点的值都加上 zzz操作 222求树从 xxx 到 yyy 结点最短路径上所有节点的值之和两个操作分开很好解决,第一种用树上差分,第二种用 lcalcalca引入新方法:树剖是通过轻重边剖分将树分割成多条链,然后利用数据结构来维护这些链重儿子:父亲节点的所有儿子中子树结点数目最多...
2019-08-04 10:19:05 105
原创 BZOJ3631
BZOJ 3631题目BZOJ3631分析考虑 LCALCALCA + 差分主要算法不讲了。。现在考虑一下细节:a1→a2,a2→a3,...an−1→ana_1 \rightarrow a_2,a_2 \rightarrow a_3,...a_{n-1} \rightarrow a_{n}a1→a2,a2→a3,...an−1→an 标记点时在 a1→a2,a2→...
2019-08-03 14:35:40 181
原创 BZOJ2156
BZOJ 2156题目BZOJ2156分析题目题面有点问题:样例应该是3 30 1 11 2 20 2 130123 \,3 \\0 \,1 \,1\\1 \,2 \,2\\0 ...
2019-08-03 13:31:19 130
原创 P3128
P3128题目P3128分析考虑 LCALCALCA在树上对点进行差分:cnts++,cnts++,cntlca−−,cntfather(lca)−−cnt_s ++,cnt_s++,cnt_{lca}--,cnt_{father(lca)}--cnts++,cnts++,cntlca−−,cntfather(lca)−−再 dfsdfsdfs 对修改做子树和进行统计即...
2019-08-03 13:05:18 222
原创 差分及前缀和
差分及前缀和一维前缀和(略P3131二维前缀和预处理:sumx,y=∑i=1x∑j=1yai,jsum_{x,y} = \sum_{i = 1}^{x}\sum_{j = 1}^{y}a_{i,j}sumx,y=∑i=1x∑j=1yai,jsum[x][y]=sum[x][y−1]+sum[x−1][y]−sum[x−1][y−1]+a[x][y]sum[x][y] =...
2019-08-03 11:18:00 605
原创 BZOJ1485
BZOJ1485题目BZOJ1485分析可以找规律发现是 CatlanCatlanCatlan 数列。。还是证明一下:性质2:a1<a3<..<a2i−1a_1 < a_3 < ..<a_{2i-1}a1<a3<..<a2i−1 , a2<a4<...
2019-08-02 23:10:45 184
原创 BZOJ1816
BZOJ1816题目BZOJ1816分析考虑二分。。发现若二分最多组成套牌数目,[1,r][1,r][1,r] 可以组成,[1,r−1][1,r - 1][1,r−1] 也必然可以组成,显然满足单调性。二分套牌数目,因为要组成 midmidmid 数目的套牌,所以 a[i]a[i]a[i] 的数目都不可能比 midmidmid 小,如果比 midmidmid 小那么就要使用 j...
2019-08-02 15:21:50 159
原创 BZOJ5293
BZOJ 5293题目BZOJ5293分析考虑 lcalcalca 。。注意到 kkk 的范围只有 505050 这提示我们再询问之前预处理所有的 kkk 下的前缀和,在询问中统计即可。注意取模。代码const int SIZE = 300010;const int mod = 998244353;ll f[SIZE][20], d[SIZE], dist[SIZE]...
2019-08-01 21:54:55 183
原创 P3131
P3131题目P3131分析题目解法比较套路。。求和大概率前缀和,所以前缀和先预处理。。根据题目要求:(sum[r]−sum[l−1])mod  7=0(sum[r]mod  7)−(sum[l−1]mod  ...
2019-08-01 12:56:59 379
原创 BZOJ1059
BZOJ1059题目BZOJ1059分析考虑二分图。。参考黄学长思路:同行同列的点无论经过多少次变换仍然是同行或同列,所以题目可转换为能不能找到 nnn 个互相不同行或同列的 111 点。只交换列,不用管行:如果每一行都有列来获得 111,则交换行不影响列中 111 的数量具体做法:当 a[i][j]=1a[i][j] = 1a[i][j]=1 即:这个点是黑色的时候, i,...
2019-07-31 23:25:20 187
原创 BZOJ1191
BZOJ1191题目BZOJ1191分析由题意可知,可以从二分图考虑建模。以题目为左部顶点,锦囊为右部顶点。根据题目要求题目和锦囊连边即可。注意当当前点没有增广路时,跳出循环。代码const int N = 1005;const int M = 1e6 + 5;int n, m, tot;int head[N], Next[M], ver[M], visit[N];...
2019-07-29 16:49:19 93
原创 BZOJ1028
BZOJ1028题目BZOJ1028分析nnn 的范围较小,可以暴力枚举。。第一层循环枚举缺的那个和牌的数字,判断加上那个数字能否和牌。第二层循环枚举对子牌,判断是否有个数大于等于 222 的数字当对子牌。若可以,判断能否组成顺子能刻子,先考虑刻子,原因是顺子牌构成需要其他牌的辅助,而其他的牌不一定存在,所以优先自己解决,这样更容易和牌。第三层循环判断顺子、刻子。时间复...
2019-07-28 17:58:17 174
原创 BZOJ1258
BZOJ1258题目BZOJ1258分析真 —— 规律题首先题目中样例解释有误:T12T12T12 靠 T14T14T14 和 T4T4T4 。经过找规律可知:当读入是 T......4T......4T......4 时: 答案显然是:T.......1T.......2T.......3T.......1 \quad T.......2\quad T.......3T......
2019-07-27 22:56:17 161
原创 BZOJ选(大佬的
普及 2659 数学 1968 整除分块 2761 去重 3767 高精度A+B 1432 找规律(神题) 3098 随机卡HASH 1800 统计 1218 枚举 4001 生成函数 + 卡特兰数 2760 字符串处理 1088 DP/判断 1034 贪心 1207 DP 2748 DP 4302 分类讨论 1083 最小生成树 2563 转换后排序 3...
2019-07-27 01:06:47 135
原创 BZOJ1800
BZOJ1800题目BZOJ1800分析采用断环成链的处理方式,枚举链的起点,再枚举三个断点 i,j,ki,j,ki,j,k ,满足 sum[i]−sum[s−1]==sum[k]−sum[j]&&s[j]−sum[i]==sum[s+n−1]−sum[k]sum[i] - sum[s - 1] == sum[k] - sum[j] \&a...
2019-07-26 13:01:55 138
原创 CF1196F
CF1196F题目CF1196F分析看到题懵逼了。。。赛后补题,真的发现数据范围很重要啊。。。题目要求任意起点终点的最短路径中的第 kkk 短。最短路 O(nlog(n))O(nlog(n))O(nlog(n)) ,枚举起点 O(n)O(n)O(n) ,总的复杂度 O(n2log(n))O(n^2log(n))O(n2log(n)) 显然通过不了。。这时看到 kkk 的范围 k...
2019-07-26 10:25:04 364
原创 CF1196C
CF1196C题目CF1196C分析模拟划线法:图有点丑画红色的部分就是不能到达的部分,初始化 x[0]=−105,x[1]=105x[0] = -10^5,x[1] = 10^5x[0]=−105,x[1]=105 作为 xxx 方向的边界,y[0]=−105,y[1]=105y[0] = -10^5,y[1] = 10^5y[0]=−105,y[1]=105 作为 y...
2019-07-25 20:24:14 422
原创 HDU6601
HDU6601题目HDU6601分析多校题。判断三角形能不能构成,FibonacciFibonacciFibonacci 数列 :1,1,2,3,5,8,13...1,1,2,3,5,8,13...1,1,2,3,5,8,13... 数列中任意三个数构不成三角形,所以看最差的情况也就是第 444444 位数超过了范围。所以只用判断区间中最大的 444444 位数就可以了,在 44...
2019-07-24 20:16:36 212
原创 BZOJ1197
BZOJ 1197题目BZOJ1197分析考虑 DPDPDPf[i][j]f[i][j]f[i][j] 表示 前 iii 维空间划分 jjj 部分最多可以分出多少空间可以找找规律:一维是:2,4,6,8,10...2,4,6,8,10...2,4,6,8,10...二维是: 2,4,8,14,22...2,4,8,14,22...2,4,8,14,22...找规律可以发...
2019-07-23 22:57:00 135
原创 金字塔
金字塔题目金字塔分析f[l][r]f[l][r]f[l][r] 表示 子串 s[l∼r]s[l \sim r]s[l∼r] 对应着多少不同方案数。如果枚举子串 s[l∼r]s[l \sim r]s[l∼r] 划分点数量和所有划分点的位置,复杂度太高。又可想到把子串分成两个部分,每部分可由若干颗子树组成,不过这样可能会产生重复计数。所以可以只考虑子串 s[l∼r]s[l \s...
2019-07-21 10:44:55 113
转载 BZOJ题目选做(大佬的)
普及 2659 数学 1968 整除分块 2761 去重 3767 高精度A+B 1432 找规律(神题) 3098 随机卡HASH 1800 统计 1218 枚举 4001 找规律 2760 字符串处理 1088 DP/判断 1034 贪心 1207 DP 2748 DP 4302 分类讨论 1083 最小生成树 2563 转换后排序 3097 构造卡H...
2019-07-20 01:27:05 227
原创 BZOJ2748
BZOJ2748题目BZOJ2748分析考虑 DPDPDPf[i][j]f[i][j]f[i][j] 表示音量为 jjj 可以由前 iii 次增加或减少构成f[i][j]=1(f[i−1][j+a[i]]=1∣∣f[i−1][j−a[i]]=1)f[i][j] = 1 \qquad (f[i - 1][j + a[i]] = 1 || f[i - 1][j - a[i]] ...
2019-07-19 20:41:04 167
原创 BZOJ1034
BZOJ1034题目BZOJ1034分析比较神的贪心分三种情况:我方最弱的比对方最弱的强,稳拿两分我方最强的比对方最强的强,稳拿两分我方最弱的和对方最强的同一个实力,拿一分最后实在不行让最弱的去送对方最强的人头代码const int N = 1e5 + 5;int a[N];int b[N];int n;int solve(int a[], int b...
2019-07-19 17:56:28 147
原创 BZOJ2563
BZOJ 2563题目BZOJ2563分析贪心一般这种问题的贪心都是对等效权值进行贪心构造。所以可以将边权等效到两个连接的点构成点权。又因为在同一选择集合中的两个点 a,ba,ba,b 如果有边相连的情况,那么在计算 a,ba,ba,b 的点权时边权只用计算一次,所以化边权为点权时除以了 222 。不在一个选择集合的两个点的边权值会通过相减抵消,不用计算。代码const ...
2019-07-16 21:10:27 128
原创 BZOJ2761
BZOJ 2761题目BZOJ2761分析用 mapmapmap 标记第一次出现,之后再出现就不输出就可以了hashhashhash 表的方法一直 RERERE 洛谷能够通过,可能洛谷数据水吧。。。有时间研究一下。。。记录一下 hashhashhash 质数表61, 83, 113, 151, 211, 281...
2019-07-15 12:26:13 139
原创 BZOJ2462
BZOJ 2462 (二维hash学习)二维hash创建两个种子 base1,base2base1,base2base1,base2 创建一个 无符号 646464 位数组 hashahashahasha先对每一行做前缀 hashhashhash 值for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) ...
2019-07-15 12:24:31 111
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人