Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

感谢大神的1000组测试数据 我用Java写的代码 贴上来

Posted by AllMyBloods at 2012-10-28 14:28:02 on Problem 1017
import java.util.*;
/**
 * 赵亮亮做完此题感觉很爽 因为证明我还是有耐心的好孩纸
 * @author Administrator
 *
 */
public class Packets {
	public static int box = 0;
	public static List<Integer> list = new ArrayList<Integer>();

	public static void main(String[] args) {
		int[] array = new int[6];
		Scanner cin = new Scanner(System.in);
		while (cin.hasNext()) {
			for (int i = 0; i < 6; i++) {
				array[i] = cin.nextInt();
			}
			if (ifExit(array))
				break;
			int temres = baseBox(array);

			list.add(temres);
		}

		Iterator it = list.iterator();
		while (it.hasNext()) {
			System.out.println(it.next());
		}

	}

	/**
	 * 当array元素遍历过一遍时返回包装数目
	 * 
	 * @param array
	 * @return
	 */
	public static int baseBox(int[] array) {
		int num = 0;
		// num+=array[3]+array[4]+array[5]+Math.ceil((array[2]*1.00)/4);
		// 处理6*6的物品 每个盒子只能装一个物品
		num += array[5];
		// 处理5*5的物品 每个盒子只能装一个物品
		if (array[4] != 0) {
			num += array[4];
			array[0] -= 11 * array[4];
			if (array[0] < 0) {
				array[0] = 0;
			}
		}
		// 处理4*4的物品 每个盒子只能装一个物品 然后先考虑2*2 其次1*1
		if (array[3] != 0) {
			num += array[3];
			int temp = array[1] - array[3] * 5;

			if (temp > 0) {
				array[1] = temp;
			} else {
				int tempSqu = array[3] * 20 - array[1] * 4;
				array[1] = 0;
				if (tempSqu > 0) {
					array[0] -= tempSqu;
				}
				if (array[0] < 0) {
					array[0] = 0;
				}
			}
		}
		// 处理3*3的物品 每个盒子只能装一个物品 然后先考虑2*2 其次1*1
		if (array[2] != 0) {
			int temp = (int) Math.ceil((array[2] * 1.00) / 4);
			num += temp;
			int temp2 = 4 - array[2] % 4;

			if (temp2 != 4) {
				int tempSquare = temp2 * 9; // temSquare 放了3*3后剩余的面积
				int temp3 = 0; // temp3是实际放了几个3*3
				if (array[1] != 0) {
					temp3 = array[1]; // temp3 是实际放了几个3*3 这一步是初始化temp3
					array[1] -= (tempSquare / 4 - 1);
					if (array[1] < 0) {// 这样代表把2*2全部用完了
						array[1] = 0;
					} else { // 这样代表2*2还有剩余
						temp3 = (tempSquare / 4 - 1);
					}
					array[0] -= (tempSquare - temp3 * 4);
					if (array[0] < 0) {
						array[0] = 0;
					}
				} else {
					array[0] -= tempSquare;

					if (array[0] < 0) {
						array[0] = 0;
					}
				}
			} else {
				array[2] = 0;
			}
		}
		// 处理2*2的物品 每个盒子只能装一个物品
		if (array[1] != 0) {
			int temp = (int) Math.ceil((array[1] * 1.00) / 9);
			num += temp;
			int temp2 = 9 - array[1] % 9;
			if (temp2 != 9) {
				array[0] -= temp2 * 4;
				if (array[0] < 0) {
					array[0] = 0;
				}
				array[1] = 0;
			} else {
				array[1] = 0;
			}
		}
		// 处理1*1的物品 每个盒子只能装一个物品
		if (array[0] != 0) {
			int temp = (int) Math.ceil((array[0] * 1.00) / 36);
			num += temp;
		}

		return num;
	}

	public static boolean ifExit(int[] array) {
		boolean res = true;
		for (int i = 0; i < 6; i++) {
			if (array[i] != 0)
				res = false;
		}
		return res;
	}
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator