- 博客(14)
- 收藏
- 关注
原创 快排
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快速排序
2014-10-20 12:22:52
825
转载 筛选法求欧拉函数
筛选法求欧拉函数欧拉函数的应用,以后看到互质的数第一个就要想到欧拉函数。今天又学到了好多家伙。欧拉定理:欧拉定理表明,若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
698
原创 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
1146
原创 快速求欧拉函数
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
622
原创 经典动态规划 USACO Mar09 奶牛飞盘队
和是一个数F的倍数可以转化为这个数Mod F为零。 记F[i][j]为前i个数的和余数为j的方案数,显然ANS=F[n][0] 对于每一个数,只有两种状态,取或者不取。 取: F[i+1][(j+a[i])%f]=(F[i][j]+F[i+1][(j+a[i])%f])%M; 不取: F[i+1][j]=
2013-10-30 19:28:18
1788
原创 用双向宽搜来提高搜索效率
在信息竞赛中,常常会遇到一些用广度优先搜索才能实现的题目,而这类题目很大一部分都可以用双向宽搜来提高搜索速度,这类题目的共同点是: 1。 起始状态和目标状态都很明确; 2。 搜索一条从起始状态道目标状态的最短路径。 3。 规则具有对称性,既如果原规则向左,则其相反规则就是向右,双向时,从目标状态像起始状态搜索时,需要将规则对称。双向宽搜的思路为分别以目
2013-10-29 20:14:33
2020
原创 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
723
原创 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
789
1
原创 是男人就做的50道题目 题解
------------------------------------------------------1----------------------------------------------------------- 第一题没什么可说的,维护一个前缀和,然后很容易想到一个O(n^2)的算法,然后势必会超时。我们维护的前缀和的后面最大值减去前面的最小值既是答案,因此我们可以维
2013-10-23 08:01:20
1225
原创 手动实现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
926
原创 篝火晚会 题解
这道题,我感觉最大的难点在于对题目的理解,不知道是我理解能力有问题还是出题人叙述有问题,我花了很长的时间弄清楚题意,下面,我们把无用的信息筛去,从题意方面重新理解这道题。 一共有n个同学,编号从1到n,初始状态这n个人按1,2,……,n的顺序坐成一个环,每个人都希望与自己相邻的人坐在一起,如何下令调整同学的次序,形成新的一个圈,是之符合同学们的意愿。可以下达这样的命令(b1,b2,b3...
2013-10-19 21:04:27
1194
原创 国王游戏 题解
最后写高精度除以单精度的时候,压位会莫名其妙的wa掉4组,所以以后只要不是时间太紧就不要压位了吧。 本题的难点就是在如何安排最优解的顺序,下面给出分析过程。对于任意两个大臣A和B,A的左手wie
2013-10-18 23:25:28
3546
2
原创 高精度实现快速幂
因为涉及到乘法,所以我们最多只能压四位。#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
1377
原创 重载“+-*/”实现高精度运算
加法 压八位 输出时补零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
2775
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人