自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 解佩尔方程

1.若已知方程x^2-dy ^2=1的最小特解(最小正整数解)x1,y1,那么有迭代公式:xn=xn-1x1+dyn-1y1yn=xn-1y1+yn-1x1求出所有的解(xk,yk),可以用矩阵表示如下:|xk|=|x1 dy1| ^(k-1) |x1||yk| |y1 x1| |y1|2.求特解(1)暴力法x^2=dy ^2+1,所以,x=sqrt(dy^2+1)通...

2019-08-31 15:47:08 352

原创 跳蚤 POJ - 1091

质因子分解+容斥定理#include <cstdio>#include <cstring>#include <vector>using namespace std;typedef long long ll;const int N=1e5+5;int n,num,m;ll res;vector<int>p;int c[N];voi...

2019-08-31 09:07:43 89

原创 解不定方程

1.二元一次不定方程ax+by=c直接用拓展欧几里得算法,加上判断是否有解。c%gcd==0同时知道通解的表示。2.n元一次不定方程

2019-08-30 22:09:23 112

原创 中国剩余定理

若m1,m2,m3,m4,m5,…,mr是两两互素的正整数,则同余方程组x=a1(mod m1)x=a2(mod m2)x=a3(mod m3)…x=ar(mod mr)有模 M=m1m2m3…mr的唯一解,即为中国剩余定理。中国剩余定理解线性同余方程组(解某类线性同余方程组)...

2019-08-29 11:58:43 124

原创 矩阵快速幂专题

poj3233经典题因为k的值太大,如果直接算,肯定会超时。因此采用二分的方法。#include <cstdio>#include <cstring>using namespace std;int n,k,m;struct matrix{ int mat[35][35];};matrix A;void init(matrix &a)...

2019-08-26 11:41:50 108

原创 高次同余方程

详解下面的模板中是,调用函数时是A,B,C A^x=B(mod C)poj3243(模板题)#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std;const int INF=0x3f3f3f3f;typed...

2019-08-26 09:17:58 184

原创 线性同余方程

一.一元线性同余方程形如 ax=b(mod m),a,b,为整数,m为正整数,x为未知数的同余式称为一元线性同余方程。方程可以变形为:ax+my=c (1)而对于方程 ax+by=(a,b) (2)是一定有解的。因此可以把方程(1)转化为方程(2)求解。利用拓展欧几里得算法,解出方程(2)的解,利用常数项的比例关系,可以推出方程(1)的解。方程(1)有解的充要条件为 c%gcd(a...

2019-08-25 11:50:36 1992

原创 Reduced ID Numbers POJ - 2769

思路:暴力枚举#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N=1e6-1;int SIN[305],maxn;bool vis[N+1];int main(){ int t; scanf("%d",&am...

2019-08-24 16:22:00 60

原创 Prime Distance POJ - 2689

大区间素数查找。因为给出的数据范围太大,无法开到那么大的数组,所以不可以一开始预处理出所有的素数。又因为l和u之间的差值最大1e6,所以也不可能一个一个地去判断。正确的方法时,先预处理出 sqrt(N)范围内的全部素数,那么就可以通过这些素数来判断1~N内的所有数是素数还是合数。对于给定的区间[l,u],利用埃氏筛的思想,选择相应的素数,把给定区间的素数的倍数给去除。又考虑到数据范围,可以...

2019-08-24 14:35:02 109

原创 Killer Names HDU - 6143

容斥定理的思想。当长度为n时,对于姓所用的字符个数从1~m-1讨论。f[i]表示长度为n的姓用i个字符时,姓的可能数量。那么f[i] = in-c[i][i-1]*(i-1)n-c[i][i-2]*(i-2)^n…因为要保证不重复,当用i个字符时,如果只用了i-1个,那么这种情况在只用i-1个字符时就已经讨论过了,所有要减去,其他的也是这样。具体过程;先利用杨辉三角,打表组合数。利用...

2019-08-24 09:18:37 56

原创 Evacuation POJ - 3057

题目大意,在一房间里,有多个’.'每个代表一个人,房间的的边界由’X’和’D’组成,分别代表墙和门,而且房间内部保证没有门。现在问题问所有人逃离房间(到达’D’处即表示逃离成功),而且每一扇门一个时间只能允许一个人通过,每个人只能向上下左右移动,每次移动花费一秒。逃离过程中,一个点可以容纳多个人,即每个人到每扇门的距离,不受其他人的影响。一开始打算用网络流写,但写到后面,发现整个过程是随时间变化...

2019-08-23 09:09:24 86

原创 Ilya And The Tree

一开始看题目,完全没有思路,想到用dfs,但一直不知道处理。看了别人的思路,最后写了很久,才AC。大概思路:对于根节点,要么为0,那么不为0,而且根节点一定处于任意一条路中,利用这个性质,我们可以对根节点的状态进行枚举。当根节点为0时,那么每条路上的把一个数变成0的机会已经用掉了。那么只有对此时的树进行一次遍历,同时求最大公约数,并记录。当根节点不为0时,那么每一条路上的最大公约数一定为根...

2019-08-21 19:21:20 76

原创 The Balance POJ - 2142

拓展欧几里得的通解的应用;已知两个特解x0,y0,通解 :x=x0+k*(b/gcd) y=y0-k*(a/gcd)然后根据条件对一定范围内的解进行依次求解#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std...

2019-08-19 20:34:41 82

原创 确定比赛名次 HDU - 1285

一开始题目意思理解错了,以为要求求出所有选手的排名关系,看了题解后,才知道只要满足题目给的次序即可,没有给的信息,可以不用管。因此,问题就变成了拓扑排序的模板题。所谓的拓扑排序是相对于有向无圈图的顶点的一种排序,如果出现了从u到v的路径,那么排序后,v一定在u的后面。基本操作就是,每次先找到入度为0的点,它肯定是它所在路径上的当前的最前面的点,输出。然后删除它所出发的所有的边,重复上述操作,...

2019-08-19 10:29:37 80

原创 C Looooops POJ - 2115

#include <cstring>#include <cstdio>#include <cmath>using namespace std;typedef long long ll;ll a,b,c,k;ll _gcd(ll a,ll b,ll &x,ll &y){ if(b==0) { x=1;...

2019-08-18 21:18:45 93

原创 数论基础

1.唯一分解定理2.容斥定理:等号右边,每一项前面的符合取决于每一项集合的元素个数,奇数个的集合为正,偶数个的为负。

2019-08-18 16:49:36 398

原创 GCD XOR UVA - 12716

题目一开始看,完全没有思路。看了书上的分析才会,而且枚举过程一开始也写错了。本题主要是利用性质,如果gcd(a,b)==a^b=c,那么b=a-c。(书上有证明,打表可以看出),然后主要枚举a ,c即可。枚举的方法借鉴与素数筛法,减小时间复杂度。(一开始不会),同时利用递推的关系先预处理出每个n对于的值。最后只要输出即可。知道了异或的性质:a ^ b = c 则 a ^ c = b#in...

2019-08-18 16:19:16 69

原创 Minimum Sum LCM UVA - 10791

数论题,唯一分解定理的应用把每个n分解成素数的幂的表示形式,把相同的素因子放在一起时,有最小和。特殊情况:n=1时,只有一个素因子时,列素数时,只需列一部分即可,如果最后无法分解,表示最后剩下的数即为素数。pow有精度损失,自己手写。#include <cstdio>#include <cstring>#include <vector>#i...

2019-08-18 15:08:49 97

原创 Choose and divide UVA - 10375

求两个组合数的商,数据大,肯定不能直接算。根据唯一分解定理,每个数可以分解成若干个素数的幂的乘积的形式。可以把分解成的素数的幂记下来,最后知道每个素数的出现次数,依次求幂即可。主要的收获:1.学会用唯一分解定理2.复习了欧拉筛3.pow()的函数原型:double pow(double,double) 因此用来算整数的幂时,会有精度损失。可以用重载来解决。4.组合数的定义。代码:...

2019-08-18 10:36:56 56

原创 Colossal Fibonacci Numbers! UVA - 11582

一道数论题数据范围,要用unsigned long long ,输入输出用%llu还有一个坑,当a=0时,报错。因为这个 runtine error好多次。另外,因为a 一开始就很大,所有用快速幂时,首先就要对a取模。主要是周期的确定。#include <cstdio>#include <cstring>#include <algorithm>u...

2019-08-17 18:46:37 77

原创 二分图匹配

1.df

2019-08-14 20:10:12 89

原创 Divisibility HDU - 3335

要求给你一串数,选出其中相互不具有整除关系的数,问最多可以选多少个数?可以转化为二分图匹配的最大独立集问题的模型,在有整除关系的两个数之间建立边,从而构建整个二分图。这样,满足条件的数,即之间没有边相连的两个数。就满足独立集的定义,求出最大独立集即可。最大独立集=顶点数-最小顶点覆盖=顶点数-最大匹配。代码:#include <cstdio>//最大独立集=顶点数-最大匹配(最小...

2019-08-14 14:47:07 72

原创 Dining POJ - 3281

此题难点在于建图,因为要保证每一头奶牛只能吃它喜欢的一种食物和饮料,且每一食物和饮料只能用一次。一开始把奶牛放中间,食物和饮料放在两边,但这样不能保证一头奶牛只吃一种食物和饮料。因此要采用一种常用的建图方法–拆点建图,把奶牛分成两边,中间权值为1,这样就能保证每一头奶牛只吃一种食物和饮料。其他的创建一个源点和汇点。连接的边权都设置为1,即可。AC代码:``#include //建图#inc...

2019-08-10 20:07:57 120

原创 ACM Computer Factory POJ - 3436

这个题目的难点在于如何建图,网上的题解大部分是通过拆点来建的,其实也可以不用拆点。把初始条件要求中没有1(可以是0,2,WA了好几次)的机器和人为设立的源点相连,加工后全部为1的机器和人为设立的汇点相连,然后对于每一台机器 i,当作边的终点,从其他机器中找到加工后条件和它初始条件符合的 j(对于p个部件in[i][k]+out[j][k]!=1),然后选择w[i]为边权,因为是 i 向 j 提供...

2019-08-10 09:56:46 122

原创 Farm Tour POJ - 2135

主要是考虑如何转化为网络流问题,要求从起点到终点,再从终点到起点,总的花费最小。相当于从源点到终点走两遍,因为要求每一条边只能走一遍,所以可以以1为每条边的流量,用来限制每一条边只能走一遍,以每条边的路程为花费,再设立一个源点和一个汇点,源点和1号节点之间费用为0,流量为2,n号点和汇点之间的边流量为2,花费为0。注意:因为原图中每一边为双向边,所以每一条边要建两次正向边,两次反向边。(因为这个W...

2019-08-09 15:25:45 52

原创 网络流

最大流:算法:1.Ford_Fulkerson(F_F算法)2.EK算法3.dinic算法EK:基于暴力搜索思想的方法,每次都采用bfs去寻找从源点到汇点的增广路,直到找不到,即表示找到了最大流,每次找到一条增广路(找的时候记得存下路径)后,可以求出这条路上的最小流量,即为这条增广路的流量。最终流量加上他,再把路径上的每一条边的正向边的流量-最小流量,反向边的流量+最小流量。以此不断的...

2019-08-09 14:13:59 87

空空如也

空空如也

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

TA关注的人

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