zoukankan      html  css  js  c++  java
  • Codeforces 1080C- Masha and two friends

    在这里插入图片描述

    AC代码

    #include <bits/stdc++.h>
    #define ll long long
    const int maxn=1e6+10;
    using namespace std;
    inline ll paintw(ll x1,ll y1,ll x2,ll y2)
    {
    	ll n=x2-x1+1;
    	ll m=y2-y1+1;
    	// 左下角是黑色,向下取整
    	if((x1+y1)&1)
    		return n*m/2;
    	// 左下角是白色,向上取整
    	else
    		return (n*m+1)/2;
    }
    inline ll paintb(ll x1,ll y1,ll x2,ll y2)
    {
    	ll n=x2-x1+1;
    	ll m=y2-y1+1;
    	return n*m-paintw(x1,y1,x2,y2);
    }
    int main(int argc, char const *argv[])
    {
    	int t;
    	ll n,m;
    	cin>>t;
    	ll x1,x2,x3,x4;
    	ll y1,y2,y3,y4;
    	while(t--)
    	{
    		cin>>n>>m;
    		cin>>x1>>y1>>x2>>y2;
    		cin>>x3>>y3>>x4>>y4;
    		// 求出第一块区域的黑色数量和第二块区域的白色数量
    		ll b1=paintb(x1,y1,x2,y2);
    		ll w2=paintw(x3,y3,x4,y4);
    		ll answ;
    		// 左下角一定是白色,所以整个区域的白色数量向上取整
    		// 第一块的白色数量增加b1,第二块白色数量较少w2
    		answ=(n*m+1)/2+b1-w2;
    		ll minx=min(x2,x4);ll maxx=max(x1,x3);
    		ll miny=min(y2,y4);ll maxy=max(y1,y3);
    		// 如果两区域有相交的部分,把该部分变成黑色
    		if(minx>=maxx&&miny>=maxy)
    			answ-=paintb(maxx,maxy,minx,miny);
    		cout<<answ<<" "<<n*m-answ<<endl;
    	}
    	return 0;
    }
    
  • 相关阅读:
    API接口:分页
    PHP中判断变量为空的几种方法
    获取APP最新版本的接口案例
    浏览器兼容性
    APP的消息推送(极光推送)
    Json
    PHP 图片上传 (AIP图片上传接口)
    日历时间插件
    PHP读写文件
    ThinkPHP 事务处理 (事务回滚) 、异常处理
  • 原文地址:https://www.cnblogs.com/Friends-A/p/10324323.html
Copyright © 2011-2022 走看看