Radioactive

来源:互联网 发布:字幕视频合并软件 编辑:程序博客网 时间:2024/06/05 21:29

题目大意就是说要保证放射性核燃料安全,那么它的左边如果放了核燃料,右边就不能放,同样上边放了那下边就不能放,然后在所给的矩阵中合理摆放核燃料使得能用最小组去储存这些核燃料。

这道题其实就是找规律,当矩阵放大后,会发现以矩阵可以以一个规律去划分,比如5*5的时候如下图摆放就是最多的。*
*
****
**

*

**
****
**6*6时**

****

**

**



**

**

****

**继续列数据找例子会发现最完美的摆法就是以3*3为划分嵌入2*2+1,然后在找数据时会很容易发现当行(列)比列(行)多一个或两个的情况的规律,细划分就是有六种情况,各情况之间相差的都可以在角落找到规律。

然而这样想确实是没错,但却有一个特例,也就是在比赛中卡了2小时死活没有找到的特例,就是3*3的时候,下表摆放反而比上表多,orz,那就来个特判就好了吧**
**


*

**
*
*
**附上java代码(没试过能不能AC,这锅不背)

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);elseSystem.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);elseSystem.out.println(total/temp+1);}}}}



0 0
原创粉丝点击