自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 问答 (1)
  • 收藏
  • 关注

原创 归并排序顺带求逆序对

以前没有学过归并排序,所以这次研究逆序对很是困难。感谢这位大神,让我终于AC 了逆序对:http://blog.csdn.net/shen823797837/article/details/8794919其实它的思想与归并排序是一样的,并且是基于归并排序的。先求各个部分(分治)的逆序对个数,并将该部分的原数组排序。在归并的时候比较两个部分中数的大小,这里排序就派上用场了#inc

2013-11-08 15:57:18 511

原创 排列与组合

对于排列组合的总结:排列是指从n个数中取r个数,按照一定顺序排列,不同的取法及顺序都算一种不同的排列。  记为A(n,r);组合是指从n个数中取r个数,不按照顺序进行组合,不同的取法算一种不同的组合。        记为C(n,r);对于大小:A(n,r)=( n! )/( (n-r)! )C(n,r)=A(n,r)/(r!)且对于组合来讲:C(

2013-11-08 14:14:03 460

原创 getchar输入加速

首先要弄明白的是:对于c++: cin>>scanf>>getchar     所以,我们会采用getchar来优化输入,在数据量十分大的时候就很有用。以下为优化模板:I. 虽然代码长,但正负整数都可以读入int getint(){ char c;int x; for(c=getchar();(c'9')&&c!='-';c=getchar()); int p=0;

2013-11-08 13:54:11 824

转载 c++运算符优先级表

C++ Operator PrecedencePrecedenceOperatorDescriptionAssociativity1::Scope resolutionLeft-to-right2++   --Suffix/postfix increment and decrem

2013-11-08 13:44:51 502

原创 神逻辑各种快速幂

快速幂的几种不同范例:NO.1:(递归式)#include #include #include using namespace std;int ksm(int a,int b,int n) { int t; if (b == 0) return 1; if (b == 1) return a%n;

2013-11-08 13:40:44 545

原创 对于逆元的理解

废话不多说,直接总结。在模运算中,加法单位元:  0   因为   (a+0) ≡ a  (mod m);乘法单位元: 1    因为   (1*a)  ≡ a  (mod m);而逆元呢,就是把上面的倒过来;定义 对a∈Zm,存在b∈Zm,使得     a+b ≡ 0 (mod m)              则b是a的加法逆元,记b= - a。定义 对a∈Z

2013-11-08 13:32:35 804

原创 nlogn的LIS(最长不**子序列)

设  a[i]  表示序列中的第 i 个数, f[i] 表示 1 - i 这一段中以 i 结尾的最长上升子序列的长度,初始时设f [i] = 0(i = 1, 2, ..., n)。则有动态规划方程:f[i] = max{1, f[j] + 1} (j = 1, 2, ..., i - 1, 且a[j] 但如上的直接实现时间复杂度是O(n)的。 设有两个元素 a[x] 和 a[y]

2013-11-07 17:31:13 525

原创 hdu 1879 裸最小生成树

这是一道裸的最小生成树问题,很适合用来入门,练模板。赫赫~~#include #include #include #include #include #include #include #include using namespace std;struct ss {int to,s,next,w;};ss e[10086];int head[120];int si

2013-11-07 16:57:16 521

原创 hdu 1203 裸背包问题

这道题本来是hdu 1561最下面推荐的,以为跟树形dp有关,没想到只是个背包。还是0/1背包!!但是最重要的就是转化题目,最大概率就是用‘1’减去最小的不被offer的概率。代码如下:#include #include #include #include #include using namespace std;int n,m;float gl[10086],

2013-11-06 16:16:08 564

原创 hdu 1561 树形dp+背包+dfs

这道题考的是树形dp+dfs+背包。http://blog.csdn.net/y91041/article/details/14224095>下面是我的代码:#include #include #include #include #include using namespace std;int size;int f[252][250];int n,m;int a

2013-11-06 15:38:47 474

原创 基本分组背包

有n件物品和一个容量为v的背包。第i件物品的费用是c[i],价值是w[i]。这些物品被划分为几组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大.意思是每组物品有几种决策:是选择本组的某一件,还是一件都不选。设f[k][v]表示前k组物品花费费用v能取得的最大价值,则有:f[k][v]=max{f[k-1][v],f

2013-11-06 11:15:38 944

原创 hdu 1520 单纯树形dp

开始被这道题坑了,觉得一个上司的下属不止一个,然后就把它转成了二叉树做,然后把自己都绕进去了。其实,这道题用原图dp就可以了。dp方程: f[v][1]+=f[v.son][0];                 f[v][0]+=max{f[v.son][0],f[v.son][1]};我的代码是直接建立的有向边,直接遍历所有的边。附上代码:#include #in

2013-11-06 09:35:01 408

原创 树转二叉树(邻接矩阵,邻接表)

邻接矩阵:void build(int s){ visit[s]=1;//该点是否访问过 for(int i=1;i<=n;i++) if( f[s][i] && !visit[i] )//f[s][i]是标记s与i是否有连边 { if( !zr[s] ) zuo[s]=i; else you[zr[s]]=

2013-11-05 17:15:47 3277 1

原创 二分图判定的两种搜索实现

这种实现是基于二分图填色思想代码中,c[i]代表i所填充的颜色,也就是j所属的集合。建边之后,开始搜索,如果搜到两个相邻的点居然被填成了同一种颜色(即属于同一个集合,与二分图定义相违),则该图不是二分图。以下代码基于的题意为:求原图的补图是否为二分图。原图的输入为:n (点数)第i行:第i个点与x1,x2,x3...相连,以0结束...广搜(bfs)实现

2013-11-02 16:32:59 515

原创 统计阶乘中质因子的个数

RT:!n中v的个数 void print(int n){ memset(p,true,sizeof(p)); for(int i=2;i<=n/2+1;i++) if(p[i]) for(int j=i*2;j<=n/2+1;j+=i) p[j]=false;}//筛素数,时间复杂度应该比O(nlogn)要小int tongji(int n

2013-10-29 18:23:02 809

原创 位运算加速---基于poj3740

这道题乍一看便判断出可以使用暴搜。。。但是也很容易看出,存储啊,状态啊,都需要优化。所以,位运算又展现了它的强大之处这道题,如果用二进制表示每一横排的情况,一定会超过long long 的范围所以,就改用二进制表示每一竖排的情况。而行数总共(i种选择方案(0表示不选,1表示选择)所以,直接枚举所有的方案,用按位与的方式来确定该列是否只有一个1 。如果

2013-09-14 07:29:51 377

原创 自己的usaco代码---PROB Prime Cryptarithm

原创代码仅供参考欢迎评论O(∩_∩)O~/*ID: 输你自己的PROG: crypt1LANG: C++*//* *** **------- *** ***------- *****/ #include #include #include #include #include #include using namespace

2013-08-24 16:14:45 405

原创 今天看到的一个位运算加速,是基于时钟问题的

usaco和poj上都有一道这样的题:给你九个时钟,每个时钟只有四种状态:12,3,6,9点给你九种方法,每一种都有对应的几个时钟往后调三个小时九种方案:MoveAffected clocks1ABDE2ABC3BCEF4ADG5BDEFH6CFI7

2013-08-19 18:50:58 475

原创 自己的usaco代码---PROB Calf Flac

原创代码仅供参考欢迎评论O(∩_∩)O~//多行字符串读入 /*ID: 输你自己的PROG: calfflacLANG: C++*/#include #include #include #include #include #include using namespace std;char aa[300000];char aaa[300][82];struc

2013-08-16 22:32:53 424

转载 字符串输入函数

转载自度娘文库http://wenku.baidu.com/view/217842e8f8c75fbfc77db26f.html1.getchar();这个函数与fgetc(stdin)等价,用于每次从键盘读入一个字符       char c[200]; int i; for(i=0;(c[i]=getchar())!='\n';i++)

2013-08-15 16:17:33 456

原创 自己的usaco代码---PROB Barn Repair

原创代码仅供参考欢迎评论O(∩_∩)O~/*ID: 输你自己的PROG: barn1LANG: C++*/ #include#include #include #include using namespace std;int a[205];int f[55][205];int main(){ freopen("barn1.in",

2013-08-15 14:40:04 557

原创 自己的usaco代码---PROB Mixing Milk

原创代码仅供参考欢迎评论O(∩_∩)O~/*ID: 输你自己的PROG: milkLANG: C++*/#include #include #include #include #include #include #include using namespace std;struct ss{int a,b;};ss s[5005];bool c(cons

2013-08-15 14:37:38 475

原创 自己的usaco代码---PROB Dual Palindromes

原创代码仅供参考欢迎评论O(∩_∩)O~/*ID: 输你自己的PROG: dualpalLANG: C++*/#include #include #include #include #include #include using namespace std;char a[16];void zjz(int x,int d){ i

2013-08-14 21:18:37 379

原创 自己的usaco代码---PROB Palindromic Squares

原创代码仅供参考欢迎评论O(∩_∩)O~/*ID: 输你自己的PROG: palsquareLANG: C++*/ #include #include #include #include #include #include using namespace std;char a[50],b[50];int c; void zj

2013-08-14 18:17:56 452

原创 自己的usaco代码---PROB Name That Number

原创代码仅供参考欢迎评论O(∩_∩)O~/*ID: 输你自己的PROG: namenumLANG: C++*/#include #include #include #include #include #include #include using namespace std;char a[5000][13]; char x[1

2013-08-14 14:38:12 394

原创 自己的usaco代码---PROB Transformations

原创代码仅供参考欢迎评论O(∩_∩)O~/*1:顺时针902:顺时针1803:顺时针2704:镜面5:镜面后1-36:完全一样7:没办法*//*ID: 输你自己的PROG: transformLANG: C++*/#include #include #include #include #include #in

2013-08-14 14:31:29 449

原创 自己的usaco代码---PROB Milking Cows

原创代码仅供参考/*ID: 输你自己的PROG: milk2LANG: C++*/#include #include #include #include using namespace std;struct ss{int a,b;};ss s[5005];bool c (const ss &z,const ss &v){ if(z

2013-08-14 14:28:16 437

原创 自己的usaco代码---PROB Broken Necklace

原创代码仅供参考/*ID: 输你自己的PROG: beadsLANG: C++*/#include#include#include#include#include#includeusing namespace std;int n,f[400],ans=0;char a[1200];int main(){memset(a,'#'

2013-08-14 14:25:26 423

原创 自己的usaco代码---PROB Friday the Thirteenth

原创代码仅供参考/*ID: 输你自己的PROG: fridayLANG: C++*/#include#include#include#includeusing namespace std;int k[12]={6,2,2,5,7,3,5,1,4,6,2,4};int ans[8];int main(){freopen("friday.

2013-08-14 14:22:54 391

原创 自己的usaco代码---PROB Greedy Gift Givers

原创代码仅供参考/*ID: 输你自己的PROG: gift1LANG: C++*/#include #include#include#include#include#includeusing namespace std;char a[51][51];int z[51],b[51];char x[51];int ans[51];

2013-08-14 14:18:45 641

原创 在做usaco时遇到的c++读入txt

usaco 的第一部分有一道当时老师作为hash来做的一道题:Name that number当时的输入文件中包含了名字词典。但是在线评测时却只给了一个dict.txt的文件。(刹那间想到过自己手工暴输)但又一想,不可能这么坑爹。于是便学会了的用法:先加载#include 这里只在该题基础上做简单用法ifstream fin; //fin是个名称,可替换fi

2013-08-14 14:09:32 504

原创 练习时突然遇到的其他进制转十进制的两种c++代码

一种是从个位开始: while(cin>>b!=0){ if(b==0) break; ans=0;shu=0; gets(s); for(int i=1;i<=strlen(s)-1;i++) a[i]=s[i]-'0'; int k=0; for(int i=strlen(s)-1;i>=1;i--) { shu+

2013-07-24 16:17:14 376

原创 总结判断连通性

用warshell用一个数据结构jtu然后建一个图,按照要求,将图转化为01矩阵用近似于floyed的来判断只要有一对点不连接 return false;BFS判断用队列实现先将0点放入队列再依次将所有联通的点都放入队列(!visit[i])判断入队的点的个数和总个数的大小关系DFS判断在搜索中能够访问到的点记录为visit[i]=true;最后循环

2013-07-20 17:16:44 769

空空如也

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

TA关注的人

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