摘要:
树状数组+离散化。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
ω 提拉米兔 ℃
阅读(345)
评论(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
ω 提拉米兔 ℃
阅读(612)
评论(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
ω 提拉米兔 ℃
阅读(504)
评论(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
ω 提拉米兔 ℃
阅读(457)
评论(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
ω 提拉米兔 ℃
阅读(272)
评论(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
ω 提拉米兔 ℃
阅读(324)
评论(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
ω 提拉米兔 ℃
阅读(391)
评论(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
ω 提拉米兔 ℃
阅读(361)
评论(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
ω 提拉米兔 ℃
阅读(988)
评论(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
ω 提拉米兔 ℃
阅读(784)
评论(0)
推荐(0)