摘要: 题意:有C个人,给P个piajju,每人吃Q个,剩L个。然后给你P和L(Q>L),让你求Q的可能情况,如果有多种可能,从小到大输出;如果不存在,输出impossible分析:比较简单的一道题,开始想优化一下,结果一直WA。。。最后干脆把优化去了。看来功力还不够深—_-|| 扯远了。。。回到题目。 设n=P-L,若n<=L,则输出impossible 接下来就简单了,求出n的约数既可,当然还包括1和n。具体就是暴力枚举1->sqrt(n) 需要注意的就是当n为完全平方数时,不要重复输出 阅读全文
posted @ 2012-05-27 16:15 Abrain 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 题意:求出区间[a,b]的PHI值的平方和分析:充分理解欧拉函数的定义,结合素数筛选的巧妙应用 对于素数筛选,对于一个素数pi,在筛选其倍数k*pi时就可以计算k*pi这个数的欧拉函数了View Code 1 void cal_PHI(){ 2 int i,j; 3 int m=(int)sqrt(maxn*1.0); 4 memset(mk,0,sizeof(mk)); 5 for(i=1;i<maxn;i++) num[i]=i; 6 for(i=2;i<maxn;i++){ 7 if(!mk[i]... 阅读全文
posted @ 2012-05-26 20:59 Abrain 阅读(228) 评论(0) 推荐(1) 编辑
摘要: 连续区间最大和问题指的是在给定的一串序列中找出和最大的连续区间。解决这类问题有下面五种方法:1. o(n^3) 暴力枚举 这种方法就不需要多说了,最简单的方法,但复杂度很高,数据量大时不可取。2. o(n^2) 预处理+枚举 这种方法无非是在上一种方法的基础上做些优化。sum[i]表示从1-i 这段区间的和,在输入的时候就可以进行预处理,枚举每一段区间 i-j 其和为 sum[j]-sum[i-1]。虽然加了预处理优化,但面对大数据量时人仍无能为力。3. o(nlogn) 分治 其大致思想是,若对于一段区间[L,R),其中mid=(L+R)>>1,将区间分成左右两边[L,mid), 阅读全文
posted @ 2012-04-26 17:18 Abrain 阅读(826) 评论(1) 推荐(0) 编辑