随笔分类 -  ACM算法

1
摘要:题目输入 -999999 - 999999将负数变为正数,并且在num中标记为负数(true)从后往前取,一正一负(一负一正)UVA 11039#include #include #include #include #include #include using namespace std; #define maxn 1000000 int arr[maxn]; bool num[maxn]; int main() { int T,N,a; scanf("%d",&T); while(T--) { memset(num,false,sizeof(num)); sc. 阅读全文
posted @ 2013-07-11 19:06 简洁是智慧的灵魂 阅读(109) 评论(0) 推荐(0)
摘要:通过在网上查找,整理的:#include using namespace std; bool is_pow2(int x) //判断是否2的n次方 { x &= x-1; if(!x) return true; return false; } void Binary(int num)//十进制转二进制 { int a[32]; int i = 0; while(num) { a[i++] = (num%2)?1:0; num >>= 1; } while(--i) { cout>x; coutusingstd::cout;usingstd::cin;u... 阅读全文
posted @ 2013-05-12 00:46 简洁是智慧的灵魂 阅读(1402) 评论(0) 推荐(0)
摘要:时间限制: 4000ms 内存限制: 256MB描述对于两个长度相等的字符串,我们定义其距离为对应位置不同的字符数量,同时我们认为距离越近的字符串越相似。例如,“0123”和“0000”的距离为 3,“0123”和“0213”的距离则为 2,所以与“0000”相比,“0213”和“0123”最相似。现在给定两个字符串 S1 和 S2,其中 S2 的长度不大于 S1。请在 S1 中寻找一个与 S2 长度相同的子串,使得距离最小。输入输入包括多组数据。第一行是整数 T,表示有多少组测试数据。每组测试数据恰好占两行,第一行为字符串 S1,第二行为 S2。所有字符串都只包括“0”到“9”的字符。输出对 阅读全文
posted @ 2013-04-13 16:28 简洁是智慧的灵魂 阅读(135) 评论(0) 推荐(0)
摘要:/*坑爹的以为什么k,k1,k2,啥子的都是整数类型;没想到居然会有小数;难怪张大牛wa了那么多次硬是没过;怪就怪自己审题不注意吧;一般题目对数据类型说的还是会比较清楚的,这次对题目类型的描述是每组数据的第一行包含4个数字n,k1,k2,k,除了n以外,其他的都可能为小数,所以还是定义为double为妙(事实证明不这样做是会贡献WA 的);其实函数就是 sum = (k1+k2)*sum; 累积起来就是个指数函数 sum*(k1+k2)^n 对于指数函数的性质,可以根据图像分析对于特殊情况(可能一直达不到k的情况 以及 一开始就超过k的情况)特殊分析,这些都注意的,其实还是挺简单的;*/#i. 阅读全文
posted @ 2013-03-26 15:21 简洁是智慧的灵魂 阅读(158) 评论(0) 推荐(0)
摘要:1001 小Q系列故事——世界上最遥远的距离Time Limit:0.2Seconds Memory Limit:65536K世界上最遥远的距离不是生与死而是我就站在你面前你却不知道我爱你世界上最遥远的距离不是我就站在你面前你却不知道我爱你而是明明知道彼此相爱却不能在一起世界上最遥远的距离不是明明知道彼此相爱却不能在一起而是相约好了私奔的时间我穿越到了未来 你却回去了古代——摘自《小Q失恋日记 》第117卷513页当小Q使出浑身解数,终于赢得HR女神芳心的时候,却出现了一个意外情况,那就是白富美HR的妈妈并不同意他们交往,当听说小Q只是一个码农,特别是听说小Q曾经参加过资本主义国家发起的SM/ 阅读全文
posted @ 2013-03-23 19:24 简洁是智慧的灵魂 阅读(229) 评论(0) 推荐(0)
摘要:1001 小Q系列故事——为什么时光不能倒流Time Limit:0.1Seconds Memory Limit:65536K我以为我会是最坚强的那一个 我还是高估了自己我以为你会是最无情的那一个 还是我贬低了自己就算不能够在一起 我还是为你担心就算你可能听不清 也代表我的心意那北极星的眼泪 闪过你曾经的眼角迷离那玫瑰花的葬礼 埋葬的却是关于你的回忆如果时光可以倒流 我希望不要和你分离如果注定分离 我希望不要和你相遇. ——摘自《小Q失恋日记 》第17卷520页这是码农小Q第58次失恋了,也是陷得最深的一次。要知道,小Q自从第一次到腾讯公司报到,就被风姿绰约的前台MM彻底迷住了,这1000多个 阅读全文
posted @ 2013-03-22 19:33 简洁是智慧的灵魂 阅读(162) 评论(0) 推荐(0)
摘要:1002小明系列故事——师兄帮帮忙Time Limit:1.0Seconds Memory Limit:32768K小明自从告别了ACM/ICPC之后,就开始潜心研究数学问题了,一则可以为接下来的考研做准备,再者可以借此机会帮助一些同学,尤其是漂亮的师妹。这不,班里唯一的女生又拿一道数学题来请教小明,小明当然很高兴的就接受了。不过等他仔细读题以后,发现自己也不会做,这下小明囧了:如果回复说自己不懂,岂不是很没面子?所以,他现在私下求你帮忙解决这道题目,题目是这样的:给你n个数字,分别是a1,a2,a3,a4,a5……an,这些数字每过一个单位时间就会改变,假设上一个单位时间的数字为a1’,a2 阅读全文
posted @ 2013-03-21 22:23 简洁是智慧的灵魂 阅读(125) 评论(0) 推荐(0)
摘要:1001 小Q系列故事——电梯里的爱情Time Limit:0.1Seconds Memory Limit:65536K细心的同事发现,小Q最近喜欢乘电梯上上下下,究其原因,也许只有小Q自己知道:在电梯里经常可以遇到他心中的女神HR。电梯其实是个很暧昧的地方,只有在电梯里,小Q才有勇气如此近距离接近女神,虽然觉得有点不自在,但次数多了,女神也习惯了小Q的存在,甚至熟悉到仿佛不说上句话自己也都觉得不合适了。可是,他们的谈话也仅仅限于今天天气不错啊或是你吃了吗之类的,往往在对方微笑点头后就再次陷入难堪的沉默之中。 于是,小Q便在陪伴女神的同时,也关注着电梯中显示的楼层数字,并且他注意到电梯每向上运 阅读全文
posted @ 2013-03-21 21:08 简洁是智慧的灵魂 阅读(130) 评论(0) 推荐(0)
摘要:1001 小Q系列故事——屌丝的逆袭Time Limit:0.1Seconds Memory Limit:65536K毕业于普通本科的小Q一直自称是资深屌丝,不仅学校不知名,甚至他自己在这个普通学校也是默默无闻——直到临近毕业的时候,班里5朵金花中的2位甚至从没和他说过话!谁又能想到,如此不起眼的小Q在历经重重面试环节后,竟然如愿以偿加入了心仪已久的腾讯公司!消息刚刚传开的那几天,这在他们班甚至整个学院都是讨论的热门话题,如果这时候你还表示不知道小Q是谁,你都会被大家当作怪物的。正所谓野百合也有春天,屌丝也有逆袭的那一天!刚到腾讯大厦上班的那几天,小Q眼中的一切都是那么新鲜,连每天见到的前台M 阅读全文
posted @ 2013-03-21 20:42 简洁是智慧的灵魂 阅读(167) 评论(0) 推荐(0)
摘要:const int MAX = 100000001;const int SQRT =sqrt(MAX);bool prime[MAX] = {1,1};int arr[MAX], len = 0;求素数:void set_prime() { int i, j; for (i = 2; i #include using namespace std; const int MAX = 100000001; const int SQRT =sqrt(MAX); bool prime[MAX] = {1,1}; int arr[MAX], len = 0; void set_prime() ... 阅读全文
posted @ 2013-03-21 16:50 简洁是智慧的灵魂 阅读(178) 评论(0) 推荐(0)
摘要:Prepared for New Acmerhttp://acm.hdu.edu.cn/showproblem.php?pid=1420蒙哥马利幂模思想:在幂模运算中,通常是用幂模运算转换为乘模运算。有以下两个公式:1)a*b%n=(a%n)*(b%n)%n2)(a+b)%n=(a%n+b%n)%n当我们计算D=C^15%N时,有:C1=C*C%N=C^2%NC2=C1*C%N=C^3%NC3=C2*C2%N=C^6%NC4=C3*C%N=C^7%NC5=C4*C4%N=C^14%NC6=C5*C%N=C^15%N所以,幂模运算可以转化为乘模运算。继续看,我们会发现,要求D=C^E%N,要知道 阅读全文
posted @ 2013-03-21 15:18 简洁是智慧的灵魂 阅读(625) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=2203/*char* strstr(const char* a,constchar* b) 在a中寻找第一次出现b的位置如果出现,返回位置,如果不出现,返回空指针;利用这一特点,我们将s1字符串长度加长一部分(s2的长度),加长的内容为s1的前strlen(s2)个字符;最后用函数判断s2是否在s1中出现;over~~*/ #include #include #include #include #include #include #include #define maxn 1000... 阅读全文
posted @ 2013-03-08 13:37 简洁是智慧的灵魂 阅读(168) 评论(0) 推荐(0)
摘要:/*再水一题sort()应用+strcmp()应用;*/http://acm.hdu.edu.cn/showproblem.php?pid=1236点击打开链接#include #include #include #include #include #include #include #define maxn 1005 struct student { int grade; char name[21]; }stu[maxn]; int cmp(student s1, student s2) { if(s1.grade>s2.grade) return 1; if(s... 阅读全文
posted @ 2013-03-06 19:07 简洁是智慧的灵魂 阅读(108) 评论(0) 推荐(0)
摘要:/*今天发现自己是基地做题几乎最少的人水几道题吧;*/#include #include #include #include #include #include #include using namespace std; int main(int argc, char *argv[]) { int n,m,hh1,hh2,mm1,mm2,ss1,ss2; int eh,es,em,lh,ls,lm; string on,off,stu; char c; cin>>n; while(n--) { lh = lm = ls = 0; eh = 23; ... 阅读全文
posted @ 2013-03-05 22:05 简洁是智慧的灵魂 阅读(116) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1133查看维基百科,对卡特兰数公式证明是这样的:http://zh.wikipedia.org/wiki/%E5%8D%A1%E5%A1%94%E5%85%B0%E6%95%B0令1表示进栈,0表示出栈,则可转化为求一个2n位、含n个1、n个0的二进制数,满足从左往右扫描到任意一位时,经过的0数不多于1数。显然含n个1、n个0的2n位二进制数共有个,下面考虑不满足要求的数目。考虑一个含n个1、n个0的2n位二进制数,扫描到第2m+1位上时有m+1个0和m个1(容易证明一定存在这样的情况),则后面的0-1排列中 阅读全文
posted @ 2013-01-14 15:12 简洁是智慧的灵魂 阅读(149) 评论(0) 推荐(0)
摘要:/*Cn = C(2n,n) / (n+1)或者 Cn = (4*n - 2 ) *C(n-1)/(n+1);或者 Cn = C(zn,n)-C(2n,n+1);以下代码是将大数处理为一位一位的数,比如12345存储为a[0] = 1; a[1] = 2; a[2] = 3; a[3] = 4; a[4] = 4;*/#include #include #include using namespace std; int a[103][105]; //大数卡特兰数 int b[103]; //卡特兰数的长度 void catalan() //求卡特兰数根据公式... 阅读全文
posted @ 2013-01-13 16:54 简洁是智慧的灵魂 阅读(197) 评论(0) 推荐(0)
摘要:/*按照大整数的模版来;这个类型的斐波纳数列是前四项和,那么我们就讲其称为s1,s2,s3,s4,那么四项和即为s1+s2与s3+s4的和;运用一个知识点,就是二维数组str[n][m] 的第i行的起始地址为str[i];代码如下:*/#include #include int F[7061][550],c[550]; //7060时位数为2012 const int Base=10000; //万进制 int 最大,如果只用 +,-,可加大Base=1000000000 int ONE[]={1,1}; //大整数 1 int ZERO[]={1,0}; //大整数 0 int comp.. 阅读全文
posted @ 2013-01-10 21:19 简洁是智慧的灵魂 阅读(348) 评论(0) 推荐(0)
摘要:其实大整数的问题都是在像我们打草稿的时候列竖式一样的,不要告诉我你不知道什么叫竖式~!其实我开始也不知道它叫这个名字;所谓竖式,就是你打草稿算算术的方法,小学知识;比如你写 11+9:11+ 9----------20数A,B,求和,求差;数的长度不超过1000;贴个代码,先输入一个数,代表数据的组数n,然后输入n组A B#include using namespace std; #define base 4 #define M 10000 char s1[1000],s2[1000]; int A[251],B[251],sum[251]; int max(int a,int b) { .. 阅读全文
posted @ 2013-01-10 17:29 简洁是智慧的灵魂 阅读(261) 评论(0) 推荐(0)
摘要:开始用完全背包写,过不去,不知道思路错在哪儿了;扩展欧几里德定理 对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然存在整 数对 x,y ,使得 gcd(a,b)=ax+by。使用扩展欧几里德算法解决不定方程的办法 对于不定整数方程pa+qb=c,若 c mod Gcd(a, b)=0,则该方程存在整数解,否则不存在整数解。倒咖啡Time Limit : 3000/1000ms (Java/Other)Memory Limit : 65535/32768K (Java/Other)Total Submission(s) : 21Accepted Sub... 阅读全文
posted @ 2012-12-01 20:43 简洁是智慧的灵魂 阅读(145) 评论(0) 推荐(0)
摘要:第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出来.1.最短路(Floyd、Dijstra,BellmanFord)2.最小生成树(先写个prim,kruscal要用并查集,不好写)3.大数(高精度)加减乘除4.二分查找. (代码可在五行以内)5.叉乘、判线段相交、然后写个凸包.6.BFS、DFS,同时熟练hash表(要熟,要灵活,代码要简)7.数学上的有:辗转相除(两行内),线段交点、多角形面积公式.8. 调用系统的qsort, 技巧很多,慢慢掌握.9. 任意进制间的转换第二阶 阅读全文
posted @ 2012-11-29 13:24 简洁是智慧的灵魂 阅读(102) 评论(0) 推荐(0)

1