题解?noipT1还需要题解?正解就是$n^2$大暴力。

考试的时候打了$n^2$的暴力,也想到了正解的优化,然而觉得它太麻烦了,而且$n^2$怎么优化也过不了50000啊,而且即使不优化前面30分我也能拿到。

然而就把正解放弃了……完戏。

然而这题ifelse打的我好恶心啊……

ps.linux终端还是挺良心的,y1给我报错了,不然凉凉……

题解:

一个方块内部的贡献为:abs(x1(i)-x2(i))*abs(y1(i)-y2(i))*2;

然后$n^2$考虑方块间的贡献。

直接枚举肯定会T,考虑将输入排序,当不符合条件是break,居然快了这么多。

有一个坑点:

开始我写的是:else if(x1(j)>x2(i)&&y1(j)>y2(i))break;

但其实:else if(x1(j)>x2(i))break;就可以了。

 #include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#define MAXN 100010
#define LL long long
#define int LL
#define max(a,b) ((a)>(b)?(a):(b))
#define ma(x,y) memset(x,y,sizeof(x))
using namespace std;
int n,maxn,maxy;
int map[][];
struct ques
{
int x1,x2,ty1,ty2;
#define x1(i) que[i].x1
#define x2(i) que[i].x2
#define ty1(i) que[i].ty1
#define ty2(i) que[i].ty2
friend bool operator < (ques a,ques b)
{
return a.x1==b.x1?a.ty1<b.ty1:a.x1<b.x1;
}
}que[MAXN];
inline int read();
void QJ2();
signed main()
{
n=read();
for(int i=;i<=n;i++)
x1(i)=read(),ty1(i)=read(),x2(i)=read(),ty2(i)=read();
QJ2();
}
inline int read()
{
int s=;char a=getchar();
while(a<''||a>'')a=getchar();
while(a>=''&&a<=''){s=s*+a-'';a=getchar();}
return s;
}
void QJ2()
{
sort(que+,que+n+);
LL ans=;
for(int i=;i<=n;i++)
ans+=1ll*abs(x1(i)-x2(i))*abs(ty1(i)-ty2(i))*;
for(int i=;i<=n;i++)
for(int j=i+;j<=n;j++)
{
if(i!=j)
{
if(ty1(j)==ty2(i)+)//j上
{
int ttt=min(x2(j),x2(i))-max(x1(j),x1(i))+;
if(ttt>)
{
ans+=(ttt-)*;
if(abs(x1(i)-x1(j))>)ans++;
if(abs(x2(i)-x2(j))>)ans++;
}
else if(abs(x1(i)-x1(j))==||abs(x2(i)-x2(j))==)ans++;
}
else if(ty2(j)==ty1(i)-)//j下
{
int ttt=min(x2(j),x2(i))-max(x1(j),x1(i))+;
if(ttt>)
{
ans+=(ttt-)*;
if(abs(x1(i)-x1(j))>)ans++;
if(abs(x2(i)-x2(j))>)ans++;
}
else if(abs(x1(i)-x1(j))==||abs(x2(i)-x2(j))==)ans++;
}
else if(x2(j)==x1(i)-)//j左
{
int ttt=min(ty2(j),ty2(i))-max(ty1(j),ty1(i))+;
if(ttt>)
{
ans+=(ttt-)*;
if(abs(ty1(i)-ty1(j))>)ans++;
if(abs(ty2(i)-ty2(j))>)ans++;
}
}
else if(x1(j)==x2(i)+)//j右
{
int ttt=min(ty2(j),ty2(i))-max(ty1(j),ty1(i))+;
if(ttt>)
{
ans+=(ttt-)*;
if(abs(ty1(i)-ty1(j))>)ans++;
if(abs(ty2(i)-ty2(j))>)ans++;
}
}
else if(x1(j)>x2(i)&&ty1(j)>ty2(i))break;
}
}
printf("%lld\n",ans);
exit();
}

HZOJ 辣鸡(ljh)的更多相关文章

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

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

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

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

  3. [NOIP模拟测试10]辣鸡(ljh) 题解

    首先计算块内贡献,很显然是$(x_2-x_1)*(y_2-y_1)*2$. 然后考虑矩形之间的贡献,sort一遍分类讨论$n^2$暴力即可. 注意考虑边界情况是否能多两个,以及角对角的情况. 另外,排 ...

  4. noip模拟6[辣鸡·模板·大佬·宝藏]

    这怕不是学长出的题吧 这题就很迷 这第一题吧,正解竟然是O(n2)的,我这是快气死了,考场上一直觉得aaaaa n2过不了过不了, 我就去枚举边了,然后调了两个小时,愣是没调出来,然后交了个暴力,就走 ...

  5. JVM 辣鸡回收

    垃圾回收算法 标记清除法 先标记出需要回收的对象,然后一次性回收.缺点:会产生内存碎片,并且效率也不高. 标记压缩法 先标记出需要回收的对象,然后让存活对象向一端移动,移动的过程中进行回收辣鸡.避免了 ...

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

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

  7. bzoj2141排队(辣鸡但是好写的方法)

    题意很明确,也非常经典: 一个支持查询 区间中比k大的数的个数 并且支持单点修改的序列 ——因为题意可以转化为:查询这两个数中比后者大的个数.比后者小的个数.比前者大的个数.比前者小的个数(根据这4个 ...

  8. SA的一个辣鸡trick

    基础板子 namespace SA{ int x[400010],y[400010],SA[400010],rk[400010],ht[400010],t[400010]; int st[19][40 ...

  9. 辣鸡蒟蒻Klaier的一些计划

    需要熟练的东西:cdq分治,堆,树链剖分,tarjan及其它一些图论算法,网络流,kmp,字符串哈希,线段树主席树,树状数组,斜率优化dp 需要学的东西:lct,后缀数组,AC自动机,平衡树 球队收益 ...

随机推荐

  1. 开户项目的sql查询语句备查

    查询全国所有的券商名录 SELECT id,security,province,city,borough FROM t_security GROUP BY security ; 查询某个省份的所有券商 ...

  2. 实时查看linux网卡流量 的base脚本

    #!/bin/bash " ] do eth=$ RXpre=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{pri ...

  3. 如何获取SpringBoot项目的applicationContext对象

    ApplicationContext对象是Spring开源框架的上下文对象实例,在项目运行时自动装载Handler内的所有信息到内存.传统的获取方式有很多种,不过随着Spring版本的不断迭代,官方也 ...

  4. Oracle时间一串数字转为日期格式

    一.前台处理 js中接收到后台返回的json字符串中的日期类型的字段都变成了一串数字,例如:1500341149000.所以我们需要将这个串格式化形如:2017-07-18 09:25:49. 1.首 ...

  5. 解决git的the remote end hung up问题_百度经验

    使用git更新或提交中途有时出现The remote end hung up unexpectedly的异常,特别是资源库在国外的情况下.此问题可能由网络原因引起. 工具/原料   git 方法/步骤 ...

  6. Vue Router 相关

    1. 路由传参: 编程式的导航 router.push this.$router.push("home"); this.$router.push({ name: 'news', p ...

  7. 如何在CentOS 7 / Fedora 31/30/29上安装ELK Stack

    原文地址:https://computingforgeeks.com/how-to-install-elk-stack-on-centos-fedora/ 原作者: Josphat Mutai 译者: ...

  8. DataIntputStream / DataOutputStream 类

    1. DataInputStream类(熟悉)   (1)基本概念 java.io.DataInputStream类用于读取java中的基本数据类型.   (2)常用的方法 DataInputStre ...

  9. ENSP 安装后,启动路由器提示错误41

    ENSP 安装后,启动路由器提示错误41 环境: 安装的软件清单: VirtualBox-5.2.28-130011-Win.exe WinPcap_4_1_3.exe Wireshark-x64-3 ...

  10. transform的兼容性写法

    大多数浏览器都有自己的私有前缀,IE的私有前缀是 -ms- 但是大多数CSS3属性对IE低版本就不友好了,所以一般IE9+才能用上transform:rotate(7deg); -ms-transfo ...