[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 数据结构学傻的做法: 对每种颜色开动态开点线段树直接维 ...
随机推荐
- BZOJ 4619: [Wf2016]Swap Space(贪心)
传送门 解题思路 首先肯定是先处理\(b>a\)的,这样可以获得更多空间.处理时要先处理\(a\)比较小的,再处理\(a\)比较大的,因为要求最小值,而\(b>a\)的总量是确定的,那么就 ...
- element-ul 处理 组件内的弹出框close问题
<el-dialog custom-class="rental-pop" :close-on-click-modal="false" :append-to ...
- 概念介绍:IaaS、PaaS、SaaS
云计算分几层的,分别是Infrastructure(基础设施)-as-a-Service,Platform(平台)-as-a-Service,Sofware(软件)-as -a -Service.基础 ...
- Django中object.all是什么东西
前言 先抛出一个问题.银行就相当于一个数据库,你去银行取钱存钱办卡销卡,是你告诉银行柜员方便还是你自己去操作电脑办卡取卡方便?(你还不一定会,假设自动存款机还没发明),object在数据库中就相当于银 ...
- stc单片机笔记
volatile是一个类型修饰符(type specifier).volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值. 简单地说就是防止编译器对代码进行优 ...
- mongo 大数据量更新注意事项
1.大数据量最好在本地执行更新. 2.在客户端执行更新时需要注意serve活动时间(10分钟),10分钟内解决不了的使用batchSize 或者db.getCollection("&quo ...
- JS-ValidForm:介绍
ylbtech-JS-ValidForm:介绍 1.返回顶部 1. 关于Validform Validform:一行代码搞定整站的表单验证! 1 $(".demoform").Va ...
- 修改Mysql procedure,function and view definer
1 一次性修改遇到错误 update mysql.proc set definer='root@%'; update mysql.proc set definer='root@%'; ERROR 10 ...
- java 并发——volatile
java 并发--volatile 介绍 维基百科: volatile 是一个类型修饰符(type specifier).volatile 的作用是确保本条指令不会因编译器的优化而省略,且要求每次直接 ...
- 论一个PHP项目上线的注意点
一.后端问题 服务器配置要跟上流量 预估QPS时要给足未知流量的空间 后端数据库设计要根据项目大小来相对应,小型流量单表就可以,但是中大型要分库分表 在处理执行修改的操作时一定要多一层判断(判断是否已 ...