2013年2月21日

过河问题(POJ 1700)

摘要: http://www.cppblog.com/abilitytao/archive/2009/03/28/78197.html有点不明白,为什么一定要两个两个的,存在一个最快的带动,不是也可以的么,再深度理解。。。解题思路:当人数等于1,2,3的时候:答案很容易得出;当人数大于等于4时:若设过桥速度最快的那个人过桥时间为a,第二快为b;过桥第二慢的那个人过桥时间为y,最慢为z;此时有两种过桥方案:一.最快和次快的人先过,然后最快的回来,然后最慢与次慢的人再过,次快的回来;二.最快的和最慢的过,快的回来,在和次慢的过,快的再回来;第一种方法时间为b*2+a+z (+ b)第二种方法时间为y+z+ 阅读全文

posted @ 2013-02-21 22:45 Sure_Yi 阅读(219) 评论(0) 推荐(0) 编辑

皇后相斥问题(UVA 11538)

摘要: http://blog.sina.com.cn/s/blog_77dc9e080101hwtz.html解题思路:1. 计数问题, 有三种相对摆放方式: 水平, 竖直, 对角线. 根据加法原理即可, 并且没有交集.水平和竖直是一样的, 只要n*m矩形旋转90度. 所以结果是: n*m*(m-1)+n*m*(n-1);2. 对角线复杂些, 先来确定对角线的长度: 1,2,3,...,n-2,n-1,n,n,n,...,n,n,n-1,n-2,...,2,1;其中n的个数是m-n+1 (其中假设m>n);结果: 2*(2*∑i*(i-1) + (m-n+1)*n*(n-1))其中累加的范围是 阅读全文

posted @ 2013-02-21 21:53 Sure_Yi 阅读(179) 评论(0) 推荐(0) 编辑

类似冒泡排序法(ZOJ 1730)

摘要: http://blog.csdn.net/yzl_rex/article/details/7391777如果所有人是线性排列,那我们的工作就是类似冒泡程序做的工作:1,2,3,4,5变为5,4,3,2,1,耗时n(n-1)/2但是出现了环,也就是说1,2,3,4,5变为3,2,1,5,4也可满足条件我们可以把这个环等分成两个部分(四部分不行了,圆的头与尾接不上了) ,每个部分看成是线性的,再把它们花的时间加起来.当n是偶数时,每份人数n/2,即2*(n/2)*(n/2-1)/2;当n是奇数时,两份的人数分别是n/2和n/2+1,即(n/2)*(n/2-1)/2+(n/2+1)*(n/2)/2i 阅读全文

posted @ 2013-02-21 20:39 Sure_Yi 阅读(228) 评论(0) 推荐(0) 编辑

类似于素数筛选法做,预处理一下就不会超时(POJ 3292)

摘要: import java.io.*;import java.util.*;import java.math.*;public classMain { static final int MAXN = 1000005; int sup, p[], n, count[]; boolean flag[]; void getH() { p = new int[MAXN]; flag = new boolean[MAXN]; for (int i = 5; i < MAXN; i += 4) { if (flag[i] == false) { p[sup++] = i; for (... 阅读全文

posted @ 2013-02-21 19:42 Sure_Yi 阅读(214) 评论(0) 推荐(0) 编辑

导航