[NOIP模拟测试10]辣鸡(ljh) 题解
首先计算块内贡献,很显然是$(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) 题解的更多相关文章
- 7.29 NOIP模拟测试10 辣鸡(ljh)+模板(ac)+大佬(kat)
T1 辣鸡(ljh) 就是一道分类讨论的暴搜,外加一丢丢的减枝,然而我挂了,为啥呢,分类讨论变量名打错,大于小于号打反,能对才怪,写了sort为了调试就注释了,后来忘了解开,小减枝也没打.但是这道题做 ...
- 2019.7.29 NOIP模拟测试10 反思总结【T2补全】
这次意外考得不错…但是并没有太多厉害的地方,因为我只是打满了暴力[还没去推T3] 第一题折腾了一个小时,看了看时间先去写第二题了.第二题尝试了半天还是只写了三十分的暴力,然后看到第三题是期望,本能排斥 ...
- NOIP模拟测试10「大佬·辣鸡·模板」
大佬 显然假期望 我奇思妙想出了一个式子$f[i]=f[i-1]+\sum\limits_{j=1}^{j<=m} C_{k \times j}^{k}\times w[j]$ 然后一想不对得容 ...
- noip模拟测试10
T1 这道题在考场上想到了二维前缀和,就是自己算前缀和的方式有点麻烦,导致花的时间较长,但还是成功搞了出来. 因为暴力计算的话需要不停枚举左上角和右下角的 i ,j, 时间复杂度为 n^4 ,我当时就 ...
- 2019.8.3 [HZOI]NOIP模拟测试12 C. 分组
2019.8.3 [HZOI]NOIP模拟测试12 C. 分组 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 刚看这题觉得很难,于是数据点分治 k只有1和2两种,分别 ...
- [CSP-S模拟测试]:辣鸡(ljh) (暴力)
题目描述 辣鸡$ljh\ NOI$之后就退役了,然后就滚去学文化课了.然而在上化学课的时候,数学和化学都不好的$ljh$却被一道简单题难住了,受到了大佬的嘲笑.题目描述是这样的:在一个二维平面上有一层 ...
- 「题解」NOIP模拟测试题解乱写II(36)
毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...
- [考试反思]0729NOIP模拟测试10
安度因:哇哦. 安度因:谢谢你. 第三个rank1不知为什么就来了.迷之二连?也不知道哪里来的rp 连续两次考试数学都占了比较大的比重,所以我非常幸运的得以发挥我的优势(也许是优势吧,反正数学里基本没 ...
- 2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色
2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 数据结构学傻的做法: 对每种颜色开动态开点线段树直接维 ...
随机推荐
- Codeforces 789e The Great Mixing (bitset dp 数学)
Sasha and Kolya decided to get drunk with Coke, again. This time they have k types of Coke. i-th typ ...
- 78 Ranking SVM
0 引言 Ranking-SVM是SVM的一个变种,通过将排序问题转化为二分类问题,并利用标签数据训练特征权重收敛得到特征模型,完成排序任务,是比较经典的机器学习排序算法. 1 中文版介绍 https ...
- 安装graphviz
环境win10 1. 下载安装包首先进入官网下载msi文件 安装,一路next,不需要注意什么 2.设置环境变量 安装完毕之后,我们需要手动配置环境变量. 找到刚才我们安装地址,进入graphviz, ...
- 使用LoadRunner监控Apache
前提本文使用的是lampp环境下自带的Apache服务 一.查看文件 查看文件确保目录中有Apache,我在这里使用的是用xampp自带apache [root@besttest ~]# ll 二.配 ...
- ROW_NUMBER() over(order by ID desc ) as RowNumber 返回类型问题
因为ID是int类型,所以ROW_NUMBER() over(order by ID desc ) as RowNumber 想当然的认为是Int类型 实际ROW_NUMBER() over(orde ...
- textarea高度随文本内容变化,且不出现滚动条
通常文本域的写法如下 <textarea type="text" class="form-control pull-left" id="desc ...
- Redis Sentinel用法
1 Redis Sentinel 1.1 哨兵的作用 1. 监控:监控主从是否正常 2. 通知:出现问题时,可以通知相关人员 3. 故障迁移:自动主从切换 4. 统一的配置管理:连接者询问sentin ...
- Java异常处理教程
异常是在没有定义正常执行路径时在Java程序的执行期间可能出现的条件.Java通过将执行操作的代码与处理错误的代码分离来处理错误. 当发生异常时,Java会创建一个包含有关异常的所有信息的对象,并将其 ...
- Http,Socket,TCP/IP 协议简述
Http,Socket,TCP/IP 协议简述:https://blog.csdn.net/gordohu/article/details/54097841 TCP/IP协议,HTTP协议与webSo ...
- Codeforces 490D Chocolate
D. Chocolate time limit per test 1 second memory limit per test 256 megabytes input standard input o ...