首先计算块内贡献,很显然是$(x_2-x_1)*(y_2-y_1)*2$.

然后考虑矩形之间的贡献,sort一遍分类讨论$n^2$暴力即可。

注意考虑边界情况是否能多两个,以及角对角的情况。

另外,排序之后可以通过剪枝排除无用情况(j从i+1开始枚举以及那个break)来实现$n^2$过十万的梦想

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=1e5+;
int read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
struct block
{
int x,y,xx,yy;
}s[N];
int cmp2 (block a,block b)
{
//if(a.x==b.x)return a.xx<b.xx;
return a.x<b.x;
}
int abss(int val)
{
return val>=?val:-val;
}
int n;
ll ans;
int main()
{
n=read();
for(int i=;i<=n;i++)
s[i].x=read(),s[i].y=read(),s[i].xx=read(),s[i].yy=read(),ans+=2LL*(s[i].xx-s[i].x)*(s[i].yy-s[i].y);
// cout<<ans<<endl;
sort(s+,s+n+,cmp2);
for(int i=;i<=n;i++)
{
for(int j=i+;j<=n;j++)
{
if(s[j].x>s[i].xx+)break;
if(((s[j].xx+==s[i].x)||(s[j].x-==s[i].xx))&&((s[j].y-==s[i].yy)||(s[j].yy+==s[i].y)))ans++;
else if(s[j].xx+==s[i].x||s[j].x-==s[i].xx)
{
if(s[j].yy<=s[i].yy&&s[j].y>=s[i].y)
{
ans+=2LL*(s[j].yy-s[j].y);
if(s[i].yy>s[j].yy)ans++;
if(s[i].y<s[j].y)ans++;
}
else if(s[j].yy>s[i].yy&&s[j].y<s[i].y)
{
ans+=2LL*(s[i].yy-s[i].y)+;
}
else if(s[j].y>=s[i].y&&s[j].y<=s[i].yy)
{
ans+=2LL*(s[i].yy-s[j].y);
if(s[j].yy>s[i].yy)ans++;
if(s[j].y>s[i].y)ans++;
}
else if(s[j].yy>=s[i].y&&s[j].yy<=s[i].yy)
{
ans+=2LL*(s[j].yy-s[i].y);
if(s[j].yy<s[i].yy)ans++;
if(s[j].y<s[i].y)ans++;
}
}
else if(s[j].y==s[i].yy+||s[j].yy+==s[i].y)
{
if(s[i].x<=s[j].x&&s[i].xx>=s[j].xx)
{
ans+=2LL*(s[j].xx-s[j].x);
if(s[j].x>s[i].x)ans++;
if(s[j].xx<s[i].xx)ans++;
}
else if(s[i].x>s[j].x&&s[i].xx<s[j].xx)
{
ans+=2LL*(s[i].xx-s[i].x)+;
}
else if(s[j].x>=s[i].x&&s[j].x<=s[i].xx)
{
ans+=2LL*(s[i].xx-s[j].x);
if(s[j].x>s[i].x)ans++;
if(s[j].xx>s[i].xx)ans++;
}
else if(s[j].xx>=s[i].x&&s[j].xx<=s[i].xx)
{
ans+=2LL*(s[j].xx-s[i].x);
if(s[j].x<s[i].x)ans++;
if(s[j].xx>s[i].xx)ans++;
}
}
}
}
cout<<ans<<endl;
return ;
}

[NOIP模拟测试10]辣鸡(ljh) 题解的更多相关文章

  1. 7.29 NOIP模拟测试10 辣鸡(ljh)+模板(ac)+大佬(kat)

    T1 辣鸡(ljh) 就是一道分类讨论的暴搜,外加一丢丢的减枝,然而我挂了,为啥呢,分类讨论变量名打错,大于小于号打反,能对才怪,写了sort为了调试就注释了,后来忘了解开,小减枝也没打.但是这道题做 ...

  2. 2019.7.29 NOIP模拟测试10 反思总结【T2补全】

    这次意外考得不错…但是并没有太多厉害的地方,因为我只是打满了暴力[还没去推T3] 第一题折腾了一个小时,看了看时间先去写第二题了.第二题尝试了半天还是只写了三十分的暴力,然后看到第三题是期望,本能排斥 ...

  3. NOIP模拟测试10「大佬·辣鸡·模板」

    大佬 显然假期望 我奇思妙想出了一个式子$f[i]=f[i-1]+\sum\limits_{j=1}^{j<=m} C_{k \times j}^{k}\times w[j]$ 然后一想不对得容 ...

  4. noip模拟测试10

    T1 这道题在考场上想到了二维前缀和,就是自己算前缀和的方式有点麻烦,导致花的时间较长,但还是成功搞了出来. 因为暴力计算的话需要不停枚举左上角和右下角的 i ,j, 时间复杂度为 n^4 ,我当时就 ...

  5. 2019.8.3 [HZOI]NOIP模拟测试12 C. 分组

    2019.8.3 [HZOI]NOIP模拟测试12 C. 分组 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 刚看这题觉得很难,于是数据点分治 k只有1和2两种,分别 ...

  6. [CSP-S模拟测试]:辣鸡(ljh) (暴力)

    题目描述 辣鸡$ljh\ NOI$之后就退役了,然后就滚去学文化课了.然而在上化学课的时候,数学和化学都不好的$ljh$却被一道简单题难住了,受到了大佬的嘲笑.题目描述是这样的:在一个二维平面上有一层 ...

  7. 「题解」NOIP模拟测试题解乱写II(36)

    毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...

  8. [考试反思]0729NOIP模拟测试10

    安度因:哇哦. 安度因:谢谢你. 第三个rank1不知为什么就来了.迷之二连?也不知道哪里来的rp 连续两次考试数学都占了比较大的比重,所以我非常幸运的得以发挥我的优势(也许是优势吧,反正数学里基本没 ...

  9. 2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色

    2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 数据结构学傻的做法: 对每种颜色开动态开点线段树直接维 ...

随机推荐

  1. BZOJ 4555(第二类斯特林数+NTT)

    传送门 解题思路 数学题,推式子.求\(f(n)=\sum\limits_{i=0}^n\sum\limits_{j=0}^iS(i,j)2^jj!\) 首先可以把\(j\)往前提: \[f(n)=\ ...

  2. Extjs6 项目构建

    一 学习前的了解: 1.Extjs6其实是结合了两个框架:Extjs 和Sencha Touch; 2.Extjs6有两个工具包: classic (存放原来Extjs的可视化组件)和 modern ...

  3. location优先级

    location优先级 location优先级 location /img # 直接匹配 location /img { index index.html } location = /img # 精确 ...

  4. [NOIP模拟测试31]题解

    A.math 考场乱搞拿了95,2333. 考虑裴蜀定理:$ax+by=z$存在整数解,当且仅当$gcd(a,b)|z$. 那么如果某个数能够被拼出来,就必须满足所有$a_i$的$gcd$是它的因子. ...

  5. switch 使用使用小技巧

    for (int i=0;i<100;i++) { switch (i) { case 1 ... 10: NSLog(@"case 1 ... 10: = %d",i); ...

  6. js打印窗口内容并当窗口内容较长时自动分页

    项目环境Angular: 方法1.window.print() HTML页面上的代码: <div id="tenementBillTable" class="dia ...

  7. c/c++ int 范围的原因

    在C语言中, signed char 类型的范围为-128~127,每本教科书上也这么写,但是没有哪一本书上(包括老师)也不会给你为什么是-128~127,这个问题貌似看起来也很简单容易, 以至于不用 ...

  8. 【lua学习笔记】——环境配置

    1 开发平台 windows7 64位 2 下载链接 http://www.lua.org/download.html 3 安装完成-环境配置 4  运行 WIN+R 运行 cmd 运行lua,显示配 ...

  9. HDU1251-统计难题-map+输入

    Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀). Input输入数据的第一部分 ...

  10. Spring Boot控制上传文件大小

    spring: http: multipart: max-file-size: 5MB max-request-size: 20MB