
数论/数学
wineandchord
这个作者很懒,什么都没留下…
展开
-
洛谷 P1044 栈 (栈混洗,卡特兰数)
1∼n1\sim n1∼n,问出栈可能的序列数文章目录记忆化搜索/递归递推/DP卡特兰数记忆化搜索/递归#include<iostream>#include<cstdio>#define MAXN 20using namespace std;typedef long long ll;int n;ll f[MAXN][MAXN];ll dfs(int i,int j){ if(f[i][j])return f[i][j]; // i:队列中的个数, j:.原创 2020-08-24 00:25:14 · 297 阅读 · 0 评论 -
Leetcode 1515. Best Position for a Service Centre (计算 geometric median)
给一堆点,在平面上找一个点(不一定在这些点中),使得该点与所有点的距离和最小。这是一个计算 Geometric Median 的问题,有个叫做 Weiszfeld’s algorithm 的迭代算法:yi+1=(∑j=1mxj∥xj−yi∥)/(∑j=1m1∥xj−yi∥)y_{i+1}=\left(\sum_{j=1}^{m} \frac{x_{j}}{\left\|x_{j}-y_{i}\right\|}\right) /\left(\sum_{j=1}^{m} \frac{1}{\left\|x原创 2020-07-12 15:25:49 · 396 阅读 · 0 评论 -
CF 1372C - Omkar and Baseball
已经有序时为 000,部分有序,并且有序区间是一个前缀或一个后缀,则可以对剩下的无序部分进行一次操作使全部变为有序。剩下的情况可以证明必定只需要两次操作。设 S={i∣a[i]=i}S=\{i|a[i]=i\}S={i∣a[i]=i} ,则第一次操作可以将 SSS 中的下标向右循环移位,这样则全部都是无序的,第二次操作再使之变为全部有序的。#include<iostream>#include<cstdio>#define MAXN 200010using namespace.原创 2020-07-12 10:30:57 · 161 阅读 · 0 评论 -
CF 1372B - Omkar and Last Class of Math(因子)
降一个数掰成两个数,要求这两个数的最小公倍数最小。思路:找到这个数除自身外的最大因子 kkk,则答案为 k,n−kk,n-kk,n−k#include<iostream>#include<cstdio>#include<vector>#include<algorithm>using namespace std;typedef long long ll;int T,n;int main(){#ifdef WINE freopen(".原创 2020-07-12 09:51:42 · 349 阅读 · 0 评论 -
洛谷 P3807 【模板】卢卡斯定理
给 n,m,pn,m,pn,m,p ,求 Cn+mn mod pC_{n+m}^n\bmod pCn+mnmodp ,保证 ppp 为质数Lucas 定理,用来求大组合数取模,定理为:Cnm mod p=C⌊n/p⌋⌊m/p⌋Cn mod pm mod p mod pC_n^m\bmod p=C_{\lfloor n/p\rfloor}^{\lfloor m/p\rfloor}C_{n\bmod p}^{m\bmod p}\bmod pCnmmodp=C⌊n/p⌋⌊m/p⌋Cnmodpmmod原创 2020-06-27 21:18:58 · 145 阅读 · 0 评论 -
洛谷 P3389 【模板】高斯消元法
求解一个线性方程组思路:高斯消元流程:枚举每一列 iii找该列最大值所在的行,将该行和 iii 行进行交换消元,参考代码#include<iostream>#include<cstdio>#include<cmath>#define MAXN 110using namespace std;int n;double a[MAXN][MAXN];int main(){#ifdef WINE freopen("data.in","r",st原创 2020-06-27 20:27:57 · 104 阅读 · 0 评论 -
洛谷 P1939 【模板】矩阵加速(数列)
一个数列 aaa ,满足ax={1x∈{1,2,3}ax−1+ax−3x≥4a_x=\begin{cases}1& x\in\{1,2,3\}\\a_{x-1}+a_{x-3}& x\ge 4\end{cases}ax={1ax−1+ax−3x∈{1,2,3}x≥4求 an mod (109+7)a_n\bmod (10^9+7)anmod(109+7)思路:将递推转换为矩阵关系,然后用矩阵快速幂#include<iostream>#includ原创 2020-06-27 17:07:16 · 143 阅读 · 0 评论 -
洛谷 P3390 【模板】矩阵快速幂
给一个矩阵 AAA,求 AkA^kAk思路:矩阵快速幂,注意 k 要 long long#include<iostream>#include<cstdio>#include<cstring>#define M 1000000007#define MAXN 110using namespace std;typedef long long ll;int n;ll k;struct Matrix{ int n;ll a[MAXN][MAXN];原创 2020-06-27 16:44:54 · 103 阅读 · 0 评论 -
洛谷 P4549 【模板】裴蜀定理
给 nnn 个整数 A1,…,AnA_1,\dots,A_nA1,…,An ,求另外一个 nnn 整数序列 X1,…,XnX_1,\dots,X_nX1,…,Xn ,使得 S=∑iAi×Xi>0S=\sum_iA_i\times X_i>0S=∑iAi×Xi>0 且 SSS 尽可能地小。裴蜀定理说的是方程 ax+by=cax+by=cax+by=c 有整数解地充要条件是 gcd(a,b)∣c\mathrm{gcd}(a,b)\mid cgcd(a,b)∣c ,这道题将变量扩原创 2020-06-27 11:02:16 · 177 阅读 · 0 评论 -
洛谷 P3811 【模板】乘法逆元
给定 n,pn,pn,p ,求 1∼n1\sim n1∼n 中所有整数在 mod p\bmod pmodp 意义下的乘法逆元。首先是乘法逆元的定义:若 ax≡1 mod pax\equiv 1\bmod pax≡1modp,则 xxx 为 a mod pa\bmod pamodp 的逆元,记为 a−1a^{-1}a−1线性求逆元:在 mod p\bmod pmodp 意义下p mod a=(p−a⌊pa⌋) mod pa⌊pa⌋ mod p=(p−p mod a) mod pa⌊pa⌋ mod原创 2020-06-27 10:45:07 · 174 阅读 · 0 评论 -
洛谷 P5656 【模板】二元一次不定方程(exgcd)
给一个二元一次不定方程ax+by=cax+by=cax+by=c无整数解:输出 -1有整数解:有正整数解:输出解的个数,输出 x,yx,yx,y 的最小值和最大值无正整数解:输出 x,yx,yx,y 的最小正整数值思路:扩展欧几里得void exgcd(int a,int b,int &x,int &y){ if(!b){x=1,y=0;return;} exgcd(b,a%b,x,y); int p=x;...原创 2020-06-27 10:09:23 · 566 阅读 · 1 评论 -
洛谷 P3812【模板】线性基
给 nnn 个整数,可能存在重复,任意选取几个,使得他们的异或和最大。什么是线性基?给一组数 a1…ana_1\dots a_na1…an ,他们的线性基为 p1…pnp_1\dots p_np1…pn 。求线性基:void insert(ll x){ for(int i=55;i>=0;i--){ if((x>>i)==0)continue; if(!p[i]) { // 第 i 位不为 0 p[i]=x; break; } x^=p[i];原创 2020-06-23 22:33:50 · 152 阅读 · 0 评论 -
洛谷 P6511 [QkOI#R1] Quark and Equations 数学
i<ji<ji<j 时:⌊n−1i⌋=mm≤n−1ii≤n−1mi≤⌊n−1m⌋ 因为 i 是整数m>n−1i−1m+1>n−1ii>n−1m+1i≥⌊n−1m+1⌋+1\begin{aligned}\lfloor\frac{n-1}{i}\rfloor&=m\\m&\le\frac{n-1}{i}\\i&...原创 2020-05-04 18:37:16 · 274 阅读 · 0 评论