自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(518)
  • 收藏
  • 关注

原创 细节决定成败(竞赛错题经验总结)

持续更新的竞赛错题经验总结

2020-06-03 16:59:23 304

原创 算法竞赛知识合集 目录(博客中转站)
原力计划

《算法竞赛进阶指南》,跟着我学完这本书,你即可获得NOIP500分以上的能力或者得到ACM-ICPC金牌爷的实力!

2020-04-18 18:45:22 838 1

原创 《数据结构》C语言版(严蔚敏版) 全书知识梳理 + 练习习题详解(超详细清晰易懂)
原力计划

《数据结构》知识梳理,适合考前复习,高分冲刺。包含大量习题,偷偷告诉你,考试就考这个

2020-04-15 12:09:39 2070

原创 ACM模板(满注释模板!)
原力计划

ACM模板,不同于其他大佬的是我这个模板是满注释的!哪怕是小白的你考场上都能快速上手算法,每一句都有注释帮你快速理解,方便对模板根据题意的修改

2020-04-13 22:00:52 1613

原创 ACM——备忘录

getline,cin,(cin>>x).get();#include<bits/stdc++.h>#include#include#include#include#include<stdio.h>#include#define debug cout<<“ok”<<endltypedef long long ll;co...

2019-12-18 21:42:09 152

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

#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 7

原创 【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 29

原创 【数学知识】矩阵乘法

整理的算法模板合集: ACM模板目录luogu P3390 【模板】矩阵快速幂AcWing 1303. 斐波那契前 n 项和AcWing 1304. 佳佳的斐波那契AcWing 1305. GT考试luogu P3390 【模板】矩阵快速幂#include <cstdio>#include <algorithm>#include <cstring>#include <iostream>using namespace std;typedef

2020-11-24 19:33:42 19

原创 【数据结构】莫队算法(基础莫队,带修莫队,回滚莫队,树上莫队,二次离线莫队)

来这里学习莫队以及神奇的证明:莫队算法 --算法竞赛专题解析(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 26

原创 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 21

原创 树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 26

原创 【模板】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 17

原创 【数学知识】同余

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 23 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 19

原创 【分块】#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 16

原创 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 18

原创 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 12

原创 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 22

原创 【分块】#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 40

原创 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 117

原创 【分块】#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 24

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

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

2020-11-13 22:35:10 34

原创 #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 16

原创 #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 37

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

整理的算法模板合集: 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 52

原创 【分块】#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 23

原创 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 45

原创 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 36

原创 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 103 4

原创 【每日训练】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 38

原创 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 16

原创 【分块】#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 18

原创 【每日训练】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 41

转载 (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 48

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

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

2020-11-07 18:13:09 105 1

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

同余最短路同余最短路实际上使用最短路模型来优化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 24

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

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 100

原创 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 29

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

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

2020-11-05 17:30:08 29

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

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

2020-11-04 22:26:23 26

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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