板子
spnooyseed
冲破大学的束缚,内心与实力并肩高升
展开
-
最小表示法
有N片雪花,每片雪花由六个角组成,每个角都有长度。第i片雪花六个角的长度从某个角开始顺时针依次记为ai,1,ai,2,…,ai,6。因为雪花的形状是封闭的环形,所以从任何一个角开始顺时针或逆时针往后记录长度,得到的六元组都代表形状相同的雪花。例如ai,1,ai,2,…,ai,6和ai,2,ai,3,…,ai,6,ai,1就是形状相同的雪花。ai,1,ai,2,…,ai,6和ai,6,ai...原创 2020-04-30 13:48:29 · 161 阅读 · 0 评论 -
二维矩阵hash
给定一个M行N列的01矩阵(只包含数字0或1的矩阵),再执行Q次询问,每次询问给出一个A行B列的01矩阵,求该矩阵是否在原矩阵中出现过。输入格式第一行四个整数M,N,A,B。接下来一个M行N列的01矩阵,数字之间没有空格。接下来一个整数Q。接下来Q个A行B列的01矩阵,数字之间没有空格。输出格式对于每个询问,输出1表示出现过,0表示没有出现过。数据范围A≤100,M,N,B...原创 2020-04-30 13:30:01 · 318 阅读 · 0 评论 -
马拉车算法模板
大佬博客马拉车用于解决最长回文子串问题,重点是子串,而不是子序列,想了解最长回文子序列的可以看下这篇博客传送门。对于这种问题,当然最简单粗暴的方法就是暴力求解,但太暴力也不好,毕竟会TLE。所以对于求最长回文子串的问题有一种神奇的算法——马拉车算法,神奇就神奇在时间复杂度为O(n)。 我先说一下大概思路,就是用一个Len[i]数组去存第i个位置到mx位置的长度,然后用id记录上一次操作的位置,m...转载 2020-03-20 14:35:01 · 631 阅读 · 0 评论 -
凸包模板
凸包算法(Graham扫描法)详解先说下基础知识,不然不好理解后面的东西两向量的X乘p1(x1,y1),p2(x2,y2)p1Xp2如果小于零则说明 p1在p2的逆时针方向如果大于零则说明 p1在p2的顺时针方向struct node{ double x,y; node friend operator -(node a,node b)//对减法符号进行重载 ...转载 2020-03-17 00:09:00 · 129 阅读 · 0 评论 -
线性筛素数 欧拉数 莫比乌斯函数 约数个数 约数和
#include <iostream>using namespace std;const int N = 1e5 + 10 ;int tot ;int mu[N] ; // 莫比乌斯函数 int phi[N] ;// 欧拉函数 int prime[N] , vis[N] ;int d[N] ; // 约数个数 int a[N] ; // 每个数最小因子出现的次数 in...原创 2019-09-20 18:00:08 · 234 阅读 · 2 评论 -
分层最短路
#include <queue>#include <iostream>#include <cstring>using namespace std;const int N = 1e4 + 10000;const int M = 1e5 + 10 ;int e[M] , ne[M] , h[N] , w[M] , idx ;int dis[N] ;b...原创 2019-09-20 18:01:12 · 120 阅读 · 0 评论 -
扩展剩余定理
#include <iostream>using namespace std;const int N = 100 ;typedef long long ll ;ll m[N] , c[N] ;ll exgcd(ll a , ll b , ll &x , ll &y){ if(b == 0) { x = 1 , y = 0 ; return ...原创 2019-09-20 18:01:55 · 70 阅读 · 0 评论