- 博客(54)
- 资源 (1)
- 收藏
- 关注
原创 POJ2773 HAPPY 2006(不能对LL大方之战)
题目大意:就是求m的第k个(升序)与m互质的数。思路:看了discuss才知道欧拉函数 的一个性质可以解决这道题:就是如果在[1,m]之间有cnt个数和m互质,即欧拉函数为cnt,那么在[n*m+1,(n+1)*m](n为正整数)区间内的欧拉函数也为cnt,即是有循环节。这就好办了,循环节最大才为100万,那么找到k/cnt这个区间,就可以枚举求得第K个数了。不过我写的实在很猥琐,1670ms
2012-09-30 16:23:31 1614
原创 POJ2749 Sum of Consecutive Prime Numbers
题目大意:求出一个数可以有几个连续的素数和组成。思路:水题~~~不过有一点要注意~~10000内的素数最多有1300个,所以即使不用在线打表穷举都无压力,只是10^6执行次数而已。但是如果此题改为n<=10^5也许会再卡掉一些人,10万内素数个数为9900个左右,即差不多10^4个,在穷举的O(n)算法中应该会TIE,所以,在线打表更为理想,虽然耗时多了30ms。AC program:
2012-09-30 11:21:08 747
原创 POJ2478 Farey Sequence
题目大意:求1~n区间欧拉函数的个数。思路:直接欧拉函数的递推式的模板撸过~~做了这道题~~从此不再相信C++编译器了~~尼玛坑爹啊~~这道题~~C++RE,G++轻松撸过~~关于欧拉函数的递推关系:假设素数p能整除n,那么如果p还能整除n / p, PHI(n) = PHI(n / p) * p;如果p不能整除n / p, PHI(n) = PHI(n / p) * (p -
2012-09-28 17:26:52 872
转载 JAVA 笔记
原来的JAVA没学好啊~~惭愧~~囧。。11月30日1.JAVA安装java_home:java安装路径 jdkpath:JAVA编译解释路径 jdk/binclasspath:类路径 .;jre/lib2.helloworld d: cd 编译:javac helloworld.java 解释:java helloworld3.在src中建公文包,
2012-09-28 15:01:09 17580
原创 POJ2042 Lagrange's Four-Square Theorem
题目大意:拉格朗日定理:每个自然数均可以表示成4个正整数的平方数之和。下面这一句,不知所云:3个平方数之和不能表示形式如4^k(8n+ 7)的数。 如果在一个正整数的因数分解式中,没有一个数有形式如4k+3的质数次方,该正整数可以表示成两个平方数之和。 思路:暴力枚举,但是不必为每个n来验证,而是让四个数滚动起来,只要小于2^15的就可以保存并在此基础上统计个数,然后打个表~~撸过~~
2012-09-28 11:11:49 1477
原创 POJ1284 Primitive Roots
题目大意:原根模板题&&欧拉函数模板题,求出模P的原根;思路:首先根据定理:模m有原根的充要条件:m=1,2,4,p^n,2p^n,其中p是奇素数。如果模m有原根的话,原根的个数是:φ(φ(m))在此题,p直接给出是奇素数,那就简单了直接:φ(p-1)撸过去~~就转化成欧拉函数的模板题了 附上理论(来自百度百科): 原根的定义 原根Primitive Root。
2012-09-27 21:59:06 1059
原创 欧拉函数 模板题 POJ2407 Relatives
题目大意&&思路:φ(n)是积性函数,所以n=P1^k1*……*Pn^kN(素数因子分解)所以:φ(n)=φ(P1^k1)*……*φ(Pn^kN)而对于φ(P1^k1),原式等于:P1^k-P1^(k-1),即是(P1-1)*P1^(k-1);在此题目中,因子的次数不会大于31,所以直接POW函数就可以解决问题 AC program: #include #include
2012-09-27 17:55:08 835
原创 POJ1845 Sumdiv
题目大意:就是求S(A^B)%9901,S函数表示A^B的因子和。其实一开始我想到杭电的1452的happy 2004.就是用逆元的做法,后来跪了~~因为P-1不一定和9901互质啊~~所以求逆元的定理要求不满足,所以在这种情况下不能用逆元的做法来做。只能用等比数列的二分法来做。首先是求出A的素因子:P1^k1 * P2^k2 * P3^k3 * P4^k4 *…… *
2012-09-27 16:16:49 707
原创 《数论》3.6习题3------求一元线性同余方程所有解(不是方程组)基础练习例子&&求逆元
且当做模板:program:#include#include#include#include#includeusing namespace std;//求6789783*x≡2474010 (mod28927591)的所有解//即是:ax≡b(mod m)的所有解int ans[1000000];void exgcd(int a,int b,int &d,int &x
2012-09-26 12:02:27 1602
原创 HDU1788 Chinese remainder theorem again
题目大意:开始还真准备用同余线性方程组做了,后来仔细一看~~哟~~可以优化~~哈。思路:因为N%M1=M1-aN%M2=M2-aN%M3=M3-a即:N%Mi=Mi-a,所以 N%Mi+a=Mi,所以N+a和0同余于Mi(i=1,2,3……),特别要记住:能够化成和0同余的一定要变式,因为这样简单多了,完全转化为求Mi的最小公倍数,即是:N+a= (Mi的最小公倍数)
2012-09-26 11:03:05 735
原创 POJ1006 Biorhythms
题目大意:求出三个生理期的共同日思路:即是X%23=0(从第零天开始的)X%28=0X%33=0但是又因为:p%23=0,e%28=0,i%33=0;所以X=p+23*y1 (yi是整数)X=e+28*y2X=i+33*y3 所以X和p同余于23,X和e同余于28,X和i同余于33;又因为23、28、33互质;所以用处理 符合定理使用条件
2012-09-26 09:25:42 753
原创 暑期多校联合第一场 H题 俄罗斯方块 (整理暑期题目系列)
Problem H. 俄罗斯方块 Time Limit: 6000ms Memory Limit: 65536kbDescription现在给你一些俄罗斯方块游戏中的小方块,你需要求出用它们拼出一个N M 的矩形的方法有多少种。在这里,方块不能重叠,方块不一定要用完,每种方块只能旋转0/90/180/270 度,不能翻转。方
2012-09-25 22:49:15 1106
原创 HDU1003 MAX SUM
题目大意:经典的最大连续子序列和思路:本来是今天开始学点DP的,但是就是一些经典DP例子还是要先掌握啊~~不过学长说这道题如果认真的用DP来解释的话算是很难的题目的~~是不是我就很难考证了~~不过我反正知道~~如果不是提前有思路的话~~我相信没几个人会把这道题当做水题~~有了思路~~就水过了~~因为DP的编码一向都是很简洁的~~只不过我的编码能力还是暴虐全场啊~~只不过是被题目虐的那一种啊~~
2012-09-24 17:26:19 548
转载 黑书DP专辑
pagesectionnotitlesubmit1131.5.1例题1括号序列POJ11411161.5.1例题2棋盘分割POJ11911171.5.1例题3决斗Sicily18221171.5.1
2012-09-24 09:30:24 2252
原创 POJ2891 Strange Way to Express Integers
题目大意&&思路:m≡r1+a1*y1 m≡r2+a2*y2 ……m≡ri+ai*yiai之间不互素,所以不是中国剩余定理,而是线性同余方程,直接模板。AC program: #include#include#include#include#includeusing namespace std;typedef __int64 LL
2012-09-23 10:42:03 741
原创 POJ2115 C Looooops
题目大意&&思路:B-A=C*x-2^k*y 扩展欧几里德好久没一血了。感懂~~~呜呜。AC program:#include#include#include#include#includeusing namespace std; __int64 exgcd(__int64 a,__int64 b,__int64 &x, __int64 &y ){ __i
2012-09-22 23:04:32 716
原创 nefu 84 五指山 (扩展欧几里得)
五指山Time Limit 1000msMemory Limit 65536Kdescription西游记中孙吾空大闹天宫,如来佛祖前来降伏他,说道:“我与你打个赌赛;你若有本事,一筋斗打出我这右手掌中,算你赢,再不用动刀兵苦争战,就请玉帝到西方居住,把天宫让你;若不能打出手掌,你还
2012-09-22 22:24:24 884
转载 The 37th ACM/ICPC Asia Regional JinHua Site Online Contest - D(爆搜)
来自ZZY的博客:http://blog.csdn.net/kk303/article/details/8008058 D - A very hard Aoshu problem 数据范围很小呃... 暴力搜索即可...枚举等号的位置...再DFS得出左边的值..再DFS找右边有多少种方案可以等于左边的加法值...Program:[cpp] vi
2012-09-22 20:47:13 1133
原创 POJ1061 青蛙的约会
现在才AC这道题,无限囧。。记得老早就看过这道题题目大意:青蛙A的出发点为x,青蛙B的出发点为y,A跳一次m米,B跳一次n米。所在的纬度线(一圈)为L;思路:扩展欧几里得的入门题:(1)、两者相遇的条件:x+mt-y-nt=pL(n-m)t+Lp=x-y;即是:at+bp=x-y求出最小的t所以先要求出gcd(a,b);即是:exgcd(n-m,L,ar,br);/
2012-09-22 17:26:39 550
原创 nefu 117 大数素数个数的位数
素数个数的位数Time Limit 1000msMemory Limit 65536Kdescription小明是一个聪明的孩子,对数论有着很浓烈的兴趣。他发现求1到正整数10n 之间有多少个素数是一个很难的问题,该问题的难以决定于n 值的大小。现在的问题是,告诉你n的值,让你帮助小
2012-09-22 13:23:16 1145
原创 POJ3292 Semi-prime H-numbers
题目大意: H-numbers是4*n+1的数,H-primes是1*H-numbers,H-semi-primes是仅仅2个H-primes的数的乘积,然后问1~h(h是 H-numbers)里面有几个H-semi-primes。思路:题目说的通俗的就是:给出一堆H数,然后HP数的就像素数的定义(姑且称为H素数),然后HSP数就是2个HP数的乘积,也就是找出2个H素数,他们的乘积就是我们要的
2012-09-22 10:00:45 733
原创 POJ2187 Beauty Contest(旋转卡壳)
题目大意:凸包最远点对思路:模板套,初写很粗糙。好几个相同函数拼凑成的,写的很丑陋。。program:#include#include #include#include #include using namespace std; struct point { int x,y; }p[50005],res[50005];
2012-09-21 12:27:48 561
原创 更新凸包模板
#include#include #include#include #include using namespace std;//此凸包作用:逆时针输出凸包顶点,凸包边上的点不输出//(要全部输出边上的点的话,暂时没想到咋办,囧) struct point { int x,y; }p[105],res[105]; double D
2012-09-21 10:33:42 675
原创 9-20队内练习赛 G题 Convex Hull of Lattice Points (来自HDU 3285原题)
题目大意:赤裸裸的凸包,有几处变动:基点为最上左的点、顺时针输出凸包顶点(本题最关键处理点:在凸包边上的不输出,只按顺时针 输出顶点)、整形坐标思路:关键点是把在凸包边上的点弹出,所以有以下几个关键步骤:极坐标排序的时候:共线时选最短距离的点优先;top从1开始,所以当然while中top要验证是正数下面举一个9个点的例子:开始之前先说明:图中的点排序后我就用字典序表明顺序了在
2012-09-20 19:53:03 18362
原创 POJ2635 The Embarrassed Cryptographer (同余)
题目大意:给出一个大数K思路:大数取余。为了避免TIE使用了1000进制。因为只是一次运算所以不必逆置数组。说实在的,10进制想不通为什么会TIE啊~~囧~~求大牛指教啊~~现在的计算机1s不是已经能处理10^8的执行次数了吗?10进制一个100W的素数就只是n*logn的算法就只是2*10^7次执行次数嘛~~下面的枚举素数的时候,n*m的算法嘛~~100w内的素数个数只有78498个嘛~~就
2012-09-19 17:08:36 1041
原创 POJ3122 pie
题目大意:就是给出n个馅饼,f个party朋友,问分给每个人多少面积的馅饼,才使得f+1(包括party主人----我)个人得到的馅饼面积最大。分割的规则是:每个人得到的馅饼仅来自一个馅饼。这也就是说不是一般的总和再平均的问题。思路:呜呜~~小增的第一道统计二分啊~~惭愧~~本题二分的上限是最大的馅饼的半径的平方(我是用馅饼的半径的平方处理的)。还是说一下为什么用二分吧,因为分馅饼是一个实数问
2012-09-18 20:12:41 696
原创 扩展Euclid小小总结
前面我们说过,gcd(a,b)可以表示为a和b的最小的正线性组合。现在我们就要求这个最小的正线性组合ax+by中的x和y。这个可以利用我们的Euclid算法。从最简单的情况开始。当b=0时,我们取x=1,y=0。当b≠0时呢?假设gcd(a,b)=d,则gcd(b,a mod b)=d。若我们已经求出了gcd(b,a mod b)的线性组合表示bx'+(a mod b)y',则gcd(
2012-09-18 11:47:36 928
原创 暑期9_15队内练习赛 B题 大数取模+矩阵快速幂
题目大意:求sin(n!*ln(n)*f[n]%2012)的结果,n思路:哎~~菜菜菜啊~~却不是我的菜~~n!至少到2012都不用求后面的啦~~因为取余都为0了~~我还在傻乎乎的用矩阵求快速幂·~呜呜~~菜菜菜啊~~AC program:(暴力无优化代码:没有优化2012后都为0的情况)#include#include#include#include#includeus
2012-09-16 17:33:18 18404
原创 递归基础认识 从快速幂开始
我这个菜鸟真的弱爆了~~弱爆了~~以前竟然在写着超级垃圾的快速幂,彻底服了自己~~无语~~实在无语program1(弱智快速幂取模)图1:猴子爬下去:图2:猴子很老实滴爬回来#includeusing namespace std;//求2^N%2012 int fn(int n) { if(n==1)return 2; else { if(n
2012-09-16 10:05:54 812
原创 POJ2769 Reduced ID Numbers
题目大意:就是求出最小的m使得n个数对m取余的结果都是不同的思路:枚举!枚举!暴力暴力!坑嗲啊,做得想哭了,尼玛的就只是memset了100W的数就TIE了,尼玛的以后memset哥不用了,靠~~不过后来头脑清醒了回来,memset的数必定是不会那么大的。只是我的随意一开,就无限TIE道哭~~呜呜~~。以后不能那么大方了~~大方死人的额~~program: #include#i
2012-09-15 20:14:16 665
原创 暑期第一次多校联合赛 I题 数学题
Problem I. 数学Time Limit: 1000ms Memory Limit: 65536kbDescription给出数列A1;A2; : : : ;AN,并设Bi = (A1 * A2 * AN /Ai ) mod (109 + 7)现要求把所有的Bi 算出来。Input输入包含多组测试数据。对于每组数据,第1 行,1 个整数N(1
2012-09-14 17:20:10 1225
原创 暑期ACM队内练习赛 H题 数字游戏
H 数字游戏给你一个N位数,从中去掉K个数字,能得到的最大的数是多少?INPUT 有T测试数据,每组测试数据第一行由N和K2个整数组成(1 ≤ K ≤ 500 000),第二行是N位数(非0开头)。 OUTPUT 对每组数据输出去掉K个数字得到的最大数。 SAMPLE TESTS INOUT34 2 19247
2012-09-14 11:41:30 18229
原创 POJ 1423 Big Number
题目大意:求n!的结果的位数n思路:首先要求一个数字有多少位,可以用(int)log10(num)+1,这样就求出num有多少位哎用log10()函数的结果最后要+1~因为运算的时候有精度缺失~不是很懂~~怪不得我之前都没得结果,只能先记一下了。囧。。更坑爹的是:要不是我在线打表的话,铁定无限TIE~~~囧。。program1:(在线打表)#include#includ
2012-09-12 20:46:10 579
原创 求1000以内的阶乘 组合数学基础练习例子(二)
program:(模拟)#includeusing namespace std;int f[3000]; int main(){int n; while (cin>>n){ memset(f,0,sizeof(f)); f[0]=1; for(int i=2;i<=n;i++) { int c=0; for(int
2012-09-12 18:05:26 735
原创 POJ2503 Babelfish
题目大意:给出英语 --- A国语言 ,然后输入A国语言单词,问在字典内是否有该单词,有就输出该单词英文,无则输出eh;思路:典型的先保存再查找,有好几种解法,我用得是hash,但是再用链表的时候无限WA啊,也不知道是那个字符串哈希有问题还是链表出了问题,求强力数据找BUG啊 AC program:(数组哈希) #include#include#include#inc
2012-09-10 22:14:42 680
转载 The 37th ACM/ICPC Asia Regional Tianjin Site Online Contest - A.B.J
A 手动打表做出映射关系...然后八进制转十进制..Program:[cpp] view plaincopyprint?#include #include #include #include #include #include #include #include #define ll long long #defin
2012-09-09 22:01:31 2176 3
转载 2012 ACM/ICPC Asia Regional Tianjin 1010 Intelligent IME
1010. Intelligent IMEDescriptionWe all use cell phone today. And we must be familiar with the intelligent Englishinput method on the cell phone. To be specific, the number buttons may correspond
2012-09-09 21:38:39 1486
原创 POJ 2533 Longest Ordered Subsequence (LOS)
题目大意:求最长升序子序列思路:经典DP,虽然简易,但是没有学长上课时的思想的话,估计做的很艰难~~囧。。状态方程:dp[t] = Max{dp[i] + 1} (a[t] > a[i] && 0 AC program:#includeusing namespace std;int mm[1005]; int ll[1005]; int main(){int n;
2012-09-08 20:50:27 538
原创 HDU1159 Common Subsequence (LCS)
题目大意:最长公共子序列思路:经典DP题目,状态方程:dp[i][k]= (1) 0 ,当i或者k为0时; (2) dp[i-1][k-1]+1 当X[i]==Y[k]时。 (3)max{ dp[i-1][k] , dp[i][k-1] },当X[i] != Y[i]时AC program:#includeusing
2012-09-08 10:39:08 540
转载 判断点在多边形内还是外
判断点在多边形内部还是外部是一个基础但很重要的算法。下面介绍两种方法:一:射线法:从点P向左作水平射线,如果P在多边形内部,那么这条射线与多边形的交点必为奇数; 如果P在多边形外部,则交点个数必为偶数(0 included)。顺序考虑多边形的每条边,便可求出交点总个数,O(n)。对于边PQ
2012-09-05 20:49:26 1209
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人