题目大意就是说要保证放射性核燃料安全,那么它的左边如果放了核燃料,右边就不能放,同样上边放了那下边就不能放,然后在所给的矩阵中合理摆放核燃料使得能用最小组去储存这些核燃料。
这道题其实就是找规律,当矩阵放大后,会发现以矩阵可以以一个规律去划分,比如5*5的时候如下图摆放就是最多的。
* | * | * | * | |
* | * | * | * | |
* | ||||
* | * | * | * | |
* | * | * | * |
* | * | * | * | ||
* | * | * | * | ||
* | * | ||||
* | * | ||||
* | * | * | * | ||
* | * | * | * |
然而这样想确实是没错,但却有一个特例,也就是在比赛中卡了2小时死活没有找到的特例,就是3*3的时候,下表摆放反而比上表多,orz,那就来个特判就好了吧
* | * | |
* | * | |
* |
* | * | |
* | * | |
* | * |
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner in = new Scanner(System.in);
int t = in.nextInt();
while(t-->0){
int lie = in.nextInt();
int hang = in.nextInt();
int total = in.nextInt();
int n = lie%3;
int have = (lie/3)*2+n;
int kong = lie-have;
int k = hang%3;
int temp;
if(lie==3&&hang==3)
{
if(total%6==0)
System.out.println(total/6);
else
System.out.println(total/6+1);
}
else{
if(k==0) temp = (hang/3)*(2*have+kong);
else if(k==1) temp = (hang/3)*(2*have+kong)+have;
else temp = (hang/3)*(2*have+kong)+2*have;
if(total%temp==0)
System.out.println(total/temp);
else
System.out.println(total/temp+1);
}
}
}
}