noi*
文章平均质量分 56
91041
这个作者很懒,什么都没留下…
展开
-
总结判断连通性
用warshell 用一个数据结构jtu 然后建一个图,按照要求,将图转化为01矩阵 用近似于floyed的来判断 只要有一对点不连接 return false; BFS判断 用队列实现 先将0点放入队列 再依次将所有联通的点都放入队列(!visit[i]) 判断入队的点的个数和总个数的大小关系 DFS判断 在搜索中能够访问到的点记录为visit[i]=true; 最后循环原创 2013-07-20 17:16:44 · 788 阅读 · 0 评论 -
神逻辑各种快速幂
快速幂的几种不同范例: 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 · 558 阅读 · 0 评论 -
对于逆元的理解
废话不多说,直接总结。 在模运算中, 加法单位元: 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 · 822 阅读 · 0 评论 -
排列与组合
对于排列组合的总结: 排列是指从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 · 487 阅读 · 0 评论 -
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 · 541 阅读 · 0 评论 -
归并排序顺带求逆序对
以前没有学过归并排序,所以这次研究逆序对很是困难。 感谢这位大神,让我终于AC 了逆序对:http://blog.csdn.net/shen823797837/article/details/8794919 其实它的思想与归并排序是一样的,并且是基于归并排序的。 先求各个部分(分治)的逆序对个数,并将该部分的原数组排序。在归并的时候比较两个部分中数的大小,这里排序就派上用场了 #inc原创 2013-11-08 15:57:18 · 526 阅读 · 0 评论 -
练习时突然遇到的其他进制转十进制的两种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 · 392 阅读 · 0 评论 -
c++运算符优先级表
C++ Operator Precedence Precedence Operator Description Associativity 1 :: Scope resolution Left-to-right 2 ++ -- Suffix/postfix increment and decrem转载 2013-11-08 13:44:51 · 520 阅读 · 0 评论 -
基本分组背包
有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 · 983 阅读 · 0 评论 -
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 · 419 阅读 · 0 评论 -
树转二叉树(邻接矩阵,邻接表)
邻接矩阵: 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 · 3320 阅读 · 1 评论 -
二分图判定的两种搜索实现
这种实现是基于二分图填色思想 代码中,c[i]代表i所填充的颜色,也就是j所属的集合。 建边之后,开始搜索,如果搜到两个相邻的点居然被填成了同一种颜色(即属于同一个集合,与二分图定义相违),则该图不是二分图。 以下代码基于的题意为: 求原图的补图是否为二分图。 原图的输入为: n (点数) 第i行:第i个点与x1,x2,x3...相连,以0结束 ... 广搜(bfs)实现原创 2013-11-02 16:32:59 · 553 阅读 · 0 评论 -
统计阶乘中质因子的个数
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 · 829 阅读 · 0 评论 -
位运算加速---基于poj3740
这道题乍一看便判断出可以使用暴搜。。。 但是也很容易看出,存储啊,状态啊,都需要优化。 所以,位运算又展现了它的强大之处 这道题,如果用二进制表示每一横排的情况,一定会超过long long 的范围 所以,就改用二进制表示每一竖排的情况。 而行数总共 (i 种选择方案(0表示不选,1表示选择) 所以,直接枚举所有的方案,用按位与的方式来确定该列是否只有一个1 。 如果原创 2013-09-14 07:29:51 · 394 阅读 · 0 评论 -
字符串输入函数
转载自度娘文库http://wenku.baidu.com/view/217842e8f8c75fbfc77db26f.html 1.getchar(); 这个函数与fgetc(stdin)等价,用于每次从键盘读入一个字符 char c[200]; int i; for(i=0;(c[i]=getchar())!='\n';i++)转载 2013-08-15 16:17:33 · 471 阅读 · 0 评论 -
在做usaco时遇到的c++读入txt
usaco 的第一部分有一道当时老师作为hash来做的一道题 :Name that number 当时的输入文件中包含了名字词典。但是在线评测时却只给了一个dict.txt的文件。(刹那间想到过自己手工暴输) 但又一想,不可能这么坑爹。于是便学会了的用法: 先加载 #include 这里只在该题基础上做简单用法 ifstream fin; //fin是个名称,可替换 fi原创 2013-08-14 14:09:32 · 515 阅读 · 0 评论 -
今天看到的一个位运算加速,是基于时钟问题的
usaco和poj上都有一道这样的题: 给你九个时钟,每个时钟只有四种状态:12,3,6,9点 给你九种方法,每一种都有对应的几个时钟往后调三个小时 九种方案: Move Affected clocks 1 ABDE 2 ABC 3 BCEF 4 ADG 5 BDEFH 6 CFI 7原创 2013-08-19 18:50:58 · 486 阅读 · 0 评论 -
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 · 838 阅读 · 0 评论