02 2013 档案

摘要:题意 有n个学生一字排开,m个操作: Q a b 查询[a,b]中分值最高的分,并输出 U a b 把第a个学生的成绩改为b分析 单点修改的裸线段树Accepted Code 1 /* 2 PROBLEM:hdu1754 3 AUTHER:Rinyo 4 MEMO:线段树 5 */ 6 7 8 #include<cstdio> 9 #include<algorithm>10 using namespace std;11 const int maxn=200005;12 struct node13 {14 int left,right,sum;15 1... 阅读全文
posted @ 2013-02-24 19:38 Rinyo 阅读(217) 评论(0) 推荐(0) 编辑
摘要:题意 n个阵营一字排开,每个初始有a[i]个人。现有两种操作: Q a b 查询[a,b]之间总人数并输出 A/S a b 在a号位添加/删除b个人分析 单点更新,区域查询的线段树模板Accepted Codepascal版,zsc写的 1 Program hdu1166; 2 Const 3 Infile='hdu1166.in'; 4 Outfile='hdu1166.out'; 5 Type 6 jl=Record 7 l,r,w:Longint; 8 End; 9 Var10 tree:Array[0..200000] Of jl;11 a:Ar... 阅读全文
posted @ 2013-02-24 18:25 Rinyo 阅读(1004) 评论(0) 推荐(0) 编辑
摘要:题意 给出n种关系,有以下三种情况: a>b :a赢了b a<b :b赢了a a=b :a与b平手 现在有三组人,出的手势是一定的,但是其中有一名judge,他可以出任意手势。问通过哪一行就可以推断出谁是judge。若没有则输出impossible。若有多个,则输出can not determine分析 1.如何确定Judge 因为Judge可以任意出手势,所以凡是有关judge所建立起的关系都是不可靠的。 因此,我们可以枚举judge,凡是跟judge有关的关系都不考虑。如果此时建立起的关系有矛盾,则说明现在枚举到得人不是judge。 若有矛盾,则记录下在哪句话... 阅读全文
posted @ 2013-02-24 15:20 Rinyo 阅读(396) 评论(2) 推荐(0) 编辑
摘要:题意 有三类动物A,B,C,题中给出两种关系: 1 x y :x y 同类 2 x y :x吃y 对于假话的定义: 1.当前的话与前面的某些真的话冲突,就是假话; 2.当前的话中X或Y比N大,就是假话; 3.当前的话表示X吃X,就是假话。 现在给出n句这样的关系,求假话个数。分析 这是第二次写这道题了,第一次是去年刚学并查集的时候。当初囫囵吞枣A了,现在拿出来发现自己根本就没明白。 感觉,经典的题还是要时常拿出来做一做。 刚才某人吐槽:这题比就我小4岁。呵呵.... 废话少说,说正题。 看题解写的,这个人的分析很详细哦~!膜拜!http://blo... 阅读全文
posted @ 2013-02-23 21:54 Rinyo 阅读(2225) 评论(0) 推荐(0) 编辑
摘要:题意 一开始若干个元素自己为一个栈,给出n个操作,有如下两种: 1.M a b :表示把元素a所在的栈整个压在含有元素b的栈的顶端 2.C x :查询元素x所在的栈,x下方有几个元素,输出分析 题意简单明了:并查集 除了数组f[i]用来记录i的祖先,也就是顶端元素 另需要数组rank[i],记录i所在的栈一共有多少个元素(i为栈顶) 数组up[i],记录i上面有多少个元素 则答案为rank[find(x)]-up[x]-1 至于在find和union中如何维护rank和up: 在find中只需维护up,即up[x]+=up[father[x]]; ... 阅读全文
posted @ 2013-02-23 19:04 Rinyo 阅读(396) 评论(2) 推荐(1) 编辑
摘要:题意 求斐波那契数列前n项和分析 1.因为数据较小,直接算出来相加可过 2.有结论:s[n]=f[n+2]-1 利用数学归纳法,证明如下: 1)当n=1时,s[1]=f[1]=1,f[1+2]-1=1,所以s[1]=f[3]-1; 2)假设n=k(k>=1)时,命题成立 则有s[k]=f[1]+f[2]+……+f[k]=f[k+2]-1=f[k]+f[k+1]-1 则当n=k+1时,s[k+1]=(f[1]+f[2]+……+f[k])+f[k+1] =f[k]+f[k+1]+f[k+1]-1 ... 阅读全文
posted @ 2013-02-21 17:47 Rinyo 阅读(276) 评论(0) 推荐(0) 编辑
摘要:题意 给出n,表示这是一个正n边形,并给出顺时针标号的n1,n2个点的坐标。输出所有点的坐标。分析 计算几何。 主体思路: 利用n1,n2计算出这个正n边行的半径,进而求得中心坐标; 再利用向量旋转,从中心坐标开始,依次获得各个点坐标。 有关向量旋转参见百度文库http://wenku.baidu.com/view/3f95940cbb68a98271fefa75.html 主要用到的就是x1=x*cosθ-y*sinθ y1=x*sinθ+y*cosθ 具体在程序中的变量以下图为例:Accepted Code 1 { 2 PROBLEM:sg... 阅读全文
posted @ 2013-02-21 17:03 Rinyo 阅读(276) 评论(0) 推荐(0) 编辑