摘要: 1 /** 2 题意: 求对于小于m的n个数, 求x1*a1 + x2*a2+x3*a3........+xn*an = 1 3 即求 a1,a2,a3,。。。。an 的最大公约数为1 , a1,a2....an 可重复 4 原理 : 容斥原理 所有的 排序即 m^n ——不符合的情况 ,即为... 阅读全文
posted @ 2014-05-12 21:40 夜晓楼 阅读(209) 评论(0) 推荐(0)
摘要: 1 /** 2 题意: 给定一序列,置换k次之后 输出其状态 3 置换: 考察循环节长度, 4 思路: 分别求出每个元素的循环节的大小,用k 模其大小,大的k次之后的位置, 输出即可 5 **/ 6 7 #include 8 #include 9 #include 10 using nam... 阅读全文
posted @ 2014-05-12 21:39 夜晓楼 阅读(321) 评论(0) 推荐(0)
摘要: 1 /** 2 稳定婚姻:男生不停的求婚,女生不停地拒绝 3 **/ 4 5 #include 6 #include 7 #include 8 #include 9 using namespace std;10 #define maxn 4011 int pref[maxn][... 阅读全文
posted @ 2014-05-12 21:37 夜晓楼 阅读(666) 评论(0) 推荐(0)
摘要: 1 /** 2 给定一定范围求其内的素数 3 4 注意: 5 **/ 6 7 #include 8 #include 9 #include 10 using namespace std;11 #define maxn 100000012 long long prime[500000];1... 阅读全文
posted @ 2014-05-12 21:35 夜晓楼 阅读(464) 评论(0) 推荐(0)
摘要: 1 poj 3270 置换的应用 黑书原题P248 2 /** 3 题意: 给定序列, 将其按升序排列, 每次交换的代价是两个数之和, 问代价最小是多少 4 思路:1、对于同一个循环节之内的,肯定是最小的与别的交换代价最小 5 2、 对于整个序列... 阅读全文
posted @ 2014-05-12 21:34 夜晓楼 阅读(237) 评论(0) 推荐(0)
摘要: 1 /** 2 大意: 给定小数(p/q),求其循环节的大小和循环节开始的位置 3 解法: 若出现循环 ai*2^m= aj%p; 4 即 2^m %p =1 5 若2与p 互素,则可由欧拉函数的, 6 ... 阅读全文
posted @ 2014-05-12 21:33 夜晓楼 阅读(286) 评论(0) 推荐(0)
摘要: 1 #include 2 #include 3 using namespace std; 4 5 int f[33][33]; 6 void init(){ 7 f[0][0] =1; 8 for(int i=1;i'1'){23 for(int j=... 阅读全文
posted @ 2014-05-12 21:32 夜晓楼 阅读(192) 评论(0) 推荐(0)
摘要: 1 /** 2 大意: 有连续的n天,每一天有一定的花费,将其分成m份,每一份占一天或者连续的几天,求这m份中的最大值 3 思路: 二分其最大上限,看在此最大上线,能分成多少份,若大于m份,说明上限过小,需要扩大上限 4 若小于m份,则说明,下限过大,需要缩小上限。 5 **... 阅读全文
posted @ 2014-05-12 21:31 夜晓楼 阅读(205) 评论(0) 推荐(0)
摘要: 1 /** 2 大意:给定n个点,删除其中的m个点,其中两点之间距离最小的最大值 3 思路: 二分最小值的最大值---〉t,若有距离小于t,则可以将前面的节点删除;若节点大于t,则继续往下查看 4 若删除的节点大于m,说明t,过于大,需要减小;若删除的节点小于m说明t过于小了,... 阅读全文
posted @ 2014-05-12 21:30 夜晓楼 阅读(202) 评论(0) 推荐(0)
摘要: 1 /** 2 注意: 千万得小心。。就因为一个分号,调了一个晚上。。。 3 **/ 4 #include 5 #include 6 using namespace std; 7 struct point { 8 int x,y; 9 }; 10 11 struct... 阅读全文
posted @ 2014-05-12 21:25 夜晓楼 阅读(199) 评论(0) 推荐(0)
摘要: 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 struct point { 8 double x,y; 9 };10 point be[100005],en[100... 阅读全文
posted @ 2014-05-12 21:24 夜晓楼 阅读(214) 评论(0) 推荐(0)
摘要: 1 /** 2 判断直线位置关系 3 **/ 4 #include 5 #include 6 #include 7 using namespace std; 8 struct point { 9 double x,y;10 point(double x=0,double y=... 阅读全文
posted @ 2014-05-12 21:22 夜晓楼 阅读(209) 评论(0) 推荐(0)
摘要: 大意:是否存在一条直线,使所有线段在直线上的投影至少交与一点 思路:转换为是否存在一条直线与所有的线段相交,做这条直线的垂线,那么垂线即为所求 3 **/ 4 #include 5 #include 6 using namespace std; 7 int n; 8 const double... 阅读全文
posted @ 2014-05-12 21:21 夜晓楼 阅读(174) 评论(0) 推荐(0)
摘要: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 struct point{ 8 int x,y; 9 };10 11 struct line{12 point a,b;13 };14... 阅读全文
posted @ 2014-05-12 21:20 夜晓楼 阅读(207) 评论(0) 推荐(0)
摘要: 1 Accepted 8508K 391MS C++ 2004B 2 相比下边,,优化太多太多了。。。 3 /** 4 baby-step-giant-step 因为数据量太大,,自己写hash 5 6 **/ 7 #include 8 #include... 阅读全文
posted @ 2014-05-12 21:19 夜晓楼 阅读(163) 评论(0) 推荐(0)
摘要: 1 Accepted 406MS 8576K 2379 B C++/** 2 这里加了一点限制,,大体还是一样的,, 3 4 **/ 5 #include 6 #include 7 #include 8 #include 9 #include 10... 阅读全文
posted @ 2014-05-12 21:17 夜晓楼 阅读(209) 评论(0) 推荐(0)
摘要: 1 Accepted 8508K 579MS C++ 2237B/** 2 hash的强大,,还是高次方程,不过要求n不一定是素数 3 **/ 4 #include 5 #include 6 #include 7 #include 8 #inclu... 阅读全文
posted @ 2014-05-12 21:16 夜晓楼 阅读(160) 评论(0) 推荐(0)
摘要: 1 /** 2 大意:给定一个建筑--水平放置,给定n个障碍物, 给定一条街道,从街道上能看到整个建筑的最长的连续的区域 3 思路: 分别确定每一个障碍物所确立的盲区,即----建筑物的终点与障碍物的起点的连线,建筑物的起点与障碍物的终点的连线。。这段区域即为盲区,,,有多个盲区,需要去重。... 阅读全文
posted @ 2014-05-12 21:15 夜晓楼 阅读(242) 评论(0) 推荐(0)
摘要: 1 /** 2 大意:给定点,求将这些点包起来的,最小周长,,形成的凸包与点之间的需要有一定的距离l; 3 思路: 1、求出凸包 4 2、求凸包中的长度+ 弧形的长度----〉即一个圆的周长: 因为形成的多边形的内角是360 所以因为距离l所形成的弧的角度相加即为360.。也就... 阅读全文
posted @ 2014-05-12 21:12 夜晓楼 阅读(111) 评论(0) 推荐(0)
摘要: 1 /** 2 极角排序输出,,, 3 主要atan2(y,x) 容易失精度,,用 4 bool cmp(point a,point b){ 5 if(cross(a-tmp,b-tmp)>0) 6 return 1; 7 if(cross(a-tmp,b-tmp)... 阅读全文
posted @ 2014-05-12 21:08 夜晓楼 阅读(146) 评论(0) 推荐(0)
摘要: 1 /** 2 大意:给定一个色子,有n个面,每一个面上有一个数字,在其中的m个面上有特殊的颜色,当掷出的色子出现这m个颜色之一时,可以再掷一次。。求其最后的期望 3 思路:假设 期望为ans 4 ans = 1/n*(a[b[1]]+ans)+1/n*(a[b[2]]+ans)+...... 阅读全文
posted @ 2014-05-12 21:07 夜晓楼 阅读(203) 评论(0) 推荐(0)
摘要: 1 /** 2 大意: 给定区间(a,b), 将其转化为二进制 计算从a+(a+1)+(a+2)。。。。+(a+b-1),一共有多少次进位 3 思路: 将(a,b)区间内的数,转化为二进制后,看其每一位一共有多少个1 4 可知最低位循环为2,第二位循环为4 5 ... 阅读全文
posted @ 2014-05-12 21:05 夜晓楼 阅读(225) 评论(0) 推荐(0)
摘要: 1 /** 2 大意: 给定多个点求其确定的面积可以存放多少个面积为50的东西 3 思路: 1、凸包确定多边形 4 2、 多边形求面积 5 3、 面积/50 取整 6 **/ 7 #include 8 #include 9 using namespace... 阅读全文
posted @ 2014-05-12 21:04 夜晓楼 阅读(170) 评论(0) 推荐(0)
摘要: 1 /** 2 大意:给定一组x[],y[],z[] 确定有没有两个不同的x[i], x[j] 看是否存在一个ID使得 3 y[i]17 #include 18 using namespace std;19 long long x[1010],y[1010],z[1010];20 2... 阅读全文
posted @ 2014-05-12 20:58 夜晓楼 阅读(169) 评论(0) 推荐(0)
摘要: /**求出凸包枚举每个点的矩距离即可 因为凸包上的点可定不多。。学习: 刚开始WA 了一次,,因为用int 存的, 一看discuss 里提供的数据,想起来,,应该是越界了。。后来用longlong 就过了。。**/#include #include #include using namespac... 阅读全文
posted @ 2014-05-12 20:52 夜晓楼 阅读(183) 评论(0) 推荐(0)
摘要: 1 /** 2 旋转卡壳,, 3 **/ 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 10 const double eps = 1e-8; 11 struct point {... 阅读全文
posted @ 2014-05-12 20:51 夜晓楼 阅读(199) 评论(0) 推荐(0)
摘要: 1 /** 2 大意: 求A(n,m)的结果中从左到右第一个非零数 3 思路: 0是由2*5的得到的,所以将n!中的2,5约掉可得(2的数目比5多,最后再考虑进去即可) 4 那n!中2 的个数怎么求呢? 5 int get2(int n){ 6 if(n==0) 7 re... 阅读全文
posted @ 2014-05-12 20:45 夜晓楼 阅读(165) 评论(0) 推荐(0)
摘要: 1 /** 2 大意: 求n! 结果 从左到右 第一个非零数 3 跟 1150 差不多。。 4 **/ 5 #include 6 #include 7 using namespace std; 8 9 int s[][4]={10 {6,2,4,8},{1,3,9,7},{1,7,9... 阅读全文
posted @ 2014-05-12 20:43 夜晓楼 阅读(211) 评论(0) 推荐(0)
摘要: 1 /** 2 斯特林(Stirling)公式: 3 4 求 n! 的位数 5 6 ceil函数的作用是求不小于给定实数的最小整数。 7 **/ 8 #include 9 #include 10 #include 11 using namespace std;12 const doubl... 阅读全文
posted @ 2014-05-12 20:41 夜晓楼 阅读(153) 评论(0) 推荐(0)
摘要: 1 /** 2 题解晚上写 3 **/ 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 const double esp = 1e-5;10 int main()11 {12 double l... 阅读全文
posted @ 2014-05-12 20:37 夜晓楼 阅读(180) 评论(0) 推荐(0)
摘要: 1 /** 2 大意: 给定16进制数的16个字母,,求第k大的数,,要求数的长度最大为8.,并且每个数互不相同。 3 思路: 从高到低挨个枚举,每一位能组成的排列数 ,拿最高位来说,能做成的排列数为15*A(15,len-i) 4 第二位 A(14,len-2)。。这样就可以... 阅读全文
posted @ 2014-05-12 20:34 夜晓楼 阅读(287) 评论(0) 推荐(0)
摘要: 1 #include 2 3 using namespace std; 4 long long p; 5 long long a[20]; 6 long long solve(long long n){ 7 long long left,m,sum =0; 8 for(i... 阅读全文
posted @ 2014-05-12 20:33 夜晓楼 阅读(227) 评论(0) 推荐(0)
摘要: 1 #include 2 #include 3 #include 4 using namespace std; 5 6 int get2(long long n){ 7 if(n==0) 8 return 0; 9 int cnt =0;10 whi... 阅读全文
posted @ 2014-05-12 20:31 夜晓楼 阅读(287) 评论(0) 推荐(0)
摘要: 1 /** 2 对于大数的很好的应用,,缩小放大,,保持精度 3 **/ 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 10 int main()11 {12 double n,p;13 ... 阅读全文
posted @ 2014-05-12 20:29 夜晓楼 阅读(117) 评论(0) 推荐(0)
摘要: 1 /** 2 题意: 有两种塔,重塔,轻塔。每种塔,能攻击他所在的一行和他所在的一列, 轻塔不 能被攻击,而重塔可以被至多一个塔攻击,也就是说重塔只能被重塔攻击。在一个n*m 的矩阵中,最少放一个塔,可放多个 3 问,给定p个重塔,q个轻塔,问有多少种放法。。 4 5 思路: 1、 ... 阅读全文
posted @ 2014-05-12 20:26 夜晓楼 阅读(559) 评论(0) 推荐(0)
摘要: 1 /** 2 大意 : 求1^m + 2^m + 3^m + 4^m +....+ n^m 3 解题步骤: 4 先构造从0到m的第1阶差分序列,然后以下所有2----》p阶的差分表。 5 令C[n+1][1]=n,用递推构造C[n+1][1]~C[n+1][p+1]的组合数打个一维表; 6 最... 阅读全文
posted @ 2014-05-12 20:25 夜晓楼 阅读(303) 评论(0) 推荐(0)
摘要: 1 /** 2 给出多项式 p(x) = an*x^n + an-1*x^(n-1)..... + a1*x + a0; 3 给定n,l,k,m 计算 x 从 l到 l+k-1 的p(x)的后m 位的平方的和 4 5 用差分序列 ,先计算出前 n项 构造出差分表。。后边的k-n个 用递推可得,... 阅读全文
posted @ 2014-05-12 20:24 夜晓楼 阅读(255) 评论(0) 推荐(0)
摘要: 1 /** 2 第一类Stirling数是有正负的,其绝对值是包含n个元素的集合分作k个环排列的方法数目。 3 递推公式为, 4 S(n,0) = 0, S(1,1) = 1. 5 S(n+1,k) = S(n,k-1) + nS(n,k)。 6 7 大意: 有n个房间,n把钥匙,钥匙在房间中,... 阅读全文
posted @ 2014-05-12 20:22 夜晓楼 阅读(370) 评论(0) 推荐(0)
摘要: 1 /** 2 大意: 给定一系列楼房,都在一条水平线上,高度从1到n,从左侧看能看到f个, 从右侧看,能看到b个,问有多少种这样的序列。。 3 思路: 因为肯定能看到最高的,,那我们先假定最高的楼房位置确定,那么在其左边还有f-1个能看见,在其右边还有b-1个,能看见。。所以可以这样将题目转化:... 阅读全文
posted @ 2014-05-12 20:21 夜晓楼 阅读(619) 评论(0) 推荐(0)
摘要: 1 /** 2 大意: 计算 a^b 的所有因子的和, 和mod 9901 3 思路; 将a 进行质因子分解,那么所有因子的和为 4 (2^0+ 2^1 + 2^2 +....+ 2^a1)*(3^0 + 3^1+..+ 3^a2)*..... 5 注意: 求模n下a的逆,需要 gcd(a,n)... 阅读全文
posted @ 2014-05-12 20:20 夜晓楼 阅读(185) 评论(0) 推荐(0)
摘要: 1 /** 2 大意:给定一组ai,bi . m = a1^b1 *a2^b2 * a3^ b3 * a4^b4*...*ai^bi 3 求最小的x!%m =0 4 思路: 将ai 质因子分解,若是x!%m=0 那么x! 质因子分解之后 质因子的个数一定大于等于m的个数。二分求解可得 5 ... 阅读全文
posted @ 2014-05-12 20:18 夜晓楼 阅读(174) 评论(0) 推荐(0)
摘要: 1 /*************** 2 poj 3335 点序顺时针 3 ***************/ 4 #include 5 #include 6 #include 7 using namespace std; 8 const double eps = 1e-8;... 阅读全文
posted @ 2014-05-12 20:14 夜晓楼 阅读(221) 评论(0) 推荐(0)
摘要: 1 /** 2 大意: 求[1,m], [1,n] 之间有多少个数互素。。。做了 1695 ,,这题就so easy 了 3 **/ 4 #include 5 #include 6 #include 7 using namespace std; 8 const long long max... 阅读全文
posted @ 2014-05-12 20:13 夜晓楼 阅读(228) 评论(0) 推荐(0)
摘要: 1 /** 2 大意: 给定[a,b],[c,d] 在这两个区间内分别取一个x,y 使得 (x+y)%p = m 3 思路:res = f(b,d) -f(b,c-1)-f(a-1,d)+f(a-1,c-1); f(b,d ) 表示在[0,b],[0,d] 之间有多少个符合上述要求的数 ... 阅读全文
posted @ 2014-05-12 20:12 夜晓楼 阅读(271) 评论(0) 推荐(0)
摘要: 1 /** 2 大意: 有1-K 张牌, 有两种洗牌方式,一种奇数在前,一种偶数在前。。 3 问结果多次洗牌之后,是否可以到达这种状态; a位置是x , b位置是y 4 若是输出yes, 否则输出no 5 6 思路: 将其转化为二进制。。。 7 ————————————————————————... 阅读全文
posted @ 2014-05-12 20:11 夜晓楼 阅读(187) 评论(0) 推荐(0)
摘要: 1 /** 2 大意: 求解 在[1,n] x, [1,m] y,之间有多少个gcd(x,y) = d d = min(n,m) 3 思路: 对于任意一个d 在[1,n] x, [1,m] y, gcd(x,y) 含有d 因子的个数为 n/i * m/i 这是所有含有因子d的组合的个... 阅读全文
posted @ 2014-05-12 20:10 夜晓楼 阅读(231) 评论(0) 推荐(0)
摘要: 1 /** 2 大意: 计算f(n) = ∑ gcd(i, N) 118 19 using namespace std;20 21 int main()22 {23 long long n;24 while(cin>>n){25 long long ans =1... 阅读全文
posted @ 2014-05-12 19:46 夜晓楼 阅读(178) 评论(0) 推荐(0)
摘要: http://poj.org/problem?id=12281 /** 2 大意:给定n个点看能否确定出凸包。。 数据有点若 3 思路: 求出凸包后 查看每条边上是否有至少三个点。。因为一条边上有两个电时,并不能确定出凸包,还能进行扩充 4 学习之处: 自己做的时候是挨个枚举的每条边,... 阅读全文
posted @ 2014-05-12 19:45 夜晓楼 阅读(184) 评论(0) 推荐(0)
摘要: 1 /** 2 大意: 求[a,b] 之间 phi(a) + phi(a+1)...+ phi(b); 3 思路: 快速求欧拉函数 4 **/ 5 6 #include 7 #include 8 using namespace std; 9 #define Max 300000010 11 ... 阅读全文
posted @ 2014-05-12 19:43 夜晓楼 阅读(286) 评论(0) 推荐(0)
摘要: 1 题目大意给出一个n,求sum(gcd(i,j),014 #include 15 using namespace std;16 #define Max 100000017 18 long long phi[Max+5],ans[Max+5];19 int prime[Max/3];20 bool... 阅读全文
posted @ 2014-05-12 19:42 夜晓楼 阅读(183) 评论(0) 推荐(0)
摘要: 1 /*** 2 大意:计算gcd(x,y,z) =1 01 情况 ,,还应加上退化到3个平面上的情况。。 23 1、 f(x) = n/x*n/x*n/x;----〉 g(x) = mu[i] *(n/x*n/x*n/x) 24 2、 加上退化到三个平面 ----〉 g(x) ... 阅读全文
posted @ 2014-05-12 19:40 夜晓楼 阅读(439) 评论(0) 推荐(0)
摘要: 1 /** 2 大意: 给定整数N,1 gcd(x,y/2) = 1; 8 就是求比y/2小的所有与y/2 互质数的个数。。。y取值为2,4,6,8,10.。。。 9 所以siga(gcd(x,2)=2 + gcd(x,4) =2 + gcd( x,6) =2 + 。。。)= 10 ----->s... 阅读全文
posted @ 2014-05-12 19:34 夜晓楼 阅读(788) 评论(0) 推荐(0)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=16951 /** 2 大意: ab 那么 6 对于1-b 之间的互质的数 就是欧拉函数, 7 对于b+1 -- d 从b+1 -- d 之间找一个数y, 在 1 - b 之间寻找与其互质的数。 那么... 阅读全文
posted @ 2014-05-12 19:33 夜晓楼 阅读(428) 评论(0) 推荐(0)
摘要: 1 /*** 2 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数 3 **/ 4 #include 5 #include 6 #include 7 8 using namespace std... 阅读全文
posted @ 2014-05-12 19:32 夜晓楼 阅读(421) 评论(0) 推荐(0)
摘要: 1 /** 2 程序员调bug思路: 一共有四种情况,1、 1个原有的bug 在原有的分类中2、 1个原有的bug 在新的分类中3、 1个新的bug 在原有的分类中4、 1个新bug 在新的分类中 3 **/ 4 #include 5 #include 6 using namespace s... 阅读全文
posted @ 2014-05-12 19:31 夜晓楼 阅读(229) 评论(0) 推荐(0)
摘要: 1 /** 2 给定一个置换,看能不能存在一个置换A^2 = B 3 思路; 循环节长度为偶数n的置换只能由循环节长度为长度2*n 的置换A*A 而变得。所以只需求出循环节,看循环节长度为偶数的个数是否为偶数个即可。。 4 训练指南 5 **/ 6 #include 7 #include 8 ... 阅读全文
posted @ 2014-05-12 19:28 夜晓楼 阅读(164) 评论(0) 推荐(0)
摘要: http://poj.org/problem?id=1066大意; 问在房间中有一份宝藏,但是房间中有一些隔板,问最少需要通过多少隔板思路: 链接宝藏与爆破地点,枚举每一条直线寻找最少破坏的隔板。。 1 #include 2 #include 3 #include 4 using na... 阅读全文
posted @ 2014-05-12 19:26 夜晓楼 阅读(228) 评论(0) 推荐(0)
摘要: 1 /** 2 大意: 求m!用2进制表示有多少位 m! = 2^n 两边同时取对数 log2(m!) = n 3 即 log2(1) + log2(2)+log2(3)+log2(4)...+log2(m) = n 4 枚举即可 5 6 拓展: 7 可以用斯特林(Stir... 阅读全文
posted @ 2014-05-12 09:20 夜晓楼 阅读(192) 评论(0) 推荐(0)