题意:在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*m - ans); 21 } 22 return 0; 23 }