摘要: 给出算式{1/a = (1/b + 1/c) / (1 - 1/(b*c)}中的a,求算式中b和c使b+c最小.a,b,c均大于0。经过一系列的数学推导,可以得到b的范围是{0 < b <= a + sqrt(a^2 + 1)}又从某OIer的博客中看到令f(b)= b + c即f(b)=b + (ab + 1) / (b - a)求导得到f(b)' = 1 - (a^2 + 1) / (b - a)^2,在区间(a, a + sqrt(a^2 + 1))上恒小于0,所以f(b)单调递减。View Code 1 program pku1183(input,output); 阅读全文
posted @ 2012-03-21 16:32 Codinginging 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 有三维坐标中的16个点,然后又有若干点,求每一个点和前16个点中哪个更近。View Code 1 program pku1046(input,output); 2 type 3 node = record 4 x,y,z : longint; 5 end; 6 const 7 oo = 10000000; 8 var 9 color : array[1..16] of node;10 now : node;11 answer : byte;12 procedure init;13 var14 i : long... 阅读全文
posted @ 2012-03-21 16:16 Codinginging 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 有一个字符串,每次只能从两端取,求取得的字典序最小的子符序列。每次比较剩余字符串的正向和反向字符串的大小,正向大就在尾取,否则在头取,相当于贪心了吧。View Code 1 program pku3617(input,output); 2 var 3 s1,s2 : ansistring; 4 answer : ansistring; 5 n : longint; 6 procedure init; 7 var 8 i : longint; 9 ch : char;10 begin11 readln(n);12 s1:='';13 ... 阅读全文
posted @ 2012-03-21 12:20 Codinginging 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 给一个n个顶点的图(怎么最近的随笔都拿这句话开头^_^),Q条询问,(x,y),查询从x到y的路径上的最大边的最小值。(Q<=40000)最大最小问题99%都是二分答案,这道题却偏偏是那1%.用floyd,最后的关键语句变成f[i,j]=min(f[i,j],max(f[i,k],f[k,j]))即可。算法执行后f[i,j]就是问题(i,j)的答案。View Code 1 program pku3615(input,output); 2 var 3 f : array[0..400,0..400] of longint; 4 n,m : longint; 5 q :... 阅读全文
posted @ 2012-03-21 12:04 Codinginging 阅读(355) 评论(0) 推荐(0) 编辑