- 博客(75)
- 资源 (2)
- 收藏
- 关注
原创 HDU1799 循环了多少?
题目:原题链接:点击打开链接题目解析:此题类似与杨辉三角:11 11 2 11 3 3 11 4 6 4 1利用数学归纳法:由C(n,k) = C(n-1,k) + C(n-1,k-1);可以用打表的方法,把所有结果先求出来,即暴力解决;错误分析:可以先推出前几个数,找出规律;#includeusing namespace std;int c
2013-06-19 17:47:45
1245
转载 错排公式
百科名片pala提出的问题: 十本不同的书放在书架上。现重新摆放,使每本书都不在原来放的位置。有几种摆法? 这个问题推广一下,就是错排问题: n个有序的元素应有n!种不同的排列。如若一个排列式的所有的元素都不在原来的位置上,则称这个排列为错排。目录递推的方法推导错排公式容斥原理简化公式编辑本段递推的方法推导错排公式当n个编号元素放在n个编号位置,
2013-06-07 16:32:07
1015
转载 排列组合知识
百科名片排列组合是组合学最基本的概念。所谓排列,就是指从给定个数的元素中取出指定个数的元素进行排序。组合则是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序。排列组合的中心问题是研究给定要求的排列和组合可能出现的情况总数。 排列组合与古典概率论关系密切。目录定义及相关例题分析音乐专辑展开定义及相关例题分析音乐专辑展开编辑本段定义及相关定
2013-06-04 19:38:06
3825
原创 HDU1492(数论)
题目大意:约数仅由2,3,5,7组合的数叫做humble number,如丑数列:1,2,3,4,5,6,7,8,9,10,12,14,15,16, 18, 20, 21, 24, 25, 27, ... 求一个humble number的约数的个数;题目解析:先求出Humble number=2^a*3^b*5^c*7^d,然后结果为ans=(a+1
2013-05-25 12:11:25
939
原创 HDU1027Ignatius and the Princess II(排序)
题目大意:给出1,2……n的序列,输出第m小的序列;1,2,3,……n是最小的序列,1,2,3……n,n-1是第2小的序列;给出你两个数n,m,(n表示有n个数,m表示第m小的序列),输出第m小的序列:题目解析:此题和HDU1716题差不多,只需修改一些输出内容;不过我想了好久才想到,呵呵……错误分析:此题要注意找到满足的答案,就不要再让它递归了,要不然就TEL!!!#
2013-05-21 21:39:31
787
转载 C++中的算法algorithm
唉,今天有点心烦!!!!!!!!!!不知道怎么去学好这些东西!1. 查找算法 (13) 为判断容器中是否包含某一个值提供accumlate : iterator 对标志的序列中的元素之和,加到一个由 init 指定的初始值上。重载的版本不再做加法,而是传进来的二元操作符被应用到元素上。 adjacent_different :创建一个新序列,该序列的每个新值都代表了当
2013-05-21 20:13:06
916
原创 HDU1398(母函数)
题目大意:一个数n,可以用1,2^2,3^2,4^2……17^2,组合,有多少种组合;原题:点击打开链接题目解析:运用母函数模板,简单搞定;形式:(1+x^4+....+x^(4*n))(1+x^9+....X^(9*n))……(1+x^17+……+x^(17*n))错误分析:第三个循环k,应该为k+j#include#includeusing namespace std;#
2013-05-20 20:22:30
727
原创 HDU1716排序2(最经典的输出格式)
题目大意:现有四张卡片,用这四张卡片能排列出很多不同的4位数,要求按从小到大的顺序输出这些4位数。题目解析:#include#include#includeusing namespace std;int ret[5];//记录每位要填的数int use[5];//标记m个数可以使用的次数;int a[5];//存放互不相同的升序数;int flag,sign,sign1;
2013-05-20 13:53:00
917
原创 HDU1570 AC
题目大意:排序原题链接#include#includeusing namespace std;typedef unsigned int ll;ll a(int n,int m){ ll s=1; for(int i=n-m+1;i<=n;i++) s*=i; return s;}int main(){ int t; sca
2013-05-17 18:24:33
722
原创 HDU2227非递减子序列(树状数组)
题目大意:给出一列数 S = {s1, s2, s3, ...., sn},求出其非递减子序列的个数,如: S = {1, 2, 3},非递减子序列:{1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}共7个;原题链接题目解析:由于本题N太大,用DP可能会超时O(N^2),因为是求和可以用树状数组.但s1,s2....sn可能是相同的;或者是之间
2013-05-16 22:18:34
1184
原创 离散化
有些数据本身很大, 自身无法作为数组的下标保存对应的属性。如果这时只是需要这堆数据的相对属性, 那么可以对其进行离散化处理!离散化:当数据只与它们之间的相对大小有关,而与具体是多少无关时,可以进行离散化。例如(一)有四个数99999999 1 123 1583 数据范围太大,而树状数组中的c数组开的范围是数据的范围,这时候就需要离散化,把四个
2013-05-16 22:07:14
1549
原创 HDU1025 Constructing Roads In JGShining's Kingdom(最长递增子序列)
题目大意:求一列数的最长子序列;题目链接题目解析:DP+二分假设存在一个序列d[1..9] = 2 1 5 3 6 4 8 9 7,可以看出来它的LIS长度为5。下面一步一步试着找出它。我们定义一个序列B,然后令 i = 1 to 9 逐个考察这个序列。此外,我们用一个变量Len来记录现在最长算到多少了首先,把d[1]有序地放到B里,令B[1] = 2,就是说当只有1一
2013-05-16 21:39:12
814
转载 线段树总结
同样分成四类,不好归到前四类的都分到了其他。树状数组能做,线段树都能做(如果是内存限制例外),所以也有些树状数组的题目,会标示出来,并且放到其他类里。一、单点更新 1.hdu1166 敌兵布阵:有N个兵营,每个兵营都给出了人数ai(下标从1开始),有四种命令,(1)”Addij",表示第i个营地增加j人。(2)“Sub i j”,表示第i个营地减少j人。(3)“Query ij
2013-05-13 21:46:20
1001
原创 HDU 1711Number Sequence(KMP)
好长时间没看模式匹配类型的题了,刚开始都不知道怎么写了,于是又仔细的看了一遍,才写出来.题目大意:求出一个字符串在另一个字符串中的位子;题目解析:运用模板算法KMP;错误分析:数组不要开得太大;#include#include#includeusing namespace std;#pragma comment(linker,"/STACK:102400000,10
2013-05-09 20:17:05
678
原创 C++ set 初学基础
C++ 中的 set 容器内容提要:在标准模板库(STL)中提供了很多的容器,它们是存储对象的对象。本文主要介绍STL 中的关联容器——set 容器,内容包括 set::begin、set::clear、set::count、set::empty、set::end 等 26 种函数。本容器是以模板的形式设计的,能应用于广泛的数据类型。关键字:begin、clea
2013-05-09 18:37:23
1122
转载 C++ Lists
C++ Lists(链表)Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢.assign() 给list赋值 back() 返回最后一个元素 begin() 返回指向第一个元素的迭代器 clear() 删除所有元素 empty() 如果list是空的则返回true end() 返回末尾的迭代器
2013-05-08 23:03:03
698
转载 C++map的基本操作和使用
Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map最基本的构造函数; mapmapstring; mapmapint; mapmapstring; mapmapchar; mapmapchar; mapmapint;
2013-05-08 22:48:53
727
原创 HDU 1573X问题(中国剩余定理)
题目大意:求在小于等于N的正整数中有多少个X满足:X mod a[0] = b[0], X mod a[1] = b[1], X mod a[2] = b[2], …, X mod a[i] = b[i], … (0 题目解析:X mod a[0] = b[0], X mod a[1] = b[1], X mod a[2] = b[2], …, X mod a[i] = b[i], … (0
2013-05-06 20:00:20
937
原创 HDU 1788 中国剩余定理
题目大意:一个正整数N除以M1余(M1 - a),除以M2余(M2-a),除以M3余(M3-a),总之, 除以MI余(MI-a),其中(a题目分析 :通过 N % Mi = Mi-a 可以知道:(N+a)%Mi== 0; 即N+a使所有Mi的最小公倍数,所有我们只要求一个最小公倍数就可以了。错误分析:此题目只能定义数据类型__int64,而不能
2013-05-05 13:05:35
1371
1
原创 HDU 1212求余
大数的题目其实都差不多一种模式,那就是运用数组一个一个的算,先说说此题题目大意:超过1000位的大数a对小数b求余;题目解析:先用数组存储大数,再依次a[i]对b求余,余数赋加给a[i+1];一直到和b差不多的长度为止; 最后在把a对b求余的余数赋给d,此时d是一个较小的数;可以直接对b求余了;错误分析:把b[]数组赋给b1时应为b[i]-'
2013-05-04 21:01:18
723
原创 HDU 1754I Hate It(线段树)
此题和1166敌兵布阵差不多,只需改一下输入格式,把求和改为求最大值;现在发现一旦弄明白后,这类题都是水题了,呵呵题目大意:在每个测试的第一行,有两个正整数 N 和 M ( 0学生ID编号分别从1编到N。第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩。接下来有M行。每一行有一个字符 C (只取'Q'或'U') ,和两个正整数A,B。当C为'Q
2013-05-03 22:36:19
645
原创 HDU 1166敌兵布阵(线段树)
搞了好长时间,终于把这题弄懂了,下面下面就分享一下自己的做题心得吧!题目大意:第一行一个整数T,表示有T组数据。每组数据第一行一个正整数N(N接下来每行有一条命令,命令有4种形式:(1) Add i j,i和j为正整数,表示第i个营地增加j个人(j不超过30)(2)Sub i j ,i和j为正整数,表示第i个营地减少j个人(j不超过30);(3)Query i j ,i
2013-05-03 21:59:03
676
原创 HDU 1556 Color the ball (线段树)
/**********************************************题目大意:N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a 原题题目解析:错误分析:***********************************************/#include #include using names
2013-05-02 20:05:26
851
原创 HDU 2689.求逆序(树状数组)
/*************************************题目大意:给你1——n之间的数,组成的一串数;求出这组数的逆序数(所谓逆序就是比i小的数排在i的后面);题目解析:运用树状数组动态的对上更新tree[ ] 数组,对下统计getsum[ ]数组,每更新一次都计算出getsum(n)-getsum(x) --------(此时的getsum(n)-getsum(x)表
2013-05-01 17:05:17
804
原创 HDU 1406.完数(简单的筛选法)
/***********************题目大意:找出num1,num2之间的完数个数,完数(如24=1+2+3+4+6+8,6=1+2+3)原题:点击打开链接题目解析:在num1,num2之间的每个数判断它是否等于它的真约数的和;若是标记flag=1;*****************/#include#include#include#includeint judge(
2013-05-01 15:15:16
801
原创 HDU 1397.歌德巴赫猜想(简单的筛选法)
/*****************************题目大意:给定一个数n,找出n=p1+p2(p1,p2都是素数),有多少个这样的素数对(p1,p2),且(p1,p2)与(p2,p1)算一种情况;题目解析:先找出1-2^15之间的所有的素数标记prime[i]=0,(i为素数);再遍历1--n/2;判断i与n-i是否是素数;***********************/
2013-05-01 14:59:38
955
原创 HDU 1286.找朋友(简单的筛选法)
/***********************题目大意:找出1-N之间的素数(此题中1也算做素数)与N互素的数的个数,假设非互素素数的个数为num,则输出N-num;题目解析:先找出能整除N的数i,再运用筛选法先求出i小于N的倍数,再用a[j ]数组判断n与j不互素,再用num计算与n不互素的数的个数,输出n-num;易错分析:1. 应先判断a[j]是否是否应经赋值为1了,这样可
2013-05-01 13:30:04
1351
原创 HDU 1319.素数剪切(筛选法)
/***********************题目大意:找出1-N之间的素数(此题中1也算做素数)组成一列数,假设素数的个数为NUM,若NUM为奇数时输出2*C-1个数(这些数为从此列中间位置向两边展开的到的2*C-1数),若NUM为偶数时输出2*C个数(这些数为从此列中间位置向两边展开的到的2*C数);题目解析:运用筛选法先求出,1—1000之间的素数,存放在数组此c1中,再在输入
2013-04-28 18:52:35
823
原创 HDU ACM 1272.小希迷宫(并查集)
/**********************************题目大意:把是房间之间有路的房间编码放到一组,n个编码可以分成几组,并判断是否满足 条件一:任何两个房间只能有一条路连接;条件二:所有房间之间都有路连接题目解析:运用并查集把有关系的人合并到一组,最后遍历数组father[i],查看i根结点是否为他自己;错误分析:1. 初始化的函数init()中i
2013-04-25 18:29:09
912
原创 HDU ACM 1232.畅通工程(简单的并查集)
/**********************************题目大意:把是城镇之间道路的城镇有放到一组,n个城镇可以分成几组,并输出总组数-1(即只有当全部城镇在一个组时,才不需要再建道路);题目解析:运用并查集把有道路的城镇合并到一组,最后遍历数组father[i],查看i根结点是否为他自己;错误分析:1. 最主要的是题目已经知道总城镇数,应该把总城镇数运用参数传递给初始化
2013-04-23 21:48:57
1060
原创 HDU ACM 1213.How Many Tables(简单的 并查集)
/**********************************题目大意:把是朋友的人放到一组,n个人可以分成几组,并输出组数;题目解析:运用并查集把有关系的人合并到一组,最后遍历数组father[i],查看i根结点是否为他自己;错误分析:1. 最主要的是题目已经知道总人数,应该把总人数运用参数传递给初始化的函数init() 2.定义 n,i,x,y;不能定
2013-04-23 21:19:36
750
原创 HDU ACM 1856. More is better(并查集)
/**********************************题目大意:把是朋友的人放到一组,求出人数最多的一组,并输出人数;题目解析:运用并查集把有关系的人合并到一组,并且计算出此集合的结点数rank[i]; 把rank[i]与rank1比较大小,把值大的赋值给rank1,最后输出题目要求的结果rank1;错误分析:1. 下面的1,比较大小放在Union中
2013-04-23 20:51:19
944
原创 杭电acm1171.Big Event in HD
/***************************************************************************************************************************题目大意:不可以用num1个1,num2个2,num3个5组合得到的最小数;题目解析:求(1+x^eum[0]+.....+x^(num1*eu
2013-04-21 17:00:38
909
原创 杭电acm1028.整数拆分
题目大意:整数n可以用1,2 ,3 ,4.....,n相加表示;原题:点击打开链接题目解析:相当于把n个无区别的球放到n个无标志的盒子,盒子允许空,也允许放多于一个球错误分析:1.j这里j就是(前面i个表达式累乘的表达式)里第j个变量,因此每次前i个表达式累乘求完后都把中间变量a2赋值给a1, 因此要把for循环放在i的for循环里; 2.
2013-04-21 14:10:27
1554
原创 杭电acm1085.Holding Bin-Laden Captive!(母函数)
/********************************题目大意:不可以用num1个1,num2个2,num3个5组合得到的最小数;题目解析:求(1+x+.....+x^num1)(1+x^2+....+x^(2*num2))(1+x^5+....X^(5*num3))的系数为零的指数;若系数都不为零,则最小数为sum+1;错误分析:1.不能确定j的循环次数;
2013-04-21 14:03:36
931
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅