09 2011 档案

摘要:大意:很多牛站在x轴上,每个牛有一个v值;两个牛a,b交谈需要的花费为距离 * max(v(a), v(b)),求所有牛的花费和做法:先把牛按v值排序,再做两个树状数组c1,c2,c1记录当前比牛i坐标小的牛的个数sum1,c2记录当前比牛i坐标小的牛的坐标和sum2。 再记录当前所有的牛的坐标和alltotal 那么对于每个牛,它对于总数的贡献为:(sum1*mow[i].x-sum2+alltotal-sum2-(i-sum1)*mow[i].x)*mow[i].v 把每个牛算一次加起来就行了a274001990Accept... 阅读全文
posted @ 2011-09-30 11:55 ω 提拉米兔 ℃ 阅读(307) 评论(0) 推荐(0) 编辑
摘要:树状数组+离散化。WA 2:注意数字有可能是一样的!!WA 12:要用long long,输出用I64d#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#define MAXN 65540using namespace std;struct node{ long long v; int id; bool operator<(const node&p)const{return v<p.v;}};no 阅读全文
posted @ 2011-09-28 11:36 ω 提拉米兔 ℃ 阅读(344) 评论(0) 推荐(0) 编辑
摘要:题意:一棵具有n个节点的树,一开始,每个节点上都有一个苹果。现在给出m组动态的操作:(C,i)是摘掉第i个节点上面的苹果(若苹果不存在,则为加上一个苹果),(Q,i)是查询以第i个节点为根的子树有几个苹果(包括第i个节点)。做法:将每个点重新编号,使每个点的编号大于它的所有子节点的编号,这样,记录下该节点的最小子节点编号,就可以区间地求某个节点的苹果总数了。方法实现方法就是后序遍历整颗树,并将节点映射到新的编号上。接下来就是裸的树状数组了。a274003321Accepted8856K1282MSC++1377B2011-09-24 15:31:14#include<cstdio> 阅读全文
posted @ 2011-09-24 16:04 ω 提拉米兔 ℃ 阅读(605) 评论(0) 推荐(0) 编辑
摘要:A=|x1y2 - y1x2 + x2y3 - y2x3 + x3y1 - y3x1|/2Try to make clever use of this formula.先开始怎么想都没有头绪,后来瞄了一眼discuss,有人说其实每个点的坐标只对2的模数有意义。。就有点思路了总的方法数是C(n,3),再减去不满足情况的变形:y1*(x3-x2)+y2*(x1-x3)+y3*(x2-x1)不满足情况的是奇+奇+奇……(1) 奇+偶+偶……(2)(1)将式子以x整理的话,发现变成了偶+偶+偶,因此是不可能成立的(2)总结出来4种不满足的情况: (0,0) (0,1) (... 阅读全文
posted @ 2011-09-15 22:31 ω 提拉米兔 ℃ 阅读(498) 评论(0) 推荐(0) 编辑
摘要:这个题完全没思路……直接看的解题报告。。居然就这么打刷进第一页了。。定义两个三元组I(xi,yi,zi)和J(xj,yj,zj),(可以看做是空间中的点)他们的距离为D(I,J)=max{xi-xj,yi-yj,zi-zj}-min{xi-xj,yi-yj,zi-zj},给定n个三元组(n<=200000),求任意两个三元组的差的和抽化出来的模型是 max(a,b,c)-min(a,b,c),这个东西吧他放在数轴上 a,b,c我们要求最大和最小的差就是这三个点构成的线段的距离,那么我们这里再变通下 是不是端点到中间那个点的距离其实画出这个图的时候,就可以看到这个距离为(|a-b|+|b- 阅读全文
posted @ 2011-09-14 15:24 ω 提拉米兔 ℃ 阅读(449) 评论(0) 推荐(0) 编辑
摘要:假如所给的数是a,那么如果n*(n-1)/2+1(n>=0,n<a)可以遍历a的最小非负剩余系的话,那么就输出YES,否则输出NO在输出NO的情况下,一定存在n1,n0,使得n1*(n1-1)/2+1==n0*(n0-1)/2+1 mod a (==表示同余)即存在n1,n0 st. (n1-n0)/2*(n1+n0+1)==0 mod a1.当a为奇数时,选取a-1,0就可以了,所以奇数一定输出NO2.当a为2^l时,将n1,n0分奇偶讨论,没有一种情况是偶数*偶数,故一定输出YES3.当a为S*2^l(S为奇数,S>1,l>0)时,(这个我想了一会没有想出来,就在网 阅读全文
posted @ 2011-09-14 13:56 ω 提拉米兔 ℃ 阅读(267) 评论(0) 推荐(0) 编辑
摘要:由于这个题是spj,所以只要在连续的里面找就可以了。开一个sum数组,sum[i]记录前i个数的和。如果sum[i]%n==0,那么直接用这i个数就可以了。如果没有等于零的,由于n的最小非负剩余系除去零有n-1个数,而sum总共有n个位置,那么一定有最少两个sum的值是一样的a274002356Accepted284K47MSC++812B2011-09-10 18:31:22#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm 阅读全文
posted @ 2011-09-10 20:55 ω 提拉米兔 ℃ 阅读(321) 评论(0) 推荐(0) 编辑
摘要:是一边读入一边算的……先开始只要读到无解的情况就直接跳出来,一直wa,最后才知道原来还要把后面的数据读完才行,汗……参考了AC大神的思路:http://hi.baidu.com/aekdycoin/blog/item/71d7a842b93f611b73f05da4.html这里稍微证明一下:给定方程x = c1 (mod b1) ……………………(1)x = c2(mod b2) ………………………(2)(b1,b2)可以不为1于是通过取mod 定义,我们得到x = k1 * b1 + c1………………(3)(3) 带入(2)k1 * b1 + c1 = c2 (mod b2)…………(4) 阅读全文
posted @ 2011-09-10 20:48 ω 提拉米兔 ℃ 阅读(390) 评论(0) 推荐(0) 编辑
摘要:http://hi.baidu.com/aekdycoin/blog/item/b317ca18bb24334942a9ad55.html原创帖!转载请注明作者 AekdyCoin !【普通Baby Step Giant Step】【问题模型】求解A^x = B (mod C) 中 0 <= x < C 的解,C 为素数【思路】我们可以做一个等价x = i * m + j ( 0 <= i < m, 0 <=j < m) m = Ceil ( sqrt( C) )而这么分解的目的无非是为了转化为:(A^i)^m* A^j = B ( mod C)之后做少许暴 阅读全文
posted @ 2011-09-09 20:54 ω 提拉米兔 ℃ 阅读(355) 评论(0) 推荐(0) 编辑
摘要:题目思路:注意到凡是那种1111111..... 2222222..... 33333.....之类的序列都可用这个式子来表示:k*(10^n-1)/9进而简化:这个题会变成:8*(10^n-1)/9=k*m (k是一个整数)如果gcd(8,m)=t的话那么原始的式子可以改为:8/t*(10^n-1)=9m/t*k由于8/t和9m/t完全没有公约数所以如果8/t*(10^n-1)要整除9m/t的话,必须是10^n-1是9m/t的整数倍转化一下就变成了:10^n=1(mod m)的形式求出m的欧拉函数值,测试phi(m)的每一个约数PS:上一篇的二分幂取模在这里不能用,因为这个题的数据范围太大了 阅读全文
posted @ 2011-09-09 15:02 ω 提拉米兔 ℃ 阅读(985) 评论(2) 推荐(0) 编辑
摘要:已知n个点的环绕点X的周期,求出各点转到同一直线上的最短时间。求出相邻点间相距半圈所需时间=追及时间/2。求出各个半圈时间的最小公倍数为结果公式:T[i] = d[i]*d[i+1] / (d[i+1]-d[i])*2那么以读入的第一个点为基准点,求出以后所有点和第一个点相聚半圈所需的时间,求出这几个分数的最小公倍数就可以了。(和第一个点所用的时间相同就不用计算了)分数的最小公倍数求法:设两分数为a/b,c/d(已化为最简形式),则最小公倍数为:lcm(a,c)/gcd(b,d)所以在每读一个周期的时候先把公式化为最简形式,再分别对分子分母求lcm和gcda274003101Accepted5 阅读全文
posted @ 2011-09-07 14:53 ω 提拉米兔 ℃ 阅读(777) 评论(0) 推荐(0) 编辑
摘要:题意:求组合数C[n][k]的约数个数。(0<= k <= n <= 431)思路:一个数num的约数个数为cnt,将num质因数分解,得num = p1^a1 * p2^a2 * p3^a3 * ……*pn^an.则约数个数cnt = (a1 + 1) * (a2 + 1) * (a3 + 1) * …… *(an + 1).C[n][k] = n ! / ((n - k) ! * k !).cal(n, k) 函数求出 n! 时能分解出几个 k。(1) 先预求 1 到 431 的素数表。(2) 则C[n][k]中包含素数prime[i]的个数为ai = cal(n!, p 阅读全文
posted @ 2011-09-06 20:32 ω 提拉米兔 ℃ 阅读(491) 评论(0) 推荐(0) 编辑
摘要:题目意思是给定m,n问你 m/n的二进制表示的最大循环节开始位置和长度。找了一些题解,发现没有满意的,discuss里面的分析已经很好了。。我们可以观察一下1/10这组数据,按照二进制转换法(乘二法),我们可以得到:1/10 2/10 4/10 8/10 16/10 32/10 ...然后都分子都尽可能减去10,得到:1/10 2/10 4/10 8/10 6/10 2/10 ...这时候,发现出现了重复,那么这个重复就是我们要求的最小循环。抽象出模型如下:对p/q首先p'=p/gcd(p,q)q'=q/gcd(p,q);然后我们就是求p'*2^i == p'* 阅读全文
posted @ 2011-09-06 19:12 ω 提拉米兔 ℃ 阅读(447) 评论(0) 推荐(0) 编辑
摘要:先开始暴搞,然后悲剧地超时了……题目的大意是:求出正整数1~n内两两互质的数的对数。其中n <= 1,000,000欧拉函数还有这样的性质: 设a为N的质因数,若(N % a == 0 && (N / a) % a == 0) 则有E(N)=E(N / a) * a;若(N % a == 0 && (N / a) % a != 0) 则有:E(N) = E(N / a) * (a - 1)。 预处理用筛选法求得1~n内的所有质数,就可以在比较快的时间内求得1~n内所有数字的欧拉函数。 在筛选法求质数的过程中,记录合数的最小质因数,这样在求欧拉函数的过程中之 阅读全文
posted @ 2011-09-06 09:48 ω 提拉米兔 ℃ 阅读(347) 评论(0) 推荐(0) 编辑
摘要:又去抄依然大神的题解了……a274001001Accepted3400K110MSJava687B2011-09-05 20:58:10import java.io.*;import java.math.*;import java.util.*;import java.text.*; public class Main { public static void main(String[] args) { Scanner cin=new Scanner (new BufferedInputStream(System.in)); BigDecimal num; ... 阅读全文
posted @ 2011-09-05 21:03 ω 提拉米兔 ℃ 阅读(439) 评论(0) 推荐(0) 编辑
摘要:给定m, k(1 <= m <= 1000000), K(1 <= K <= 100000000), 询问第k个与m互质的数。欧拉函数的应用。首先是求出m的欧拉函数值phi[m],可知区间[1, m - 1]中有phi[m]个数与m互质。同样,在区间[n*m + 1, (n + 1) * m]中必然也有phi[m]个数与m互质,并且这phi[m]个数与[1 - m - 1]的phi[m]个数是"一一对应"的。所以只要通过k / phi[m]找到第n个区间,然后再枚举区间中的数就可以找到第k个与m互质的数。先开始当m=1时,我输出的是k+1,wa了几次 阅读全文
posted @ 2011-09-05 20:24 ω 提拉米兔 ℃ 阅读(333) 评论(0) 推荐(0) 编辑
摘要:题目太水,就不说了。。主要是想把代码贴出来以后还有用。。import java.io.*;import java.math.*;import java.util.*;import java.text.*;public class Main{ public static void main (String[] args) { Scanner cin=new Scanner (new BufferedInputStream(System.in)); BigInteger prime[]=new BigInteger[110]; Big... 阅读全文
posted @ 2011-09-05 19:18 ω 提拉米兔 ℃ 阅读(199) 评论(0) 推荐(0) 编辑
摘要:被这道题虐了两天了……自己也试着敲了一下。。事实证明手上的模版不给力啊。。。先用手上的模版敲了一个miller rabin,结果9都给我判成素数,真是无言了,然后又用算导上面讲得方法自己敲了一个pollard rho,结果卡死了……只有少数几种情况会出答案,大部分情况都是卡死了。。悲剧一个。。后来去找解体报告,因为这个题本来就是模版题嘛。。大多数写的都不是很符合我的习惯,看不进去,好不容易找到两个我看得进去的吧,自己在hust上交了一下,居然RE了。。话说这种解题报告还交上来嘛。。。好不容易在百度知道上面找到了一份代码,我觉得写得挺不错的,也解决了一些我遇到的困惑。素数判断用miller法 分 阅读全文
posted @ 2011-09-02 17:39 ω 提拉米兔 ℃ 阅读(554) 评论(0) 推荐(0) 编辑