C. Masha and two friends

题目链接https://codeforc.es/contest/1080/problem/C

题意:

给出一个黑白相间的n*m的矩阵,现在先对一个子矩阵颜色变为白色,然后再对一个子矩阵颜色变为黑色,问最终白色格子和黑色格子有多少?

题解:

定义w(a,b)为(1,1)到(a,b)中白色的数量,通过观察找规律可以发现w(a,b)=((b+1)/2)*((a+1)/2)+(b/2)*(a/2)。

然后b(a,b)就是格子总数量减去w(a,b)。

现在对于一个子矩阵里面黑色和白色格子数量就比较容易求了。

再来分析两次变化颜色,主要时两个子矩阵交叉时,由于这里给出坐标的大小关系,所以(max(x1,x3),max(y1,y3))与(min(x2,x4),min(y2,y4))即为交叉矩阵的两个端点。

存在交叉矩阵时,黑色的数量会加上交叉矩阵中黑色的格子的数量,白色的数量会减去交叉矩阵中黑色格子的数量(结合前两次变化思考),最后直接求解即可。

代码如下:

#include <bits/stdc++.h>
using namespace std; typedef long long ll ;
int t; ll w(ll a,ll b){
return ((b+)/)*((a+)/)+(b/)*(a/);
}
ll sub_w(ll x1,ll y1,ll x2,ll y2){
return w(x2,y2)-w(x1-,y2)-w(x2,y1-)+w(x1-,y1-);
}
ll sub_b(ll x1,ll y1,ll x2,ll y2){
return (x2-x1+)*(y2-y1+)-sub_w(x1,y1,x2,y2);
}
int main(){
scanf("%d",&t);
while(t--){
ll n,m,x1,x2,x3,x4,y1,y2,y3,y4;
cin>>n>>m>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4;
ll sub_x1 = max(x1,x3),sub_y1=max(y1,y3),sub_x2=min(x2,x4),sub_y2=min(y2,y4);
ll num_w = w(n,m),num_b = n*m - num_w;
num_w+=sub_b(x1,y1,x2,y2);num_b-=sub_b(x1,y1,x2,y2);
num_b+=sub_w(x3,y3,x4,y4);num_w-=sub_w(x3,y3,x4,y4);
if(sub_x1<=sub_x2 && sub_y1<=sub_y2){
num_b+=sub_b(sub_x1,sub_y1,sub_x2,sub_y2);
num_w-=sub_b(sub_x1,sub_y1,sub_x2,sub_y2);
}
cout<<num_w<<" "<<num_b<<endl;
}
return ;
}

Codeforces Round #524 (Div. 2) C. Masha and two friends的更多相关文章

  1. Codeforces Round #524 (Div. 2) C. Masha and two friends(矩形相交)

    C. Masha and two friends time limit per test 1 second memory limit per test 256 megabytes input stan ...

  2. Codeforces Round #524 (Div. 2) C. Masha and two friends(思维+计算几何?)

    传送门 https://www.cnblogs.com/violet-acmer/p/10146350.html 题意: 有一块 n*m 的棋盘,初始,黑白块相间排列,且左下角为白块. 给出两个区间[ ...

  3. Codeforces Round #524 (Div. 2) C. Masha and two friends 几何:判断矩形是否相交以及相交矩形坐标

    题意 :给出一个初始的黑白相间的棋盘  有两个人  第一个人先用白色染一块矩形区域 第二个人再用黑色染一块矩形区域 问最后黑白格子各有多少个 思路:这题的关键在于求相交的矩形区间 给出一个矩形的左下和 ...

  4. Codeforces Round #524 (Div. 2) C. Masha and two friends 思路

    题目:题目链接 思路:直接计数显然是不好处理的,但分情况讨论只要不写错这题是一定可以出的,但这样基本做完这个题就没时间做其他题了,但当时我就这么蠢的这样做了,比赛一个半小时的时候突然发现一个似乎可行的 ...

  5. Codeforces Round #524 (Div. 2)(前三题题解)

    这场比赛手速场+数学场,像我这样读题都读不大懂的蒟蒻表示呵呵呵. 第四题搞了半天,大概想出来了,但来不及(中途家里网炸了)查错,于是我交了两次丢了100分.幸亏这次没有掉rating. 比赛传送门:h ...

  6. Codeforces Round #524 (Div. 2) Masha and two friends矩形

    题目 题意:    给一个n*m块大的黑白相间的矩形,在这个举行中操作,要先把第一个矩形(左下角坐标(x1,y2),右上角坐标(x2,y2)) 全部涂成白色,再把第二个矩形(左下角坐标(x3,y3), ...

  7. Codeforces Round #524 (Div. 2) F. Katya and Segments Sets(主席树)

    https://codeforces.com/contest/1080/problem/F 题意 有k个区间,区间的种类有n种,有m个询问(n,m<=1e5,k<=3e5),每次询问a,b ...

  8. Codeforces Round #524 (Div. 2) E. Sonya and Matrix Beauty(字符串哈希,马拉车)

    https://codeforces.com/contest/1080/problem/E 题意 有一个n*m(<=250)的字符矩阵,对于每个子矩阵的每一行可以任意交换字符的顺序,使得每一行每 ...

  9. Codeforces Round #524 (Div. 2) Solution

    A. Petya and Origami Water. #include <bits/stdc++.h> using namespace std; #define ll long long ...

随机推荐

  1. python三大神器之生成器

    生成器Generator: 本质:迭代器(所以自带了__iter__方法和__next__方法,不需要我们去实现) 特点:惰性运算,开发者自定义 在python中有三种方法来获取生成器: 1.通过生成 ...

  2. 652. Find Duplicate Subtrees

    /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...

  3. 单片机C51 8位流水灯

    #include<reg51.h> sbit P1_0=0X90; sbit P1_1=0x91; sbit P1_2=0x92; sbit P1_3=0x93; sbit P1_4=0x ...

  4. shell重温---基础篇(printf命令&test命令)

    在shell中还有一个输出的命令,那就是printf了.它模仿的是C程序库(library)里的printf()程序,是由POSIX标准所定义,所以嘞,使用printf脚本比echo移植性要好一点,它 ...

  5. java 上溯造型与下塑造型

    父类: package com.neusoft.chapter07; public class Father { public int i = 1; public void say(){ System ...

  6. python pip ,安装,卸载,查看等命令,不同版本

    pycharm及python的使用说明   Python和 pycharm的使用 1. pycharm和Python 下载 安装后需要激活码.判断Python是否安装好了,cmd下跑: python ...

  7. PHP.46-TP框架商城应用实例-后台21-权限管理-权限和角色的关系

    权限和角色的关系 权限功能 角色功能 权限与角色的关联要通过权限-角色表进行{多对多} /********* 角色-权限表 *********/ drop if exists p39_role_pri ...

  8. 【jQuery】 Ajax

    [jQuery] Ajax $.ajax({ type: "Post", // 发包方式 cache: false, // 是否缓存 contentType: "appl ...

  9. What to do when Enterprise Manager is not able to connect to the database instance (ORA-28001)

    摘自:http://dbtricks.com/?p=34 If you are trying to connect to the Oracle enterprise Manger and you ge ...

  10. jmeter处理响应结果中文乱码

    1. 在线程下面添加后置处理器BeanShell PostProcessor,增加script:prev.setDataEncoding("UTF-8"); 2. 在jmeter. ...