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自动机,平衡树 球队收益 ...
随机推荐
- angular4 自定义表单组件
自定义表单组件分为单值组件和多值组件. 单值组件:input/select/radio/textarea 多值组件:checkbox/tree组件 条件: 1.必须实现ControlValueAcce ...
- CentOS7配置中文支持与部署GitLab服务器
给你的 CentOS 7 安装中文支持 1.首先需要中文字体以便支持命令行终端的中文显示需求: yum groupinstall "fonts" 碰到提示输入 y 回车继续安装,大 ...
- 洛谷P1244 [NOI2000] 青蛙过河 [2017年4月计划 动态规划07]
P1244 青蛙过河 题目描述 有一条河,左边一个石墩(A区)上有编号为1,2,3,4,…,n的n只青蛙,河中有k个荷叶(C区),还有h个石墩(D区),右边有一个石墩(B区),如下图所示.n只青蛙要过 ...
- Leetcode581.Shortest Unsorted Continuous Subarray最短无序连续子数组
给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. 你找到的子数组应是最短的,请输出它的长度. 示例 1: 输入: [2, 6, 4, 8, 1 ...
- 【二次元的CSS】—— 用 DIV + CSS3 画咸蛋超人(详解步骤)
[二次元的CSS]—— 用 DIV + CSS3 画咸蛋超人(详解步骤) 2016-05-17 HTML5cn 仅仅使用div作为身体的布局,用css3的各种transform和圆角属性来绘制各部位的 ...
- React项目动态设置title标题
在React搭建的SPA项目中页面的title是直接写在入口index.html中,当路由在切换不用页面时,title是不会动态变化的.那么怎么让title随着路由的切换动态变化呢?1.在定义路由时增 ...
- 深入浅出Javascript闭包
一.引子 闭包(closure)是 Javascript 语言的一个难点,面试时常被问及,也是它的特色,很多高级应用都要依靠闭包实现.本文尽可能用简单易懂的话,讲清楚闭包的概念.形成条件及其常见的面试 ...
- Codeforces 436C
题目链接 C. Dungeons and Candies time limit per test 2 seconds memory limit per test 256 megabytes input ...
- js将canvas保存成图片并下载
<canvas id="canvas" width="400" height="400"></canvas> < ...
- Spring_自动组件扫描和 基于注解配置bean
自动组件扫描 启用Spring组件扫描功能. 使用@Component注释来表示这是类是一个自动扫描组件. package com.tanlei.dao; import org.springfram ...