【TMD模拟赛】上低音号 链表
这道题一看有两个出发现点,一枚举点去找边界,想了一会就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模拟赛】上低音号 链表的更多相关文章
- 【TMD模拟赛】黄金拼图 Cao
正解:Cao 据说这样的题是用来骗丛林生物上树的...... 这样的题除了考观察力之外还.........我们发现他异或了opt,恩,就这样,用离线推答案..... #include <cstd ...
- 2014.7.8模拟赛【笨笨当粉刷匠】|bzoj1296 [SCOI]粉刷匠
笨笨太好玩了,农田荒芜了,彩奖用光了,笨笨只好到处找工作,笨笨找到了一份粉刷匠的工作.笨笨有n条木板需要被粉刷.每条木板被分成m个格子,每个格子要被刷成红色或蓝色.笨笨每次粉刷,只能选择一条木板上一段 ...
- 模拟赛QAQ
100 + 30 + 0 T1 叉叉 题目描述 现在有一个字符串,每个字母出现的次数均为偶数.接下来我们把第一次出现的字母a和第二次出现的a连一条线,第三次出现的和四次出现的字母a连一条线,第五次出现 ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 小奇模拟赛9.13 by hzwer
2015年9月13日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿(explo) [题目背景] 小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值w)的飞船,按既定路线依次飞 ...
- [GRYZ]寒假模拟赛
写在前面 这是首次广饶一中的OIERS自编自导,自出自做(zuo)的模拟赛. 鉴于水平气压比较低,机(wei)智(suo)的WMY/XYD/HYXZC就上网FQ下海找了不少水(fei)题,经过他们优( ...
- 『2019/4/9 TGDay2模拟赛 反思与总结』
2019/4/9 TGDay2模拟赛 今天是\(TG\)模拟赛的第二天了,试题难度也是相应地增加了一些,老师也说过,这就是提高组的难度了.刚开始学难的内容,一道正解也没想出来,不过基本的思路也都是对了 ...
- 『2019/4/8 TGDay1模拟赛 反思与总结』
2019/4/8 TGDay1模拟赛 这次是和高一的学长学姐们一起参加的\(TG\)模拟考,虽然说是\(Day1\),但是难度还是很大的,感觉比\(18\)年的\(Day1\)难多了. 还是看一下试题 ...
- DP 01背包 七夕模拟赛
问题 D: 七夕模拟赛 时间限制: 1 Sec 内存限制: 128 MB提交: 60 解决: 23[提交][状态][讨论版] 题目描述 " 找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手 ...
随机推荐
- hive 从Excel中导入数据
拿到Excel表后将数据保留,其他的乱七八糟都删掉,然后另存为txt格式的文本,用nodepad++将文本转换为UTF-8编码,此处命名为cityprovince.txt 将cityprovince. ...
- zabbix监控MySQL服务状态
Mysql模板使用 在zabbix_agent配置文件中加入监控配置 vim etc/zabbix_agentd.conf ... UserParameter=mysql.version,mysqla ...
- Jetson tx1 安装cuda错误
前两天安装Jetpack3.0的时候,看着网上的教程以为cuda会自动安装上,但是历经好几次安装,都安装不上cuda,也刷了好几次jetpack包.搜遍了网上的教程,也没有安装上.错误如下图所示: 这 ...
- maven 添加自己下载的jar包到本地仓库
1.在pom文件中添加依赖,其中groupId等变量都自拟. 例如: 2.在命令行执行以下命令,提示build success即表示安装成功. mvn install:install-file -Dg ...
- R语言学习笔记(六): 列表及数据框的访问
List R语言中各组件的名称叫做标签(tags),访问列表有3种方法: j$salary 通过标签名字访问,只要不引起歧义,可以只写出前几个字母. j[['sal']] 夹在两个中括号时引号里的标签 ...
- 使用Entity Framework时,序列化出错
在使用Entity Framework时,如果数据库中有两个表是一对多或者是多对多的关系,那么生成的实体类中就有一个导航属性.这个导航属性前面都加上了一个virtual关键字.这个v ...
- mysql 导入CSV数据 [转]
转自: http://blog.chinaunix.net/uid-23284114-id-3196638.html MYSQL LOAD DATA INFILE命令可以把csv平面文件中的数据导 ...
- python 字典(dict)按键和值排序
python 字典(dict)的特点就是无序的,按照键(key)来提取相应值(value),如果我们需要字典按值排序的话,那可以用下面的方法来进行: 1 下面的是按照value的值从大到小的顺序来排序 ...
- Spring 整合 Shiro
一.引入依赖 <!-- spring start --> <dependency> <groupId>org.springframework</groupId ...
- 在Android上,怎样与Kotlin一起使用Retrofit(KAD21)
作者:Antonio Leiva 时间:Apr 18, 2017 原文链接:https://antonioleiva.com/retrofit-android-kotlin/ 这是又一个例子,关于怎样 ...