- 博客(261)
- 收藏
- 关注
原创 C++板子
GAUSS#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#define exp 1e-8#define RE register#define IL inlineusing namespace std;double f[110],a[110][110];bool flag[110],light[110];struct formula{ double s
2021-11-19 22:42:52
570
1
原创 带权二分图最佳匹配(KM)
带权二分图最佳匹配(KM)#include<iostream> #include<cstdio>#include<cstring>using namespace std;int head[1010],to[100010],w[1010][1010],nxt[100010],link[100010],dis[100010],tot=0;bool vis[1010];int INF=0x7f7f7f7f;void add(int u,int v){ to[
2021-06-22 21:22:08
331
原创 二分图匹配
二分图匹配#include<iostream> #include<cstdio>#include<cstring>using namespace std;int head[1010],to[100010],nxt[100010],link[100010],tot=0;bool vis[1010];void add(int u,int v){ to[++tot]=v,nxt[tot]=head[u],head[u]=tot; return;}bool
2021-06-22 20:06:57
137
原创 YBT金牌导航元素
YBT金牌导航元素#include<iostream> #include<cstdio>#include<algorithm>using namespace std;struct jgt{ long long id,magic;}a[1010];long long d[64];bool cmp(jgt t1,jgt t2){ return t1.magic>t2.magic;}bool add(long long x){ for(lo
2021-06-22 18:22:58
236
原创 Dinic
Dinic#include<iostream>#include<cstdio>#include<cstring>#include<queue>using namespace std;const long long N=210,E=10010;long long head[N],to[E],nxt[E],val[E],dep[N],cur[N],gap[N],t,n,tot=1;bool vis[N];void add(long long u,
2021-06-22 12:40:25
138
原创 YBT高效进阶网络流求最大流
YBT高效进阶网络流求最大流#include<iostream>#include<cstdio>#include<cstring>#include<queue>using namespace std;const long long N=210,E=10010;long long head[N],to[E],nxt[E],val[E],dep[N],cur[N],t,n,tot=1;bool vis[N];void add(long long
2021-06-22 10:47:32
135
原创 YBT金牌导航Manacher不交回文串
Manacher#include<iostream> #include<cstdio>using namespace std;char str[],s[];long long pre[],suf[],sum[],p[],len;void init(){ str[0]='@'; for(i=1;i<=(len<<1);++i) { } str[len+1]='%'; return;}void Manacher(){ long l
2021-06-21 18:46:20
149
原创 YBT金牌导航彩灯
YBT金牌导航彩灯#include<iostream> #include<cstdio>using namespace std;long long d[110],mods=2008;void add(long long x){ long long i; for(i=63;i>=0;--i) if(x&(1ll<<i)) if(d[i])x^=d[i]; else{d[i]=x;return;} return;}int m
2021-06-21 18:32:19
129
原创 YBT高效进阶 4.6.2 洛谷P1081 开车旅行(最详细)
YBT高效进阶 4.6.2 洛谷P1081 开车旅行TITLE题目描述小A和小B决定利用假期外出旅行,他们将想去的城市从1到n编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市i的海拔高度为h_i城市i和城市j之间的距离d_{i,j},恰好是这两个城市海拔高度之差的绝对值,即 di,j=∣hi−hj∣d_{i,j}=|h_i-h_j|di,j=∣hi−hj∣旅行过程中,小A和小B轮流开车,第一天小A开车,之后每天轮换一次。他们计划选择一个城市s作为起点,一直向
2021-06-13 16:37:33
276
3
原创 YBT高效进阶 5.3.2 区间圆数
YBT高效进阶 5.3.2 区间圆数思路预处理 不考虑前导0设f[i][j]表示i位中j个0f[i][j]=f[i-1][j-1]+f[i-1][j]f[i][0]=1特殊处理前导0用数位DPCODE#include<iostream>#include<cstdio>#include<cstring>using namespace std;int f[51][51];bool s[51];int digitDP(int x){ if(!x
2021-06-12 19:32:53
165
原创 YBT高效进阶 5.3.3 数字计数
YBT高效进阶 5.3.3 数字计数思路注意用unsigned long long用二维表示状态:当前位,已经找到的个数如果枚举的数==要找的数,没有前导0,ans+1CODE#include<iostream>#include<cstdio>#include<cstring>using namespace std;unsigned long long f[110][110],s[110],power[110];unsigned long long
2021-06-12 17:16:57
187
原创 YBT高效进阶_5.3.1 B数计数
YBT高效进阶_5.3.1 B数计数思路用填数法一位一位看用3维表示状态:当前位,余数,含有13的状态CODE#include<iostream>#include<cstdio>#include<cstring>using namespace std;int f[11][13][3],power[14],n;int digitDP(int dep,int mods,int digit,bool limit){ if(!limit&&
2021-06-12 16:43:33
216
1
原创 YBT高效进阶 6.2.5 余数之和
YBT余数求和思路(n,k)(n,k)(n,k)=∑i=1nk mod i=\sum_{i=1}^nk\bmod i=∑i=1nkmodi=∑i=1nk−⌊ki⌋=\sum_{i=1}^nk-\left\lfloor \dfrac ki \right\rfloor=∑i=1nk−⌊ik⌋=n∗k−∑i=1n⌊ki⌋=n*k-\sum_{i=1}^n\left\lfloor \dfrac ki \right\rfloor=n∗k−∑i=1n⌊ik⌋分块i∈[x,⌊k⌊kx⌋⌋]时⌊ki
2021-06-10 13:59:53
169
原创 标程_字符串算法
标程_字符串算法Hash一维hash用一个数表示一个字符串或一个数组看做一个n进制数转换chen二维hashhash表(动态)hash静态KMPTrieAC自动机
2021-06-09 22:33:45
115
原创 洛谷P4777【模板】扩展中国剩余定理(EXCRT)
洛谷P4777【模板】扩展中国剩余定理(EXCRT)TITLE思路中国剩余定理CRTx≡a1(modm1)x\equiv a_1\pmod{m_1}x≡a1(modm1)………………x≡an(modmn)x\equiv a_n\pmod{m_n}x≡an(modmn)gcd(mi,mj)=1,(i≠j)\gcd(m_i,m_j)=1,(i\not=j)gcd(mi,mj)=1,(i=j)扩展中国剩余定理EXCRTx≡a1(modm1)x\equiv a_1\pmod{m
2021-05-22 08:21:06
184
原创 洛谷P3868 [TJOI2009]猜数字
洛谷P3868 [TJOI2009]猜数字TITLE思路中国剩余定理(CRT)用龟速乘,注意a[i]=(a[i]%m+m)%mCODE#include<iostream> #include<cstdio>using namespace std;void exgcd(long long a,long long b,long long &x,long long &y){ if(!b){x=1,y=0;return;} exgcd(b,a%b,x,y
2021-05-21 22:07:12
160
原创 洛谷P1495 【模板】中国剩余定理(CRT)/曹冲养猪+扩展欧几里得求逆元
P1495 【模板】中国剩余定理(CRT)/曹冲养猪TITLE思路fadjgoajdfiajbjaorwdCODE
2021-05-21 20:54:19
164
原创 洛谷P1447 [NOI2010] 能量采集
洛谷P1447 [NOI2010] 能量采集TITLE思路∑i=1n∑j=1m2gcd(i,j)−1=−n∗m+2∑i=1n∑j=1mgcd(i,j)\sum_{i=1}^n\sum_{j=1}^m2\gcd(i,j)-1=-n*m+2\sum_{i=1}^n\sum_{j=1}^m\gcd(i,j)∑i=1n∑j=1m2gcd(i,j)−1=−n∗m+2∑i=1n∑j=1mgcd(i,j)∵∑k∣nϕ(k)=n\because \sum_{k|n}\phi(k)=n∵∑k∣nϕ(k)
2021-05-20 17:20:13
138
原创 P5431 【模板】乘法逆元2
P5431 【模板】乘法逆元2TITLE思路线性求逆元预处理前缀积,后缀积扩展欧几里得算出所有数的积的逆元CODE#include<iostream> #include<cstdio>using namespace std;long long a[5000010],b[5000010],c[5000010];inline long long read()//快读 { long long ans=0; char u=getchar(); while (u&
2021-05-20 16:06:48
119
原创 洛谷P1516 青蛙的约会(扩展欧几里得EXGCD)
洛谷P1516 青蛙的约会TITLE思路ax+by=c存在整数解当且仅当gcd(a,b)|c扩展欧几里得算法实现求解二元一次不定方程的整数解若求出ax’+by’=gcd(a,b),那么将等式两边变为原来的c/gcd(a,b)倍long long exgcd(long long a,long long b,long long &x,long long &y){ if(!b){x=1,y=0;return a;} long long ans=exgcd(b,a%b,x,y),t
2021-05-19 14:05:09
145
原创 洛谷P4139 上帝与集合的正确用法
洛谷P4139 上帝与集合的正确用法TITLE思路欧拉定理ab≡abmod ϕ(m)+ϕ(m)a^b \equiv a^{b\mod \phi(m)+\phi(m)}ab≡abmodϕ(m)+ϕ(m)代入公式计算即可若ab,b<=2,return 0否则return 2ϕ(x)+函数自己(ϕ(x))mod b2^{\phi(x)+函数自己(\phi(x))}\mod b2ϕ(x)+函数自己(ϕ(x))modblong long ExEulerTheorem(long long x
2021-05-18 21:24:11
140
原创 洛谷P5253 [JSOI2013]丢番图
洛谷P5253 [JSOI2013]丢番图TITLE思路1/x+1/y=1/n1/x+1/y=1/n1/x+1/y=1/n化简得(x−n)(y−n)=n2化简得(x-n)(y-n)=n^2化简得(x−n)(y−n)=n2ans=(n2的因数个数+1)/2ans=(n^2的因数个数+1)/2ans=(n2的因数个数+1)/2ans=(∏(n的每个质因数的指数∗2+1)+1)/2ans=(\prod{(n的每个质因数的指数*2+1)}+1)/2ans=(∏(n的每个质因数的指数∗2+1)+1)/2
2021-05-18 21:11:05
141
原创 洛谷P5495 Dirichlet 前缀和
洛谷P5495 Dirichlet 前缀和TITLE思路∵质数唯一分解\because 质数唯一分解∵质数唯一分解∴每个数对倍数产生贡献\therefore 每个数对倍数产生贡献∴每个数对倍数产生贡献先线性筛出质数从小到大计算 每个数对倍数产生贡献贡献累加CODE#include<iostream> #include<cstdio>using namespace std;const int maxn=20000000;unsigned int seed,a[
2021-05-17 17:28:55
89
原创 洛谷P3383 【模板】线性筛素数
洛谷P3383 【模板】线性筛素数TITLE思路每个合数只被筛一次for(b[1]=1,i=2;i<=n;++i){ if(!b[i])z[++tot]=i;//标记质数 for(j=1;j<=tot&&i*z[j]<=n;++j)//用每个质数*i筛合数 { b[i*z[j]]=1;//标记为合数 if(!(i%z[j]))break;//如果(第j个质数)整除i,那么后面的数(=i*x)会被(第j个质数*x*(i/第j个质数))筛掉 }}
2021-05-17 17:21:26
149
原创 UVA12716 GCD等于XOR GCD XOR
UVA12716 GCD等于XOR GCD XORTITLE思路∵gcd(i,j)≤i−j≤ixorj\because \gcd(i,j) \leq i-j \leq i xor j∵gcd(i,j)≤i−j≤ixorj要gcd(i,j)=ixorjgcd(i,j)=ixorjgcd(i,j)=ixorj所以gcd(i,j)=i−j=ixorjgcd(i,j)=i-j=ixorjgcd(i,j)=i−j=ixorjgcd(i,j)=gcd(i,i−j)=i−jgcd(i,j)=gcd(i,i-
2021-05-17 16:59:44
122
原创 YBT3.4.4 洛谷P3275 糖果_恒星的亮度
YBT3.4.4 洛谷P3275 糖果_恒星的亮度Title思路建图:1A<=B,B<=AA->B B->A边权02A+1<=BA->B边权13B<=AB->A边权04B+1<=AB->A边权15A<=BA->B边权0Tanjan缩点拓扑DP入度0的点f=1f[v]=max(f[u]+w,f[v]);w为该边边权ans=∑i=1总点数f[i]∗s[i]\sum _{i=1}^{总
2021-05-05 11:50:25
176
原创 YBT高效进阶3.4.3 洛谷P2272最大半连通子图
YBT高效进阶3.4.3 洛谷P2272最大半连通子图Title思路Tanjan缩点,拓扑DP第一问f[v]=f[u]+s[v],s[v]为缩点后每个点原来点的个数第二问(f[u]+s[v]>f[v])g[v]=g[u];(f[u]+s[v]==f[v])g[v]=(g[v]+g[u])%mods;CODE#include<iostream>#include<cstdio>#include<stack>#include<queue
2021-05-05 11:32:54
112
原创 YBT高效进阶3.4.1 洛谷P3387有向图缩点
YBT高效进阶3.4.1 洛谷P3387有向图缩点Title思路建图Tanjan缩点拓扑DP设f[i]为以i为终点的值f[v]=max(f[u]+s[v],f[v])ans=max(f[i])CODE#include<iostream>#include<cstdio>#include<stack>#include<queue>using namespace std;const long long maxn=200010;stru
2021-05-05 11:23:53
127
1
原创 洛谷P2746 POJ1236校园网Network of Schools
POJ 1236 Network of SchoolsTime Limit: 1000MSMemory Limit: 10000KDescriptionA number of schools are connected to a computer network. Agreements have been developed among those schools: each school maintains a list of schools to which it distributes sof
2021-05-04 20:38:42
145
原创 YBT高效进阶3.4.2 洛谷P2341 POJ2186受欢迎的牛Popular Cows
洛谷P2341 POJ2186受欢迎的牛Title思路缩点,如果出度为0的点唯一,ans=该点原始点数若出度为0的点有多个,ans=0缩点用Floyd or Tanjan or Topsort or KosarajuCODE#include<iostream> #include<cstdio>#include<stack>using namespace std;int dfn[50010],low[50010],col[50010],s[50010]
2021-05-04 20:28:04
129
原创 洛谷P1377树的序
洛谷P1377树的序Title思路4个数组保存一棵树2个保存左右儿子1个保存值1个保存指针CODE#include<iostream>#include<cstdio>#include<cstring>using namespace std;int a[100010][4];void DFS(int x){ if(x==0)return; cout<<x<<' '; if(a[x][2])DFS(a[x][2]);
2021-05-04 16:45:26
109
原创 洛谷P2258子矩阵
洛谷P2258子矩阵Title思路暴力选r行DP计算出分值设f[i][j]为选i*j的子矩阵的最小分值f[0][0]=0f[i][j]=min(f[i][j],f[i-1][k]+y[j]+x[k][j]);1<=i<=c,i<=j<=m,0<=k<jy为一行内的分值x为两列间的分值CODE#include<iostream>#include<cstdio>#include<cmath>#include&l
2021-05-04 16:05:21
139
原创 洛谷P1052 过河
洛谷P1052 过河Title思路缩短距离超过90就当90算设f[i]为到i的值f[0]=0f[i+j]=min(f[i+j],f[i]+i是否有石子)1<=i<=n+ts<=j<=t代码#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;long long a[210],b[2
2021-05-04 12:08:44
157
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人