首页 > 其他分享 >考点列表(附板子)

考点列表(附板子)

时间:2023-10-14 11:57:24浏览次数:26  
标签:return ifac int 列表 考点 fac 板子 ql Mod

  我不能白给啊啊啊啊啊!!!!!

  我会在这里将最近的考到的知识点罗列,也当是快速复习与刷题计划吧。

Part1 数论相关

计数类

Lucas定理

点击查看代码
const int Mod = ?;

int powM(int x, int y = Mod-2) {
	int ret = 1;
	while (y) {
		if (y&1) ret = 1ll*ret*x%Mod;
		x = 1ll*x*x%Mod, y >>= 1;
	} return ret;
}

int fac[N], ifac[N];
void init() {
	fac[1] = ifac[1] = fac[0] = ifac[0] = 1;
	for (int i = 2; i < Mod; ++i) fac[i] = 1ll*fac[i-1]*i%Mod;
	ifac[Mod-1] = powM(fac[Mod-1]);
	for (int i = Mod-2; i; --i) ifac[i] = 1ll*ifac[i+1]*(i+1)%Mod;
}
int C(int x, int y) {
	if (x < y) return 0;
	if (!x || !y || x == y) return 1;
	return 1ll*fac[x]*ifac[x-y]%Mod*ifac[y]%Mod;
}
int luc(int x, int y) {
	if (x < y) return 0;
	if (!x || !y || x == y) return 1;
	return 1ll*C(x%Mod, y%Mod)*luc(x/Mod, y/Mod)%Mod;
}

Part2 数据结构

线段树

标准型(加乘)

点击查看代码
int sum[N<<2], taga[N<<2], tagm[N<<2], a[N];
void pushup(int &x, int y, int z) {x = plu(y, z);}
void build(int now, int L, int R) {
	tagm[now] = 1;
	if (L == R) {
		sum[now] = a[L];
		return ;
	}
	segc;
	build(lc, L, mid), build(rc, mid+1, R);
	pushup(sum[now], sum[lc], sum[rc]);
}
void pushdown(int now, int L, int R) {
	segc;
	sum[lc] = plu(mul(sum[lc], tagm[now]), mul(taga[now], mid-L+1));
	sum[rc] = plu(mul(sum[rc], tagm[now]), mul(taga[now], R-mid));
	tagm[lc] = mul(tagm[lc], tagm[now]);
	tagm[rc] = mul(tagm[rc], tagm[now]);
	taga[lc] = plu(mul(taga[lc], tagm[now]), taga[now]);
	taga[rc] = plu(mul(taga[rc], tagm[now]), taga[now]);
	taga[now] = 0, tagm[now] = 1;
}
void modifya(int now, int L, int R, int ql, int qr, ll val) {
	if (ql <= L && R <= qr) {
		sum[now] += val*(R-L+1);
		taga[now] += val;
		return ;
	}
	segc;
	pushdown(now, L, R);
	if (ql <= mid) modifya(lc, L, mid, ql, qr, val);
	if (qr > mid) modifya(rc, mid+1, R, ql, qr, val);
	pushup(sum[now], sum[lc], sum[rc]);
}
void modifym(int now, int L, int R, int ql, int qr, ll val) {
	if (ql <= L && R <= qr) {
		sum[now] = mul(sum[now], val);
		taga[now] = mul(taga[now], val);
		tagm[now] = mul(tagm[now], val);
		return ;
	}
	segc;
	pushdown(now, L, R);
	if (ql <= mid) modifym(lc, L, mid, ql, qr, val);
	if (qr > mid) modifym(rc, mid+1, R, ql, qr, val);
	pushup(sum[now], sum[lc], sum[rc]);
}
ll ask(int now, int L, int R, int ql, int qr) {
	if (ql <= L && R <= qr) return sum[now];
	segc; int ret = 0;
	pushdown(now, L, R);
	if (ql <= mid) ret = plu(ret, ask(lc, L, mid, ql, qr));
	if (qr > mid) ret = plu(ret, ask(rc, mid+1, R, ql, qr));
	return ret;
}

兔队线段树

点击查看代码
int ans[N<<2];
double mx[N<<2];
int query(int now, int L, int R, double Lim) {
	if (mx[now] <= Lim) return 0;
	if (L == R) return 1;
	segc;
	if (mx[lc] <= Lim) return query(rc, mid+1, R, Lim);
	return query(lc, L, mid, Lim)+ans[now]-ans[lc];
}
void update(int now, int L, int R, int pos, double val) {
	if (L == R) {
		ans[now] = 1;
		mx[now] = val;
		return ;
	}
	segc;
	if (pos <= mid) update(lc, L, mid, pos, val);
	else update(rc, mid+1, R, pos, val);
	mx[now] = max(mx[lc], mx[rc]);
	ans[now] = ans[lc]+query(rc, mid+1, R, mx[lc]);
}

Part3 字符串题

Part4 图论相关

最短路

Dijkstra

点击查看代码
int dis[N];
bool vis[N];
void dij(int S) {
	for (int i = 1; i <= n; ++i) dis[i] = Inf;
	dis[S] = 0;
	priority_queue<pair<int, int> > q;
	q.push(mp(0, S));
	while (!q.empty()) {
		int x = q.top().second; q.pop();
		if (vis[x]) continue ;
		vis[x] = true;
		for (int i = head[x]; i; i = e[i].next) {
			int y = e[i].to;
			if (dis[y] > dis[x]+e[i].w) {
				dis[y] = dis[x]+e[i].w;
				if (!vis[y]) q.push(mp(-dis[y], y));
			}
		}
	}
}

最小生成树

Kruskal重构树

点击查看代码
int f[N<<1];
void kru() {
	sort(e+1, e+1+m, cmp);
	for (int i = 1; i <= 2*n; ++i) fa[i] = i;
	int ncnt = n;
	for (int i = 1; i <= m; ++i) {
		int fu = find(e[i].u), fv = find(e[i].to);
		if (fu == fv) continue ;
		fa[fu] = fa[fv] = ++ncnt;
		add(ncnt, fu), add(fu, ncnt);
		add(ncnt, fv), add(fv, ncnt);
		val[cnt] = e[i].w;
	}
}

割点和桥

Ex 码头

点击查看代码
#define ll long long
#define segc int mid = L+R>>1, lc = now<<1, rc = lc|1
int plu(int x, int y) {return (1ll*x+y)%Mod};
int mul(int x, int y) {return 1ll*x*y%Mod};

标签:return,ifac,int,列表,考点,fac,板子,ql,Mod
From: https://www.cnblogs.com/BlackCrow/p/17763418.html

相关文章

  • 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(7) -- 图标列
    我们在WPF应用端的界面中,使用lepoco/wpfui来做主要的入口框架,这个项目它的菜单内置了不少图标,我们需要在动态菜单的配置中,使用它作为图标的展示处理,本篇随笔介绍如何基于图标枚举集合进行图标的展示和选择处理。并扩展到Font-Awesome-WPF的处理进行展示和选择。1、lepoco/wpfui......
  • 板子
    线段树#include<bits/stdc++.h>usingnamespacestd;structnode{intl,r;longlongpre,add,chen;}t[1000000];longlonga[1000000];longlongn,m,mod;voidbuild(intp,intl,intr){t[p].l=l;t[p].r=r;t[p].chen=1;if(l==r......
  • 如何在低代码表单或列表页面中创建OA审批流程?
    随着企业管理的复杂化和信息化,流程管理成为了企业管理中不可或缺的一环。一个合理的流程能够规范企业的业务运作,提高工作效率,减少错误和漏洞。而流程的设计和管理则需要借助相应的工具和平台。今天主要介绍在企业管理中如何使用JVS低代码来创建和管理OA流程,以提高企业的运营效率和......
  • 笨办法学Python3 习题34 访问列表的元素
    基数位置0代表 序数第一X=["a","b","c"]X[0]和X[-0] 代表X列表里的第一个数X[:]  #代表全部的列表内容X[0:1] //['a']  //位置0至位置1之前的元素X[0:2] //["a","b"] //位置0至位置2之前的元素X[-1]  //代表倒数第一个的元素hello="hellowor......
  • 各种OI板子
    以下内容不定时更新,想到啥写啥。。读写优化快读codetemplate<classT>inlinevoidread(T&res){ charch=getchar();boolf=0;res=0; for(;!isdigit(ch);ch=getchar())f|=ch=='-'; for(;isdigit(ch);ch=getchar())res=(res<<1)+......
  • Python - 深拷贝一个带有指向自身引用的列表,会报错么?紧接着用==比较,会报错么?
    问题描述深拷贝一个带有指向自身引用的列表:列表x中有指向自身的引用,因此x是一个无限嵌套的列表。importcopyx=[1]x.append(x)>>x[1,[...]]y=copy.deepcopy(x)>>y[1,[...]] 深拷贝不报错但是我们发现深度拷贝x到y后,程序并没有出现stackoverf......
  • Python 列表详解:从基础到进阶
    Python是一种广泛使用的高级编程语言,它的设计强调代码的可读性和简洁的语法。Python支持多种编程范式,包括过程、面向对象和函数式编程。在Python中,列表是一种非常重要的数据类型,它可以包含各种类型的元素,如数字、字符串和其他列表。本文将详细介绍Python列表的基础和进阶用法。【基......
  • 如何将一个列表的列表转换为扁平列表?
    内容来自DOChttps://q.houxu6.top/?s=如何将一个列表的列表转换为扁平列表?我有一个列表的列表,如下所示:[[1,2,3],[4,5,6],[7],[8,9]]如何将其展平以获得[1,2,3,4,5,6,7,8,9]?如果您的列表的列表来自嵌套的列表推导式,可以通过修复推导......
  • 【环境搭建】phpstudy显示目录列表
      问题来源新版本的PHPStudy访问127.0.0.1不再像以前版本一样显示目录列表了解决办法打开vhosts.conf将图中标记出来的一行OptionsFollowSymLinksExecCGI改成Options+Indexes+FollowSymLinks+ExecCGI重启Apache后访问即可。 分类: 环境搭建......
  • 笨办法学Python3 习题32 循环和列表
    知识点:for i in y: #for循环开始i变量就被创建,所以不用提前创建只有在for循环里有效range(,)函数会从第一个数到最后一个之前的数,不包含最后一个数Y.append(X)将X追加到列表Y的尾部1the_count=[1,2,3,4,5]#创建3个列表变量2fr......