自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 主席树入门详解

简介主席树全称应为可持久化权值线段树,可用于解决区间第k小问题。但可能由于这个的影响力比较大,现在主席树也被泛指为可持久化线段树。主席树树是由NOI选手黄嘉泰(HJT,咱也不敢说)首先使用的。黄嘉泰原话:“这种求k 大的方法(函数式线段树)应该是我最早开始用的”。可持久化线段树可持久化数据结构 (Persistent data structure) 是可以保留每一个历史版本,并且支持操作的不可变特性 (immutable)。可持久化线段树即保留多个历史版本(第k个版本即第k次修改后,第k+1次版本

2021-01-15 23:02:55 815

原创 单调队列/栈原理详详祥解

单调队列单调队列是用来干嘛的?这个还真不好总结,直接看题吧。洛谷模板题单调队列就是用来快速解决上述问题的一个数据结构。如果使用暴力,即两层循环枚举,时间复杂度显然是O(nk)O(nk)O(nk),而使用单调队列只需要O(n)O(n)O(n)的时间复杂度即可解决。单调队列是如何解决这个问题?单调队列,顾名思义即队列中是单调的。解决以上问题的关键也就在这两个词,”单调“和”队列“。为什么是队列这个数据结构,而不是其他的数据结构?为什么要以及如何维护队列的单调性?为什么维护了队列的单调性

2021-01-09 00:18:18 209

原创 ST表讲解与例题

ST(Sparse Table) 算法简介适用范围ST 表是用于解决可重复贡献问题的的区间询问的数据结构,基本思想是倍增和DP。所谓可重复贡献问题,即运算具有自反性的问题,例如求最大/小值,最大公约数,最小公倍数x=max(x,x)=min(x,x)=gcd(x,x)=lcm(x,x)x=max(x,x)=min(x,x)=gcd(x,x)=lcm(x,x)x=max(x,x)=min(x,x)=gcd(x,x)=lcm(x,x)(显然都是**RMQ(Range Minimum/Maximum Q

2021-01-08 16:47:38 539

原创 分块与莫队(详详详解)

以下内容主要借鉴oiwiki分块思想简介分块是一种思想,而不是一种数据结构。分块的基本思想是:通过对原数据的适当划分,并在划分后的每一个块上预处理部分信息,从而较一般的暴力算法取得更优的时间复杂度。分块的时间复杂度主要取决于分块的块长,一般可以通过均值不等式求出某个问题下的最优块长,以及相应的时间复杂度。分块是一种很灵活的思想,相较于树状数组和线段树,分块的优点是通用性更好,可以维护很多树状数组和线段树无法维护的信息。当然,分块的缺点是渐进意义的复杂度,相较于线段树和树状数组不够好例题

2021-01-07 15:40:11 1052

原创 线段树应用专题

区间更新加区间查询模板题目POJ3468ac代码#include<iostream>#define ls idx<<1#define rs idx<<1|1using namespace std;typedef long long ll;const int maxn=1e5+5;ll sum[maxn<<2],tag[maxn<<2];int num[maxn];inline void pushup(ll idx){

2020-11-16 20:03:15 220

原创 KMP专题

以下内容适合已经掌握KMP算法的同学观看。KMP应用一:字符串匹配这是KMP最常见的应用,我就不详细解释。贴一道模板题,洛谷3375AC代码//字符串匹配模板#include<stdio.h>#include<cstring>#define maxn 1000010char s[maxn],t[maxn];//NEXT是用于字符串匹配的优化版:优化了模式串为aaa...aaa.a这种情况//NEXT是正常版本,用处更广int NEXT[maxn],NEXT2

2020-08-25 22:52:30 354

原创 关于集合的两个问题——求集合的所有子集的之和与求集合中所有子集的乘积之和

给定一个集合S={a1,a2,a3,a4,…,an};问题一、求集合的所有子集的之和n个元素的非空子集2n−12 ^ {n}-12n−1个,集合中每个元素在出现在数目一定的一个子集的概率都是相同的。换言之,对于所有元素,它在这2n−12^n-12n−1个集合中出现次数(设为numnumnum)是相同的。举个例子。元素个数为一的子集共有n个,每个元素出现一次,每个元素出现的概率是1/n。元素个数为2的子集共有C(n,2)=n∗(n−1)/2C(n,2)=n *(n-1)/2C(n,2)=n∗(n

2020-08-19 22:04:04 4526

原创 ACM易犯或曾犯过的低级错误+注意事项

数据范围,包括数组所需要的大小,以及答案的大小,还有精度,能用double就用double,范围尽量声明大一点,数据范围在内存允许时,直接用long long,以免白给。不仅要考虑此数的范围,还要考虑此数产生的范围记得初始化,...

2019-12-05 11:37:03 459

原创 找工作经验分享

我希望大家投简历还是尽量早投,不管是春招、秋招、甚至是提前批,都一样,我觉得刚开始筛选简历是会松一点的,随着通过面试的人越来越多,hc越来越少,对简历的要求肯定是会提高的。你等小厂普遍开始招聘的时候,大厂已经收一部分简历,在你进入面试环节的时候,流程又比较慢,大厂又招了一批人了。中大厂其实真的很多很多,少说也有二三十家,我们手机了有二三十个app都是很正常的吧,这些常用的app,基本都是还不错的公司,大家可以放心的投,把你能想到的中大厂都投一遍,只要简历和笔试没问题,我觉得这就已经面不完了。

2023-03-04 21:31:24 763

原创 给刚入坑的ACMer一些编码建议(1)——使用“好”变量名

分享三年ACM生涯的一些经验、看法、教训等,希望能给新人一些帮助。

2022-10-14 23:57:40 572

原创 机器学习入门(三)——如何学的更好

如何让模型更强大前面我们都是通过线性模型来讨论,但是现实中很多关系并不是通过线性模型就可以表示或者拟合的。如果模型的假设空间并不包含正解,那么无异于缘木求鱼。所以这篇我们就讨论下如何让模型更加强大呢?监督学习是从假设空间中确定具体函数(参数值)。因此,强大的模型=假设空间更强大=表达能力更强的函数强大的模型=假设空间更强大=表达能力更强的函数强大的模型=假设空间更强大=表达能力更强的函数。那么如何扩展假设空间呢?有以下三种不同的实现思路:- 非线性变换- 组合模型- 神经网络非线性变换令

2021-11-26 15:50:09 268

原创 机器学习入门(二)——机器为何能学?

机器为何能学大数定律或 Hoeffding’ s inequality指出:样本数越大,统计值与真实值接近的概率越高。大数定律与生活:是金子总会发光的。出来混,总是要还的。前提一:假设空间不能过大Hoeffding’ s inequality指出,一个假设出现乐观欺骗的概率的上限为 :2exp(−2ε2N)2exp(-2\varepsilon^2N)2exp(−2ε2N),那么MMM个假设就会使这个概率增大MMM倍,即概率的上限变为了:2Mexp(−2ε2N)2Mexp(-2\varepsil

2021-11-26 10:02:39 692

原创 Max Sum Plus Plus HDU - 1024(两种滚动数组的写法)

Max Sum Plus PlusNow I think you have got an AC in Ignatius.L’s “Max Sum” problem. To be a brave ACMer, we always challenge ourselves to more difficult problems. Now you are faced with a more difficult problem.Given a consecutive number sequence S1, S2,

2021-05-12 15:55:14 131

原创 2020蓝桥杯七段码简单好理解BFS解法

数字8由六个点七条边构成,用二进制枚举每一边是否存在,然后bfs判断一下所有存在的边是否联通即可。#include <bits/stdc++.h>using namespace std;int m[10][10];//从起点开始进行bfs,有边可以走,就走,//然后把该边置为0,ans++,把每次到达的点丢入队列//看最后能走几条边int bfs(int st){ int ans = 0; queue<int> Q; Q.push(st).

2021-05-11 18:19:59 385

原创 Educational Codeforces Round 103 (Rated for Div. 2)---D. Journey

D. Journey原题链接time limit per test2 secondsmemory limit per test512 megabytesinputstandard inputoutputstandard outputThere are n+1 cities, numbered from 0 to n. n roads connect these cities, the i-th road connects cities i−1 and i (i∈[1,n]).Each road

2021-01-30 15:10:25 249

原创 Educational Codeforces Round 103 (Rated for Div. 2)-C. Longest Simple Cycle

C. Longest Simple Cycletime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou have n chains, the i-th chain consists of ci vertices. Vertices in each chain are numbered independently from 1 to ci alo

2021-01-30 02:22:56 311

原创 字典树模板题洛谷P2580

洛谷P2580查询字符串是否出现过,以及是否重复出现。#include<bits/stdc++.h>using namespace std;char s[55];const int maxn=5e6+10;int tree[maxn][26];int vis[maxn];//标记第几次访问int tot=0;void addc(char *s){ int idx=0; for (int i = 0; i < strlen(s); i++){

2020-10-16 19:24:35 163

原创 prim模板题加ac代码

Building a Space Station #include<bits/stdc++.h>using namespace std;const int maxn=105;double sum;struct edge{ int a,b; double v; edge(){} edge(int A,int B,double V){ a=A;b=B;v=V; } bool operator < (const edg

2020-10-16 19:13:33 135

原创 LCA的三种求法(模板)

P3379 【模板】最近公共祖先(LCA)//倍增求树上lca#include <bits/stdc++.h>using namespace std;const int maxn = 5e5 + 5;vector<int> E[maxn];int dep[maxn],f[maxn][22];void dfs(int fa, int x){ f[x][0]=fa;dep[x]=dep[fa]+1; for (int k = 1; k <= 21

2020-10-16 17:18:09 208

原创 智算复赛生成有向无环图

题目有向无环图共 5 个测试点 每个测试点 20 分每个测试点限时 1 秒 运行内存上限 512MB查看本题最近一次测评结果给定 kk ,你需要生成一个没有重边的有向无环图(点编号 1\dots n1…n ),使得从 11 到 nn 的路径数恰好为 kk 。输入格式一行两个正整数 k,Nk,N ,表示要求的路径数和该测试点允许的最大点数(即你生成的图点数不得超过 NN )。输出格式第一行两个正整数 n,mn,m ,表示你生成的图的点数和边数。接下来 mm 行,每行两个正整数 u,vu

2020-10-16 17:11:00 153

原创 扩展KMP模板

模板题洛谷P5410AC代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll maxn=2e7+7;char s[maxn],t[maxn];ll z[maxn],p[maxn];//z[i]表示t串中从i位置开始的后缀和t串的最长公共前缀//p[i]表示s串中从i位置开始的后缀和t串的最长公共前缀void cal_z(char *s,ll n){ z[1]=n-

2020-10-10 20:15:02 235 1

原创 Parity game POJ - 1733 带权并查集加离散化

Parity game POJ - 1733 题目大意依次给出若干段区间的奇偶描述,描述不一定正确,请找出第一条不正确的信息(和前面x条信息不冲突)。输出x。题解带权并查集裸题。奇偶的变化可以通过异或运算来简化。细节:由于区间跨度很大,需要离散化处理//#include<bits/stdc++.h>#include<iostream>#include<algorithm>using namespace std;const int maxn=1

2020-10-04 20:55:52 151

转载 杭电多校第七场jogging

题目大意:在二维平面中有一个点 ( x , y ) ,规定 “ 好点 ” 的定义是,gcd( x , y ) > 1 ,现在从点 ( x , y ) 开始,每一次都能等概率的选择:去周围八个方向中的“好点” 停留在原地不动现在问在走无穷多次步数后,能够从点 ( x , y ) 出发再回到点 ( x , y ) 的概率是多少题目分析:比赛时稍微打了个表,感觉是暴力bfs出所有点然后计算答案,主要是答案不会计算,就放掉了,因为 1e12 以内的相邻两个素数之差最大也不过几百,对应到二维平面中最

2020-08-19 13:23:38 213

原创 杭电多校第九场1001-Tree

原题链接题目大意给定一棵有向树,每条边都是由父亲指向儿子。如果x点可以到达y点,那么就可以写成二元组(x,y)的形式。请在数中加上一条有向边,使得二元组的个数最多。题解首先,把一个点连向根节点,一定比连向其他点更优。因为连向根节点后,该点就可以到达所有点。然后,对于同一条链上的点,显然将叶子结点连到根节点,比链上其他点连到根节点更优。因为前者包含了后者。由此可以用dfs求出所有的叶子结点。然后依次连边,并选择最优情况即可。可以先跑一次dfs求出,加边前的二元组个数,即每个点的儿子数+1(包

2020-08-18 20:12:25 275

转载 杭电第四场1009-Kindergarten Physics

原题链接题解

2020-08-18 09:53:16 88

转载 杭电第四场1005-Equal Sentences

原题链接题解

2020-08-18 09:48:11 103

原创 杭电多校第四场1002

原题链接题目大意给定n种武器,每种武器有伤害值和冷却时间。A,B两人需要在游戏开始前选择一种武器一直使用直至游戏结束。A可以自行挑选,B随机选择。A,B初始都有100HP两人中任意一人死亡游戏结束,如果同时死亡则各有一半的胜率。问:在最优选择下,A的获胜期望是多少?题解预处理出所有武器击杀对方需要的时间。A选择其中一种,那么B只有在同样选择到最优武器的时候才有50%的胜率,,其他时候必败,所以期望可以求得。标程#include<bits/stdc++.h>using na

2020-08-18 09:30:01 153

原创 杭电第三场1009-Parentheses Matching

原题链接题目大意给出一个由左右括号和 * 号组成的字符串,请把一些 * 改成左括号和右括号使得该串是一个合法匹配的括号串,并使得该串字典序最小题解先预处理出所有的失配括号,并记录下所有*号的位置。对于所有失配的左括号,按下标从大到小开始处理,每次在该下标往后找一个 * 号,找不到就说明无法得到合法匹配括号串。对右括号的处理方式反之。标程#include <bits/stdc++.h>using namespace std;const int maxn = 1e5 + 5;c

2020-08-18 09:11:17 143

原创 杭电第三场1004-Tokitsukaze and Multiple

原题链接题目大意给定一个n个整数组成的序列。你每次可以用序列种两个相邻的数和替代这两个数。请经过若干次操作后,使得序列中含有p的倍数的数字个数最多。题解从1开始向n遍历,求和,求和结果sum对p取模,然后判断结果是否出现过,如果成立,ans++,对sum清空。证明:设上次出现的位置为last,那么last-now这个区间的值相加的值为p的倍数。使用到了贪心的思想:即在更早的区间使结果+1,不会比最优结果差。标程#include<bits/stdc++.h>using name

2020-08-17 23:41:30 115

原创 杭电2020多校第一场1004Distinct Sub-palindromes

原题链接题目大意用n个小写字母构建一个字符串,使得字符串的回文子串数目最少,求有多少种构造方法。题解当n=1 || n=2 || n=3;所有构造方式的回文子串数都一样所以直接输出pow(n,26);当n>3时,排列方式应该如下:abcabcabc…bcabcabca…cabcabcab…….…即取三个不同的字母,然后按同样的排列顺序一直排下去所以答案是A(3,3)C(26,3)=2625*24;详细证明...

2020-08-17 23:05:19 125

原创 航电多校第二场-1001-Total Eclipse

题目链接题目大意n个点的图,每个点有点权,每次选取一个最大联通分量,然后其中每个点点权-1,点权不能为负,求最少需要操作的次数题解按照点权对所有点进行排序,然后依次加边建图,进行反向并查集。先将答案加上当前点的点权,如果当前点(s)连出去的点(t)之前已经访问过,说明在访问t点的时候多加了一次s的点权,那么将答案减去一次s点的点权。标程#include<bits/stdc++.h>using namespace std;const long long maxn=1e5+5;l

2020-08-13 21:11:51 147

原创 字符串哈希

核心思想将字符串映射到一个整数值域中,通过比较整数的值来比较字符串。实现定义一个映射函数 F()用于实现字符串到数字的映射,一般采用多项式形式,对每个多项式的值进行取模,保证在值域范围内。具体来说,我们希望在 Hash 函数值不一样的时候,两个字符串一定不一样。另外,反过来不需要成立。我们把这种条件称为是单侧错误。我们需要关注的是什么?时间复杂度和 Hash 的准确率。为提高准确率,可以定义两个不同的模数分别取余,在两个取余结果都相等才判定字符串相等。编程技巧将字符串的值映射成满足前缀和

2020-08-04 04:40:21 162

原创 2020多校第二场解题报告-1010 Lead of Wisdom

题目链接题意:有n个武器,均属于k种武器种其中一种。请从n个武器种选出一个集合S,S种每种武器最多只能出现一次。每种武器有a,b,c,d四个值,均大于零。求DMG最大的S。DMG=(100+∑i∈Sai)(100+∑i∈Sbi)(100+∑i∈Sci)(100+∑i∈Sdi)题解由于a,b,c,d都大于0,所以S种每种武器均需要包含一个。DFS暴力搜全解。唯一的优化在于对于未在n个武器种出现的种类,直接跳过即可。通过遍历每种武器的数目可以直接知道每一步可以跳过几种武器。标程#include

2020-07-23 21:32:04 160

原创 Eight II HDU - 3567写题报告

题目链接原题链接难度分析这题啊,这题也不是很难,总的来说就是:思维+bfs逆向路径打印+打表+康托展开我花了两天,tle四次,mle4次然后就写出来的。写完以后神清气爽,就想说一句我(w)带(d)你(n)们(m)打(d)icpc。题解由于每次都是改变x的位置,而x只可能出现在方块的9个位置中,所以可以根据x的位置进行分类,,然后别打表,然后再进行映射处理,得到答案。具体来说,就是分别以12345678x1234567x8123456x7812345x6781234x5678123

2020-07-13 16:38:28 185

原创 快速理解康拓展开和逆向康拓展开

本文是在此文基础上的补充康托展开的定义给定数字1~n的其中一种排列S:s【1】、s【2】。。。s【n-1】、s【n】定义排列X为S的序列号,如:1~3的所有排列为123, 132, 213, 231, 312, 321那么排列3 1 2 的序列号为3;定义a【i】=在排列s中,s【i】后小于s【i】的数的数量那么由康托展开可得:X=1+a[n] * (n-1)!+a[n-1] * (n-2)!+…+a[i] * (i-1)!+…+a[1] * 0!简单来说就是,给出一个1~n的的n个数的一

2020-07-09 13:52:12 307

原创 POJ-3278写题报告BFS,DFS

题目链接题目大意需要通过数字n,获得数字k。可以对n进行两种操作,时间都是一分钟,求最短用时。n–或者n++;n*=2;题解采用BFS:即每一步可以向左右走一步,或者去n*2;当n>k时,只执行n–;时间复杂度为o(n)采用dfs:对于n>k,只执行n–;当n<k时,按k是奇数还是偶数分两种情况处理。当k是偶数,n -> k可以通过一直加1的方式得到k,或者先使n = k/2,再通过n2一步使得n== k;当k是奇数,n -> k可以通过一直加1的方式

2020-07-09 11:48:51 196

原创 UVA-11624总结

题目链接vjudge题目大意一人需要从网格中逃离。网格中有石墙,火点和空格,人只能走上下左右的空格。人走一步需要一分钟。火点每分钟向四周蔓延一格。求最短逃离时间,或输出不能逃离。#include <iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;const int N = 1005;int dis[4][2] = {{1, 0}

2020-07-08 22:04:18 155

原创 7-6号CFdiv3

题目以及官方题解A题题目大意求1-n中对x取模余y的最大数;题解略B题题目大意判断一个正整数是否可以只通过*2或者整除6(当前数为6的倍数可执行)这两个操作得到1题解暴力模拟,或者判断他的质因子是否只有2和3并且3的个数大于2的个数;标程暴力模拟//// Created by Visors on 2020/7/6.//#include <iostream>#include <cmath>using namespace

2020-07-06 19:54:04 256 1

原创 机器学习入门(一)

迪杰斯特拉堆优化+路径记录模板#include<bits/stdc++.h>using namespace std;struct edge{ int to,val; edge(int x=0,int y=0) { to=x,val=y; } bool operator <( const edge &A) const { return val>A.val; }};const i

2020-05-26 18:28:08 250

原创 计算几何模板

计算几何模板#include <iostream>#include <cmath>#include <queue>#include <algorithm>using namespace std;#define db double#define ll long longconst int maxn = 4e6 + 10;cons...

2020-04-01 01:37:28 99

空空如也

空空如也

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

TA关注的人

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