博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces 1080C- Masha and two friends
阅读量:6265 次
发布时间:2019-06-22

本文共 979 字,大约阅读时间需要 3 分钟。

在这里插入图片描述

AC代码

#include 
#define ll long longconst 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<
<<" "<
<

转载于:https://www.cnblogs.com/Friends-A/p/10324323.html

你可能感兴趣的文章
putty提供的两个文件传输工具PSCP、PSFTP详细介绍
查看>>
好的程序员有3种美德,
查看>>
BAT面试需要什么样的程序员?
查看>>
认识Java Core和Heap Dump
查看>>
NYOJ61 传纸条(一) 双线程dp
查看>>
数组拍平最优解
查看>>
leetcode 303. Range Sum Query - Immutable
查看>>
java中的生产者模式
查看>>
Rabin Karp 算法实战
查看>>
IIS7启用静态压缩
查看>>
Scala进阶之路-进程控制之执行shell脚本
查看>>
MySQL高可用架构之Mycat-关于Mycat安装和参数设置详解
查看>>
MapReduce编程模型及其在Hadoop上的实现
查看>>
SEH(__try,__except)
查看>>
Pinterest架构:两年内月PV从零到百亿
查看>>
选择排序
查看>>
关于redis有序集合http://www.runoob.com/redis/redis-sorted-sets.html
查看>>
LESS速查
查看>>
20.pipe
查看>>
.NET Entity Framework入门操作
查看>>