自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

繁凡さん的博客

人生亦繁亦不凡!深度学习初学者,退役ACMer,知乎「繁凡」 GitHub「fanfansann」

  • 博客(42)
  • 收藏
  • 关注

原创 P4887 【模板】莫队二次离线(第十四分块(前体))

首先S1是好求的,从左到右遍历一遍a序列,累加已经扫过的位置中所有数值产生的可能与其配对的数值的计数值,没到一个新位置时候,先读取前面所有数值产生了多少个当前数值的配对计数,该数值就是S1(i), 然后将统计该新加入的数值可能产生的和其配对的数值,将这些数值的计数全部加1,由于异或之后能够配对的数值是很有限的,所以每一个位置最多会有几千次更新计数的操作,复杂度还可接受但是S2(L-1, i)单独在每次[L, R]的询问里面求,复杂度比较高,没法重复利用计算结果,但是如果询问量比较大,每个[L..

2020-11-30 22:52:34 470

原创 【图论专题】图的存储与遍历(最小环、所有环的大小)

整理的算法模板合集: ACM模板目录Part 8.1 图的存储与遍历P2661 信息传递(最小环)P2921 Trick or Treat on the Farm(求所有环的大小)题单链接:一个动态更新的洛谷综合题单Part 8.1 图的存储与遍历这里的图论内容都比较简单,涉及图的存储以及遍历图的方式。求最小环权值为1:并查集权值不定:最短路(Dijkstra / Floyd)求环的大小tarjan缩点P2661 信息传递(最小环)我们把每个人视作一个点,并向他的信

2020-11-29 22:44:52 1279

原创 【题型探究】公约数之和

#include <cstdio>#include <algorithm>#include <cstring>#include <vector>#include <iostream>using namespace std;typedef long long ll;const int N = 5000007;int gcd(int a, int b){ if(b == 0) return a; return gc

2020-11-27 20:42:07 485

原创 【USACO training】Chapter 1 入门

Section 1.1 介绍USACO Training 综述http://train.usaco.org/usacogate(USACO 97道题) USA Computing Olympiad 是美国高校的信息学测评网站,也是美国中学生的官方竞赛网站。 美国著名在线题库,专门为信息学竞赛选手准备。 全英文界面,但有非官方的中文翻译。推荐直接阅读英语原文,既准确可靠又可提高英语水平。 网站的Training题目全面,每道题附有详细题解,可查看测试数据和运行结果,便于调试、发

2020-11-24 22:41:42 1178

原创 【数学专题】矩阵乘法

【数学专题】矩阵乘法

2020-11-24 19:33:42 464

原创 【算法笔记】莫队算法(基础莫队,带修莫队,回滚莫队,树上莫队,二次离线莫队)

来这里学习莫队以及神奇的证明:莫队算法 --算法竞赛专题解析(26)我们首先考虑双指针的暴力法,发现很容易就会被卡成O(nm)O(nm)O(nm),这时候我们的莫队出现了,莫队说,我可以像变魔术一样,把O(nm)O(nm)O(nm)的算法通过一个神奇的排序方式,使得我们最坏的情况下,时间复杂度也会非常优秀:O(nn)O(n\sqrt{n})O(nn​)。莫队算法是一个离线的算法,我们先将所有的询问全部存下来,然后排序。我们的每一个询问都是一个左右区间,(l,r)(l ,r)(l,r)我们的排序方法为双

2020-11-23 22:38:47 6879 4

原创 luogu P4108 [HEOI2015]公约数数列(分块、gcd性质)

题解链接#include <cstdio>#include <algorithm>#include <cstring>#include <vector>#include <cmath>#include <iostream>#include <map>using namespace std;typedef long long ll;#define INF 2147483648//#define IN..

2020-11-22 20:14:12 292

原创 树hash - 树的同构

P5043 【模板】树同构([BJOI2015]树的同构)fx=1+∑y∈sonxfy×prime(sizey)f_x = 1 + \sum_{y\in son_x}{f_y \times prime(size_y)}fx​=1+y∈sonx​∑​fy​×prime(sizey​)gx=gfa−fx∗prime(sizex)+fxg_x = g_{fa} - f_x * prime(size_x) + f_xgx​=gfa​−fx​∗prime(sizex​)+fx​其中:fxf_xfx​ 表示

2020-11-21 22:40:54 521

原创 模板 - O(n)预处理,O(1)查询gcd

void init_gcd(){ notprime[1]=1; int i,j,d; for(i=2;i<N;i++){ if(!notprime[i]){ prime[++cnt]=i; p[i]=i; } for(j=1;j<=cnt;j++){ if((LL)prime[j]*i>=N) break; d=prime[j]*i; notprime[d]=1; p[d]=prime[j]; if(i%prime[j]==0)

2020-11-21 17:29:20 837

原创 【数学专题】同余

AcWing 203. 同余方程AcWing 222. 青蛙的约会AcWing 202. 最幸运的数字#include <cstdio>#include <algorithm>#include <cstring>#include <iostream>using namespace std;const int N = 50007;typedef long long ll;ll n, m, L;ll a, b, c, d;int

2020-11-21 12:48:14 591 1

原创 【分块】#6284. 数列分块入门 8(区间赋值为相同的值,查询区间某值个数)

整理的算法模板合集: ACM模板题目传送门碎块必须每次都遍历一遍,整块打标记这里开始我们O(n)遍历一遍打标记,当一个整块被打满标记以后(会变成相同的数字),就是O(1)查询,均摊时间复杂度为O(sqrt(n))O(sqrt(n))O(sqrt(n))#include<cstdio>#include<algorithm>#include<cstring>#include<vector>#include<cmath>#incl

2020-11-18 20:29:49 465

原创 【分块】#6283. 数列分块入门 7(区间乘法、区间加法、单点查询)

整理的算法模板合集: ACM模板题目传送门同线段树,维护的时候先乘再加。要时刻注意懒惰标记的下标是块的编号!!!#include<cstdio>#include<algorithm>#include<cstring>#include<vector>#include<cmath>#include<iostream>using namespace std;typedef long long ll;const

2020-11-16 20:12:59 349

原创 UVA11817 Tunnelling the Earth(计算几何、经纬度转空间坐标、球面距离)

整理的算法模板合集: ACM模板题目大意:以经纬度形式给出地球(当作一个球)上两个点,求这类的最短弧线距离和两点直线距离之差(四舍五入),假设地球半径为:6371009米照着训练指南上的模板打就好。#include<cstdio>#include<algorithm>#include<cstring>#include<vector>#include<cmath>#include<iostream>using na

2020-11-15 22:42:15 338

原创 UVA11646 Athletics Track(计算几何、弧长公式)

整理的算法模板合集: ACM模板题目大意:一个体育场一圈是400米,其中弯道时两端半径相同的圆弧,已知矩形的长和宽的比例,求长和宽的具体长度。#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#include<cmath>using namespace std;const int N = 1000007;typedef long l

2020-11-15 22:07:33 408

原创 UVA11437 Triangle Fun(相似三角形,做辅助线求解相似比例)

其实我们根据样例打表就可以发现比例是7hhh…#include<cstdio>#include<algorithm>#include<cstring>#include<vector>#include<cmath>#include<iostream>using namespace std;typedef long long ll;const int N = 50007, M = 500007, INF = 0x3f..

2020-11-15 21:18:44 214

原创 【分块】#6282. 数列分块入门 6(单点插入,单点查询,由于有大量元素插入一个块内,所以需要重构分块)

#include<cstdio>#include<algorithm>#include<cstring>#include<vector>#include<cmath>using namespace std;typedef long long ll;const int N = 1e6 + 7, M = 5e6 + 7;typedef pair<int, int> PII;int n, m;//m这里表示的是实际上..

2020-11-15 20:39:57 453 1

原创 2020年SWPUACM团队新生第四次周赛(题解)

说好了是新生周赛,一群大二的来凑什么热闹…还有就是题都不难,但是大一们做的都有点难受…A我是签到题记得开long long,如果矩形长大于等于宽的三倍,则正方形边长最长为宽;反之,正方形 边长最长为max( 宽/2,长/3)#include<iostream>using namespace std;typedef long long ll;int main(){ ll a,b; scanf("%lld%lld",&a,&b); if(a&g

2020-11-14 17:36:19 604

原创 【分块】#6281. 数列分块入门 5(区间开方,区间求和)

啊啊啊,分块的下标别写错了#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<iostream>using namespace std;typedef long long ll;const int N = 500007;ll read(){ ll x = 0, f = 1;char c = getchar(); ..

2020-11-14 17:19:13 329

原创 【牛客挑战赛】我是 A 题

题目还是有点坑的,我一开始以为删掉一些边,点也没了,不知道我是为什么会这么想…其实这道题的意思是,给你一个树,让你删掉一些边,使得由树删掉边剩余的多个连通块每个连通块的权值和是k的倍数,求满足条件的剩余的边的最小权值和。注意还有一个条件:总的点权和就是k的倍数当一道题没有思路的时候,我们考虑所有的可能的性质。我们发现了一个性质:如果一个点的权值已经是k的倍数,我们可以直接把这条边删掉,也就是最小边权和不要这个点所链接的所有的边。这样剩下的点的权值和还是k的倍数(因为总的点权和就是k的倍数)。我们推广.

2020-11-13 22:35:10 231

原创 #6280. 数列分块入门 4(区间修改,区间查询)

整理的算法模板合集: ACM模板注意这里需要累加,所以要开long long!#include <cstdio>#include <cstring>#include <cctype>#include <iostream>#include <algorithm>#include <vector>#include <cmath>#include <set>using namespace st

2020-11-13 20:57:37 197

原创 #6279. 数列分块入门 3(区间修改,查询权值前驱)

#6279. 数列分块入门 3这是使用hzwer建议的set写的分块代码,set自动排序,支持二分查找,但是常数较大,比我下面写的用vector实现的分块慢了三倍,空间大了10倍。#include <cstdio>#include <cstring>#include <cctype>#include <iostream>#include <algorithm>#include <vector>#include &lt

2020-11-13 20:01:47 1252

原创 【数学专题】约数个数与欧拉函数

整理的算法模板合集: ACM模板目录一、约数个数1. AcWing 1291. 轻拍牛头2. AcWing 1294. 樱花2.1 AcWing 197. 阶乘分解3. AcWing 198. 反素数4. AcWing 200. Hankson的趣味题二、欧拉函数1. AcWing 201. 可见的点2. AcWing 220. 最大公约数题目算法AcWing 1291. 轻拍牛头求约数的个数AcWing 1294. 樱花求(n!)2(n!)^2(n!)2的约数的个数

2020-11-12 22:18:43 866

原创 【分块】#6278. 数列分块入门 2 (区间修改、查询权值c在区间中的排名)

题解By hzwer#include<cstdio>#include<cstring>#include<cctype>#include<iostream>#include<algorithm>#include<vector>#include<cmath>using namespace std;typedef int ll;const int N = 500007, M = 5000007, INF .

2020-11-12 17:16:25 180

原创 C++ __gnu_pbds(平板电视)超详细教程(C++内置的平衡树,字典树,hash)

__gnu_pbds自带了封装好了的平衡树、字典树、hash等强有力的数据结构,常数还比自己写的小,效率更高hhh一、平衡树#define PII pair<int, int>#define mp_(x, y) make_pair(x, y)tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> tr;/// rb_tree_tag 和 splay_tree_

2020-11-10 22:35:48 6788 6

原创 C++官方自带可持久化平衡树rope的3000行源码

C++官方rope3000行源码// SGI's rope class -*- C++ -*-// Copyright (C) 2001-2015 Free Software Foundation, Inc.//// This file is part of the GNU ISO C++ Library. This library is free// software; you can redistribute it and/or modify it under the// terms o

2020-11-10 22:04:44 1001

原创 c++自带的可持久化平衡树?rope大法好!(超详细解答 + 5道例题讲解,可直接替代可持久化的线段树、并查集、平衡树!)

c++自带的可持久化平衡树?rope大法好!C++官方说明C++11及以后开始支持可以当作可持久化平衡树使用,内部构造是一个块状链表1. 声明1)头文件#include<ext/rope>2)调用命名空间using namespace __gnu_cxx;3)声明使用rope<int>Irp;rope<long long>Lrp;crope crp;//相当于定义成rope<char>,即定义为string类型rope&lt

2020-11-10 20:24:13 5365 8

原创 【每日训练】2020/11/9(Splay ?rope大法好!、数论、构造补图)

整理的算法模板合集: ACM模板目录1. 牛客Shuffle Cards2.CF992B Nastya Studies Informatics3.CF990D Graph And Its Complement(构造补图)1. 牛客Shuffle Cards题目传送门首先分析数据范围。1e51e51e5,加上是区间移动,一看就是一个数据结构问题,区间问题一般用Splay解决,但是我只会treap…。但是我们有rope这个神器!然后来分析题意。题目大意:有n个数,m次操作,每次选择从x

2020-11-09 22:09:38 284

原创 luogu P3203 [HNOI2010]弹飞绵羊(LCT ? 暴力分块 ! )

已知:暴力 + 暴力 + 10510^5105 = 分块设 need[i] 表示从 i 开始,跳出所在块的步数;ver[i] 表示跳出当前所在的块后到了哪里;罗老师的题解//#pragma GCC optimize("Ofast")#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#include<bi.

2020-11-09 21:34:48 205

原创 【分块】#6277. 数列分块入门 1(区间修改、单点查询)

整理的算法模板合集: ACM模板题目传送门题解by hzwer区间修改实际上就分情况暴力枚举修改即可。单点查询直接输出,因为我们就是直接维护的一个数组。#pragma GCC optimize("Ofast")#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#include<bitset>

2020-11-09 20:22:31 374

原创 【每日训练】2020/11/8(规律 + 二进制、单调栈 + 前缀和,后缀和、bitset + 枚举)

1. NC 打铁的箱子题意:20+1、21+1、22+1.....2^0+1、2^1+1、2^2+1.....20+1、21+1、22+1.....这些数,能不能凑出n,每个数最多用1次。本题的关键是将题目所给的备选数据转换为二进制的数,而不是题目中给出的格式,然后就可以发现规律。我们可以枚举用了几个数,假设用了x个数字,那么先将n减去x,然后检查n−x的二进制中是否恰好是x个1即可。#include<cstdio>#include<iostream>#include&

2020-11-08 20:38:38 290

转载 (2017)第八届蓝桥杯大赛个人赛省赛(软件类) C/C++ 大学A组 题解(第八题包子凑数)

第八题题目标题:包子凑数小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子。每种蒸笼都有非常多笼,可以认为是无限笼。每当有顾客想买X个包子,卖包子的大叔就会迅速选出若干笼包子来,使得这若干笼中恰好一共有X个包子。比如一共有3种蒸笼,分别能放3、4和5个包子。当顾客想买11个包子时,大叔就会选2笼3个的再加1笼5个的(也可能选出1笼3个的再加2笼4个的)。当然有时包子大叔无论如何也凑不出顾客想买的数量。比如一共有3种蒸笼,分别能放4、5和6个包子。而

2020-11-07 23:53:48 511

原创 OI模板大全(普及~省选NOI)

hhh刚从某位大佬的洛谷首页偷到了一个好玩的东西自己对照了一下原来我还有这么多东西没有学呜呜呜我好菜

2020-11-07 18:13:09 1610 2

原创 【算法笔记】一步一步推出来的同余最短路优化思路(千字长文,超详细)

同余最短路同余最短路实际上使用最短路模型来优化DP问题,使用同余模型来优化极大的数据范围。基本思想:通过同余构造某些状态,状态之间的关系类似于两点之间的带权有向边。通常是解决给定m个整数,求这m个整数能拼凑出多少的其他整数(这m个整数可以重复取)或给定m个整数,求这m个整数不能拼凑出的最小(最大)的整数。我们首先考虑一个问题:给你一个数M,三个数x,y,z,问111 ~ MMM间一共多少个数可以由111开始,通过 +x,+y,+z,归零(变成1)+x,+y,+z,归零(变成1)+x,+y,

2020-11-07 17:47:10 854

原创 判断一个图是否为树(有向图以及无向图)

http://www.cppblog.com/fm369o802340/archive/2012/12/10/196151.html判断一个图是否为树1. 无向图(hdu 1272 小希的迷宫)2. 有向图(hdu 1325 Is It A Tree?)题目大意:判断一个有向图是不是一棵树判断条件:无环,一个根节点,(只有一个入度为0的结点,不存在入度大于1的结点)#include<iostream>#include<algorithm>#include<cst

2020-11-06 21:09:10 5324

原创 AcWing 397. 逃不掉的路(边双连通分量缩点成树 + 树链剖分乱搞)

我们知道在同一个边双连通分量中的点没有必经边(因为至少有两条分离的路径)。所以我们直接tarjan求出桥后缩点,然后求一下树上两点间的距离即可。那么如何求树上两点间距离呢,当然是用lca+bfs处理啦,答案就是dep[u]+dep[v]-2*dep[LCA(u,v)];等等,当然是树链剖分乱搞啦!树链剖分乱搞:正解lca:啊这,树链剖分天下第一!(其实用树链剖分还TLE了一发,又交了一次运气好过了…)树链剖分AC代码:#include<iostream>#include.

2020-11-05 22:12:23 361

原创 CF786B Legacy(线段树优化建边模板 + 最短路)

线段树优化建边给你一个点 X ,让你和一个点集里的每一个点都连一条边。看上去我们只能一个一个连。如果这个点集是连续的呢?我们就可以用线段树来优化建边了。我们知道线段树的结构:我们知道线段树的点是能够代表一段区间的我们需要对于线段树的每个父亲与他的儿子建一条单向边这有什么用呢?因为我们所要求的点集是一段连续的区间,而线段树的结点可以表示某一段区间,我们可以在线段树上找到对应的区间,然后向线段树上的点建边,就可以加快建边速度了。例如我们要向[1,8][1,8][1,8] 里的所有点建边,我们.

2020-11-05 17:30:08 356

原创 CF498C Array and Operations(数论 + 最大流)

首先显然的是,如果一次操作中我们选择的v不是质数,那显然把它拆成若干次v是质数的操作更优(因为任何一个合数都可以拆成若干个质数的次方的乘积,唯一分解定理,这样拆成质数最后操作的次数会更多),那么问题就变成了:每次选取满足要求的一对数,同除一个质数,问能操作多少次。我们发现题目中还有一个重要的条件:ik+jki_k+j_kik​+jk​ 为奇数,那么iki_kik​ 和 jkj_kjk​ 一定有一个是奇数,另一个是偶数,因此我们可以把数列中的元素按下标的奇偶分成两个集合。感觉有点像二分图了。最多的操作看上去.

2020-11-04 22:26:23 293

原创 luogu P3393 逃离僵尸岛(点权最短路 + 多源BFS)

P3393 逃离僵尸岛最短路,有点的不能到达我们就直接把他的权值赋值为INF即可。bfs预处理一下每个点的危险程度。因为这里没有边权是点权,我们可以把边权转化为两端点的权值和,或者直接跑点权最短路即可。#include<cstdio>#include<cmath>#include<algorithm>#include<iostream>#include<cstring>#include<vector>#includ

2020-11-04 22:13:57 295

原创 【算法笔记】分块

之前一直不是很喜欢分块所以没学,现在看来分块这种暴力的艺术倒还是很适合我的…分块——暴力的艺术分块算法的思想是通过适当的划分,预处理一部分信息保存下来,用空间换取时间,达到时空平衡。基本操作是,将一段序列,分成一定数量的块,每一块有一个长度,表示一段区间。对于区间操作,通过对完整块的整体操作和对不完整块的暴力操作而使复杂度尽可能的低为了使得其有着最稳定的时间复杂度,我们经常将一个长度为 n 的序列分为 n\sqrt nn​ 个大小为 n\sqrt nn​ 的块,如果 n 不是完全平方数,则序列最右端

2020-11-04 21:08:52 1301

原创 0x34.数学 - 矩阵乘法

目录矩阵乘法AcWing 205. 斐波那契声明: 本系列博客是《算法竞赛进阶指南》+《算法竞赛入门经典》+《挑战程序设计竞赛》的学习笔记,主要是因为我三本都买了 按照《算法竞赛进阶指南》的目录顺序学习,包含书中的少部分重要知识点、例题解题报告及我个人的学习心得和对该算法的补充拓展,仅用于学习交流和复习,无任何商业用途。博客中部分内容来源于书本和网络(我尽量减少书中引用),由我个人整理总结(习题和代码可全都是我自己敲哒)部分内容由我个人编写而成,如果想要有更好的学习体验或者希望学习到更全面的知识,请于

2020-11-02 10:56:08 541

空空如也

空空如也

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

TA关注的人

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