基础
文章平均质量分 68
Scanew_2U
这个作者很懒,什么都没留下…
展开
-
高精度实现快速幂
因为涉及到乘法,所以我们最多只能压四位。#include#include#include#include#includeusing namespace std;const int M=10000, P=4; struct bignum { int n[5000],l; bignum(){l=1,memset(n,0,sizeof(n));}//-原创 2013-10-18 16:48:47 · 1387 阅读 · 0 评论 -
NOIP 考前模板整理
dijstra:邻接矩阵bool vis[maxn];int d[maxn];int map[maxn][maxn];void dijstra(){ memset(d,127,sizeof(d)); d[1]=0; for(int i=1;i<=n;i++) { int MIN=INF,id; for(int j=1;j<=n;j++) {原创 2013-11-01 21:35:55 · 1159 阅读 · 0 评论 -
筛选法求欧拉函数
筛选法求欧拉函数欧拉函数的应用,以后看到互质的数第一个就要想到欧拉函数。今天又学到了好多家伙。欧拉定理:欧拉定理表明,若n,a为正整数,且n,a互质,(a,n) = 1,则a^φ(n) ≡ 1 (mod n) 费马小定理:且(a,p)=1,那么 a^(p-1) ≡1(mod p) 假如p是质数,且a,p互质,那么 a的(p-1)次方除以p的余数恒等于1 。 筛转载 2013-11-04 11:47:41 · 704 阅读 · 0 评论 -
快速求欧拉函数
int OrzLa(int n){ int i; int ans; ans=1; for(i=2;i*i<=n;i++) { if(n%i==0) { ans*=(i-1); n/=i; while(n%i==0) {原创 2013-10-31 13:24:27 · 629 阅读 · 0 评论 -
是男人就做的50道题目 题解
------------------------------------------------------1----------------------------------------------------------- 第一题没什么可说的,维护一个前缀和,然后很容易想到一个O(n^2)的算法,然后势必会超时。我们维护的前缀和的后面最大值减去前面的最小值既是答案,因此我们可以维原创 2013-10-23 08:01:20 · 1252 阅读 · 0 评论 -
Cube Stacking USACO 2004 Open 题解 并查集的超经典应用
并查集的路径压缩的三种实现方法。//刘汝佳经典飘逸骚气风格版本(缺点,有权值的时候权值不能紧跟着压缩)int find(int i){return f[i]==i?i:f[i]=find(f[i]);}//普通版本int find(int i){ if(f[i]==i) { return i; } else { return f[i]=find(f[i]);原创 2013-10-29 16:55:28 · 739 阅读 · 0 评论 -
用双向宽搜来提高搜索效率
在信息竞赛中,常常会遇到一些用广度优先搜索才能实现的题目,而这类题目很大一部分都可以用双向宽搜来提高搜索速度,这类题目的共同点是: 1。 起始状态和目标状态都很明确; 2。 搜索一条从起始状态道目标状态的最短路径。 3。 规则具有对称性,既如果原规则向左,则其相反规则就是向右,双向时,从目标状态像起始状态搜索时,需要将规则对称。双向宽搜的思路为分别以目原创 2013-10-29 20:14:33 · 2039 阅读 · 0 评论 -
tire树,树状数组,线段树模板
tire树 ,分为插入过程中的V用来保存权值 val[i]!=0表示这是个单词节点。struct tire{ ch[100000][26]; val[100000]; int sz; tire(){memset(ch,0,sizeof(ch));sz=1;} int id(char c) {原创 2013-10-27 11:19:27 · 797 阅读 · 1 评论 -
手动实现stl中的lower_bound和upper_bound
lower_bound和upper_bound是algorithm库中特别实用的两个函数,前者的作用是返回有序队列不小于x的第一个编号,后者则是返回大于x的第一个编号。 如{0,1,2,2,2,3}数组,用 lower_bound的返回值是2(第一个2),用upper_bound的返回值是5(第一个3)。 手动实现也非常的简单下面附代码。#include原创 2013-10-21 11:57:16 · 933 阅读 · 0 评论 -
重载“+-*/”实现高精度运算
加法 压八位 输出时补零const int M=100000000; //压八位 struct BigNum{ int n[1000],l; void init(){}//读入 BigNum operator + (const BigNum &x) const //重载加号 { BigNum t=*this; if(x.l>t.l)t.l=x.l; for(int i原创 2013-10-17 18:52:42 · 2794 阅读 · 4 评论 -
快排
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快速排序原创 2014-10-20 12:22:52 · 836 阅读 · 0 评论