HZOJ 辣鸡(ljh)
题解?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)的更多相关文章
- 7.29 NOIP模拟测试10 辣鸡(ljh)+模板(ac)+大佬(kat)
T1 辣鸡(ljh) 就是一道分类讨论的暴搜,外加一丢丢的减枝,然而我挂了,为啥呢,分类讨论变量名打错,大于小于号打反,能对才怪,写了sort为了调试就注释了,后来忘了解开,小减枝也没打.但是这道题做 ...
- [CSP-S模拟测试]:辣鸡(ljh) (暴力)
题目描述 辣鸡$ljh\ NOI$之后就退役了,然后就滚去学文化课了.然而在上化学课的时候,数学和化学都不好的$ljh$却被一道简单题难住了,受到了大佬的嘲笑.题目描述是这样的:在一个二维平面上有一层 ...
- [NOIP模拟测试10]辣鸡(ljh) 题解
首先计算块内贡献,很显然是$(x_2-x_1)*(y_2-y_1)*2$. 然后考虑矩形之间的贡献,sort一遍分类讨论$n^2$暴力即可. 注意考虑边界情况是否能多两个,以及角对角的情况. 另外,排 ...
- noip模拟6[辣鸡·模板·大佬·宝藏]
这怕不是学长出的题吧 这题就很迷 这第一题吧,正解竟然是O(n2)的,我这是快气死了,考场上一直觉得aaaaa n2过不了过不了, 我就去枚举边了,然后调了两个小时,愣是没调出来,然后交了个暴力,就走 ...
- JVM 辣鸡回收
垃圾回收算法 标记清除法 先标记出需要回收的对象,然后一次性回收.缺点:会产生内存碎片,并且效率也不高. 标记压缩法 先标记出需要回收的对象,然后让存活对象向一端移动,移动的过程中进行回收辣鸡.避免了 ...
- NOIP模拟测试10「大佬·辣鸡·模板」
大佬 显然假期望 我奇思妙想出了一个式子$f[i]=f[i-1]+\sum\limits_{j=1}^{j<=m} C_{k \times j}^{k}\times w[j]$ 然后一想不对得容 ...
- bzoj2141排队(辣鸡但是好写的方法)
题意很明确,也非常经典: 一个支持查询 区间中比k大的数的个数 并且支持单点修改的序列 ——因为题意可以转化为:查询这两个数中比后者大的个数.比后者小的个数.比前者大的个数.比前者小的个数(根据这4个 ...
- SA的一个辣鸡trick
基础板子 namespace SA{ int x[400010],y[400010],SA[400010],rk[400010],ht[400010],t[400010]; int st[19][40 ...
- 辣鸡蒟蒻Klaier的一些计划
需要熟练的东西:cdq分治,堆,树链剖分,tarjan及其它一些图论算法,网络流,kmp,字符串哈希,线段树主席树,树状数组,斜率优化dp 需要学的东西:lct,后缀数组,AC自动机,平衡树 球队收益 ...
随机推荐
- 开户项目的sql查询语句备查
查询全国所有的券商名录 SELECT id,security,province,city,borough FROM t_security GROUP BY security ; 查询某个省份的所有券商 ...
- 实时查看linux网卡流量 的base脚本
#!/bin/bash " ] do eth=$ RXpre=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{pri ...
- 如何获取SpringBoot项目的applicationContext对象
ApplicationContext对象是Spring开源框架的上下文对象实例,在项目运行时自动装载Handler内的所有信息到内存.传统的获取方式有很多种,不过随着Spring版本的不断迭代,官方也 ...
- Oracle时间一串数字转为日期格式
一.前台处理 js中接收到后台返回的json字符串中的日期类型的字段都变成了一串数字,例如:1500341149000.所以我们需要将这个串格式化形如:2017-07-18 09:25:49. 1.首 ...
- 解决git的the remote end hung up问题_百度经验
使用git更新或提交中途有时出现The remote end hung up unexpectedly的异常,特别是资源库在国外的情况下.此问题可能由网络原因引起. 工具/原料 git 方法/步骤 ...
- Vue Router 相关
1. 路由传参: 编程式的导航 router.push this.$router.push("home"); this.$router.push({ name: 'news', p ...
- 如何在CentOS 7 / Fedora 31/30/29上安装ELK Stack
原文地址:https://computingforgeeks.com/how-to-install-elk-stack-on-centos-fedora/ 原作者: Josphat Mutai 译者: ...
- DataIntputStream / DataOutputStream 类
1. DataInputStream类(熟悉) (1)基本概念 java.io.DataInputStream类用于读取java中的基本数据类型. (2)常用的方法 DataInputStre ...
- ENSP 安装后,启动路由器提示错误41
ENSP 安装后,启动路由器提示错误41 环境: 安装的软件清单: VirtualBox-5.2.28-130011-Win.exe WinPcap_4_1_3.exe Wireshark-x64-3 ...
- transform的兼容性写法
大多数浏览器都有自己的私有前缀,IE的私有前缀是 -ms- 但是大多数CSS3属性对IE低版本就不友好了,所以一般IE9+才能用上transform:rotate(7deg); -ms-transfo ...