题意:在n*m的巧克力上面有两个独立的点,它门同时在巧克力上移动(两个点相对静止),被扫到巧克力块会被溶解,问你最少能留下多少块巧克力!

解题思路:将这两个点看成一个小矩形的对角线,而最多能扫到的巧克力数量为   这个小矩形能放在大矩形的位置数*2 - 两个点重复扫到的点。

解题代码:

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <stdlib.h>
 4 #include <math.h>
 5 int main()
 6 {
 7    __int64 t; 
 8    scanf("%I64d",&t);
 9    while(t--)
10    {
11      __int64 n, m,x1,x2,y1,y2;
12      scanf("%I64d %I64d %I64d %I64d %I64d %I64d",&n,&m,&x1,&y1,&x2,&y2);
13      __int64 x = abs(x1-x2)+1;
14      __int64 y = abs(y1-y2)+1;
15      __int64 max = 1LL*(n-x+1)*(m-y+1);
16      __int64 ans = 0 ; 
17      ans += max*2;
18      if((n-x+1) >= x && (m-y +1) >=y)
19           ans -= ((n-x+1)-x+1) *((m-y+1) - y +1);
20      printf("%I64d\n",n*m - ans);
21    }
22    return 0;
23 }
View Code

 

posted on 2013-11-03 19:09  dark_dream  阅读(489)  评论(0编辑  收藏  举报