摘要: 题意 给出n个四位数组成的电话号,要求安排在一个电话本里,从第三页开始安排。使得每一页都是一个数字开头的电话号,且每一页不超过k个;如超过了,则新开一页记录分析 无聊的题。开个数组记录每个数字开头的号码有多少个,然后利用div k记录答案,如果不是整除,则再加一页 注:答案+2Accepted Code 1 /* 2 PROBLEM:sgu127 3 AUTHER:Rinyo 4 MEMO:模拟 5 */ 6 #include<cstdio> 7 int a[10]; 8 int main() 9 {10 int k,n,x;11 scanf("%... 阅读全文
posted @ 2013-03-20 21:43 Rinyo 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 题意 有两个盒子,一个里面有a个球,另一个有b个球。现在请你把其中一个盒子的球转移到另一个去,转移的数目是另一个盒子里球的个数。 现在问你几次能把所有球转移到一个盒子里。分析 2k=(a+b)/gcd(a,b),k即为答案 具体怎么证得?我再研究研究0.0Accepted Code 1 /* 2 PROBLEM:sgu 126 3 AUTHER:Rinyo 4 MEMO:数学题 5 */ 6 #include<cstdio> 7 int gcd(int a,int b){return b==0?a:gcd(b,a%b);} 8 int main() 9 {10 ... 阅读全文
posted @ 2013-03-20 21:15 Rinyo 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 题意 给出一个n*n的数组b,b[i,j]表示在数组a中,比a[i,j]大的上下左右一共有多少个 求一个满足b的a分析 数据范围n<=4,很明显,深搜 对于每一个格子,从1~n*n枚举,在检查上一个合法之后,进行下一步的搜索Accepted Code 1 { 2 PROBLEM:sgu125 3 AUTHER:Rinyo 4 MEMO:深搜 5 } 6 Program sgu125; 7 Const 8 Infile = 'sgu125.in'; 9 Outfile = 'sgu125.out';10 dx:Array[1.... 阅读全文
posted @ 2013-03-20 20:59 Rinyo 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 题意 给出由n条线段围成的多边形(每条边均平行于坐标轴),以及一个点(x0,y0),问这个点是在形内或是形外或是形上分析 对于在线段上,比较容易判断,直接比较一下坐标的位置即可; 若不在形上,则在该点处向上引一条射线。因为是向上引的,所以只和与x轴平行的线有交点,记录交点个数。 注意在记录交点个数时,如果在一条线段的短点,只记一侧的,别记重了。 这样,统计相交次数。如果为奇数,则在形内;偶数,形外。 注意读入数据后比较一下大小并交换。Accepted Code 1 /* 2 PROBLEM:sgu 124 3 AUTHER:Rinyo 4 MEMO:计算几... 阅读全文
posted @ 2013-03-19 22:43 Rinyo 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 题意 有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 阅读(216) 评论(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 阅读(394) 评论(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 阅读(2222) 评论(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 阅读(395) 评论(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 阅读(274) 评论(0) 推荐(0) 编辑