这道题一看有两个出发现点,一枚举点去找边界,想了一会就Pass了...,二是枚举相框,我们最起码枚举两个边界,然后发现平行边界更好处理,然而仍然只有30分,这个时候就来到了链表的神奇应用,我们枚举上界u,下界d在u的基础之上从下往上枚举,我们每次枚举上界的开始就把上界以下的点建成链表(它的形状大概是在从左到右的基础上对于同一列的从上倒下,就是蛇形),然后让下届去逼近并结算答案,十分巧妙。

关于链表:大概有单向链表,双向链表,以及循环链表,他们作为数据结构的应用十分狭窄,只有在特定情境下才有大用处,所以在oi层面只有双向链表有一定用处,他的删除在记录位置的前提下是O(1)的,查询O(n),插入的话主要是找到合适的位置(前驱),剩下的就是O(1)了。

#include <cstdio>
#include <cstring>
#include <algorithm>
typedef long long LL;
const int N=;
int pre[N],next[N],mem[N][N],last[N];
int line,column,n,k;
LL ans;
bool ex[N];
struct Point{int x,y;}p[N];
inline bool comp(Point a,Point b){return a.y<b.y||(a.y==b.y&&a.x<b.x);}
int main(){
scanf("%d%d%d%d",&line,&column,&n,&k);
for(int i=;i<=n;++i)
scanf("%d%d",&p[i].x,&p[i].y);
std::sort(p+,p+n+,comp);
for(int i=;i<=n;++i)
mem[p[i].x][++mem[p[i].x][]]=i;
for(int u=;u<=n;++u){
int pr=;memset(ex,,sizeof(ex));
for(int i=u;i<=n;++i)
for(int j=;j<=mem[i][];++j)
ex[mem[i][j]]=true,last[mem[i][j]]=line;
for(int i=;i<=n;++i)
if(ex[i])pre[i]=pr,next[pr]=i,pr=i;
pre[n+]=pr,next[pr]=n+;
for(int i=;i<=k;++i)
pre[n+i]=n+i-,next[n+i-]=n+i;
for(int d=n;d>=u;--d){
for(int i=;i<=mem[d][];++i){
int nk=mem[d][i];
for(int j=;j<=k;++j)nk=next[nk];
if(next[mem[d][i]]<=n&&p[next[mem[d][i]]].x!=d)
ans+=(LL)(last[next[mem[d][i]]]-d+)*
(p[next[mem[d][i]]].y-p[pre[next[mem[d][i]]]].y)*
(nk>n?:column-p[nk].y+),
last[next[mem[d][i]]]=d-;
nk=pre[nk],
ans+=(LL)(last[mem[d][i]]-d+)*
(p[mem[d][i]].y-p[pre[mem[d][i]]].y)*
(nk>n?:column-p[nk].y+);
for(int j=,now=mem[d][i];j<k&&now;++j){
now=pre[now],nk=pre[nk];
if(now&&p[now].x!=d&&last[now]>=d)
ans+=(LL)(last[now]-d+)*
(p[now].y-p[pre[now]].y)*
(nk>n?:column-p[nk].y+),
last[now]=d-;
}
}
for(int i=;i<=mem[d][];++i)
next[pre[mem[d][i]]]=next[mem[d][i]],
pre[next[mem[d][i]]]=pre[mem[d][i]];
}
}
printf("%lld",ans);
}

【TMD模拟赛】上低音号 链表的更多相关文章

  1. 【TMD模拟赛】黄金拼图 Cao

    正解:Cao 据说这样的题是用来骗丛林生物上树的...... 这样的题除了考观察力之外还.........我们发现他异或了opt,恩,就这样,用离线推答案..... #include <cstd ...

  2. 2014.7.8模拟赛【笨笨当粉刷匠】|bzoj1296 [SCOI]粉刷匠

    笨笨太好玩了,农田荒芜了,彩奖用光了,笨笨只好到处找工作,笨笨找到了一份粉刷匠的工作.笨笨有n条木板需要被粉刷.每条木板被分成m个格子,每个格子要被刷成红色或蓝色.笨笨每次粉刷,只能选择一条木板上一段 ...

  3. 模拟赛QAQ

    100 + 30 + 0 T1 叉叉 题目描述 现在有一个字符串,每个字母出现的次数均为偶数.接下来我们把第一次出现的字母a和第二次出现的a连一条线,第三次出现的和四次出现的字母a连一条线,第五次出现 ...

  4. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  5. 小奇模拟赛9.13 by hzwer

    2015年9月13日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿(explo) [题目背景] 小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值w)的飞船,按既定路线依次飞 ...

  6. [GRYZ]寒假模拟赛

    写在前面 这是首次广饶一中的OIERS自编自导,自出自做(zuo)的模拟赛. 鉴于水平气压比较低,机(wei)智(suo)的WMY/XYD/HYXZC就上网FQ下海找了不少水(fei)题,经过他们优( ...

  7. 『2019/4/9 TGDay2模拟赛 反思与总结』

    2019/4/9 TGDay2模拟赛 今天是\(TG\)模拟赛的第二天了,试题难度也是相应地增加了一些,老师也说过,这就是提高组的难度了.刚开始学难的内容,一道正解也没想出来,不过基本的思路也都是对了 ...

  8. 『2019/4/8 TGDay1模拟赛 反思与总结』

    2019/4/8 TGDay1模拟赛 这次是和高一的学长学姐们一起参加的\(TG\)模拟考,虽然说是\(Day1\),但是难度还是很大的,感觉比\(18\)年的\(Day1\)难多了. 还是看一下试题 ...

  9. DP 01背包 七夕模拟赛

    问题 D: 七夕模拟赛 时间限制: 1 Sec  内存限制: 128 MB提交: 60  解决: 23[提交][状态][讨论版] 题目描述 " 找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手 ...

随机推荐

  1. U盘被分区后恢复方法

    一:运行cmd 二:输入diskpart,按enter. 三:输入list disk,按enter. 四:选择优U盘,输入select disk X(X代表磁盘后面的数字0.1,可磁盘的大小来判断数字 ...

  2. SHOPEX快递单号查询插件圆通V8.2专版

    SHOPEX快递物流单号查询插件特色 本SHOPEX快递物流单号跟踪插件提供国内外近2000家快递物流订单单号查询服务例如申通快递.顺丰快递.圆通快递.EMS快递.汇通快递.宅急送快递.德邦物流.百世 ...

  3. 为何企业钟爱H5响应式网站? html5响应式网站的优势与特点

    随着移动互联网时代的到来,H5响应式网站应运而生,并成功获得了商家.访客.搜索引擎等的青睐!越来越多的企业也选择了H5响应式建站,可为何企业钟爱H5响应式网站呢?难道传统网站不好吗?这个不能妄下结论, ...

  4. js获取播放器播放时间和停止播放

    html代码 <video id="myVideo" class="video-active" width="100%" height ...

  5. Spark知识点

    1.Spark架构 分布式spark应用中的组件 在分布式环境下,Spark集群采用的是主/从结构.在一个Spark集群中,有一个节点负责中央协调,调度各个分布式工作节点.这个中央协调节点被称为驱动器 ...

  6. python学习之控制流2

    配置环境:python 3.6 python编辑器:pycharm 代码如下: #!/usr/bin/env python #-*- coding: utf-8 -*- # 控制流语句: # if语句 ...

  7. Leecode刷题之旅-C语言/python-9.回文数

    /* * @lc app=leetcode.cn id=9 lang=c * * [9] 回文数 * * https://leetcode-cn.com/problems/palindrome-num ...

  8. (数据科学学习手札02)Python与R在循环语句与条件语句上的异同

    循环是任何一种编程语言的基本设置,是进行批量操作的基础,而条件语句是进行分支运算的基础,Python与R有着各自不同的循环语句与条件语句语法,也存在着一些相同的地方. Python 1.for循环 ' ...

  9. 洛谷P4016 负载平衡问题

    题目描述 G 公司有 n 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 n 个仓库的库存数量相同.搬运货物时,只能在相邻的仓库之间搬运. 输入输出格式 输入格式: ...

  10. 转载:BUG定位

    1.web前端 Web前端就是通常说的网页.互联网公司的前端一般包含如下内容:JavaScript.ActionScript.CSS.HTML(..ML).Flash.交互式设计.视觉设计 web前端 ...