拒绝听搜索.etc水过的。数据太弱了(尽管考场上我凭借数据太水骗了好多分)

我讲的思路和下发的题解一样。(因为我不会所以只能颓它啊)

首先你要相信这题精灵就100个,真的只有100个,这次数据范围没错。

然后你的复杂度就可以愉快地用m了。

因为小精灵就m个所以实际上有用的位置也最多只有m+1个(算起点)

可以证明:如果路径中存在折返,那么一定发生在某一个小精灵的位置上。

因为如果你在其它位置折返,那一定不如在上一个经过的小精灵处就折返,这样才能更早到达对面的位置

也可以证明:如果过程中走过的坐标最小是l最大是r,那么接下来要么就是直线前往l左面的第一只小精灵,要么就是直线前往r右面的第一只小精灵。

因为l到r区间内的精灵都被你以前路过时抓走了,如果你想要更多的分数就需要扩展你的活动区间。

而从(l,r)->(l,r+2)可以分解成(l,r)->(l,r+1)->(l,r+2)来逐步考虑,所以现在的问题就是dp统计一次往两边扩展1个位置。

dp定义已经出来了,tl[i][j][k]表示已经走过区间j~k,目前时间为i的最大分数,此时在左端点。tr[i][j][k]同理只不过在右端点。

然而数组开不开,需要离散化一下有小精灵的坐标。

由本层向下一层转移就好。

理论复杂度爆踩搜索,实际运行时间被爆踩。

 #include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
struct qs{int x,v,t;friend bool operator<(qs a,qs b){return a.x<b.x;}}q[];
int tl[][][],tr[][][],x[],ref[],n,m,k,o,p,e[][],ans;
int main(){
scanf("%d%d%d",&n,&k,&m);x[]=k;
for(int i=;i<=m;++i)scanf("%d%d%d",&q[i].x,&q[i].v,&q[i].t),x[i+]=q[i].x;
sort(x+,x++m);memset(tl,0xa0,sizeof tl);memset(tr,0xa0,sizeof tr);
for(int i=;i<=m+;++i)if(!ref[x[i]])x[++o]=x[i],ref[x[i]]=o;
for(int i=;i<=m;++i)if(q[i].x==k)p+=q[i].v;
tl[][ref[k]][ref[k]]=tr[][ref[k]][ref[k]]=p;
for(int i=;i<=m;++i)e[q[i].t][ref[q[i].x]]+=q[i].v;
for(int i=;i<=o;++i)for(int j=;j;--j)e[j][i]+=e[j+][i];
for(int t=,T;t<=;++t)for(int i=;i<=o;++i)for(int j=i;j<=o;++j){
T=t+x[i]-x[i-];if(i!=&&T<=)tl[T][i-][j]=max(tl[T][i-][j],tl[t][i][j]+e[T][i-]);
T=t+x[j]-x[i-];if(i!=&&T<=)tl[T][i-][j]=max(tl[T][i-][j],tr[t][i][j]+e[T][i-]);
T=t+x[j+]-x[j];if(j!=o&&T<=)tr[T][i][j+]=max(tr[T][i][j+],tr[t][i][j]+e[T][j+]);
T=t+x[j+]-x[i];if(j!=o&&T<=)tr[T][i][j+]=max(tr[T][i][j+],tl[t][i][j]+e[T][j+]);
tl[t+][i][j]=max(tl[t+][i][j],tl[t][i][j]);
tr[t+][i][j]=max(tr[t+][i][j],tr[t][i][j]);
}
for(int i=;i<=o;++i)for(int j=i;j<=o;++j)ans=max(ans,max(tl[][i][j],tr[][i][j]));
printf("%d\n",ans);
}

码量有点大

可爱精灵宝贝:dp的更多相关文章

  1. 可爱精灵宝贝 DP/爆搜

    考崩了 T2 这题是个DP的好题啊(凡是我不会的都是好题,所以所有的题都是好题(雾)) DP思路: 分析性质:这个人对于路上的小精灵,能收集就一定会收集,即他每次都会收集这一段区间的小精灵 然后就考虑 ...

  2. [jzoj 5770]【2018提高组模拟A组8.6】可爱精灵宝贝 (区间dp)

    传送门 Description Branimirko是一个对可爱精灵宝贝十分痴迷的玩家.最近,他闲得没事组织了一场捉精灵的游戏.游戏在一条街道上举行,街道上一侧有一排房子,从左到右房子标号由1到n. ...

  3. [CSP-S模拟测试]:可爱的精灵宝贝(搜索)

    题目描述 $Branimirko$是一个对可爱精灵宝贝十分痴迷的玩家.最近,他闲得没事组织了一场捉精灵的游戏.游戏在一条街道上举行,街道上一侧有一排房子,从左到右房子标号由$1$到$n$.刚开始玩家在 ...

  4. NOIP模拟 18

    这次时间分配不合理,沉迷大模拟无法自拔 虽然A了但是根本就没给T3留时间555 T3如果有时间看看数据范围应该可以想到QJ掉20分的555 T1 引子 打这题的时候感觉自己在做图像处理.. 然后调了各 ...

  5. 2019.8.12 NOIP模拟测试18 反思总结

    写个博客总是符合要求的对吧 回来以后第一次悄悄参加考试,昨天全程围观… 然后喜提爆炸120分wwwwwwwww T1用了全机房最慢的写法,导致改掉死循环T掉的一个点以后还是死活过不了最后一个点.T2全 ...

  6. 英语口语练习系列-C19-喜欢某人

    简单词汇 1. chair [tʃeə(r)] n. 椅子 chair = ch + air拼读的时候ch发音以及air发音 [ ] sit on a chair 坐在椅子上 [ ] a table ...

  7. 【LOJ】#2024. 「JLOI / SHOI2016」侦查守卫

    题解 童年的回忆! 想当初,这是我考的第一次省选,我当时初二,我什么都不会,然后看着这个东西,是不是能用我一个月前才会的求lca,光这个lca我就调了一个多小时= =,然后整场五个小时,我觉得其他题不 ...

  8. (四)DIH导入结构化数据

    (四)DIH导入结构化数据 目前大多数的应用程序将数据存储在关系数据库(如oracle.sql server .mysql等).xml文件中.对这样的数据进行搜索是很常见的应用.所谓的DataImpo ...

  9. html+css第八篇滑动门和可爱的css精灵

    滑动门: 滑动门并不是一项全新的技术,它是利用背景图像的可层叠性,并允许他们在彼此之上进行滑动,以创造一些特殊的效果. CSS精灵 CSS Sprites在国内很多人叫CSS精灵,是一种网页图片应用处 ...

随机推荐

  1. raspbian修改swap分区为硬盘上的分区

    一直以为raspbian的swap分区和平常装系统时候的swap分区是一样的,最近用u盘插在树莓派上运行后发现这个交换分区和我想象中不一样. 百度后发现它是一个文件挂上去的.直接搞把! pi@rasp ...

  2. uni-app h5端跳转到底部导航栏的时候使用方法uni.switchTab跳转刷新页面更新数据

    h5端的uni-app项目 需求:uni-app h5端跳转到底部导航栏的时候使用方法uni.switchTab跳转刷新页面更新数据 百度的方法如下: uni.switchTab({ url: '/p ...

  3. HDU 1428漫步校园

    漫步校园 Problem Description LL最近沉迷于AC不能自拔,每天寝室.机房两点一线.由于长时间坐在电脑边,缺乏运动.他决定充分利用每次从寝室到机房的时间,在校园里散散步.整个HDU校 ...

  4. 用go语言爬取珍爱网 | 第三回

    前两节我们获取到了城市的URL和城市名,今天我们来解析用户信息. 用go语言爬取珍爱网 | 第一回 用go语言爬取珍爱网 | 第二回 爬虫的算法: 我们要提取返回体中的城市列表,需要用到城市列表解析器 ...

  5. Stack Overflow 上 250W 浏览量的一个问题:你对象丢了

    在逛 Stack Overflow 的时候,发现最火的问题竟然是:什么是 NullPointerException(java.lang.NullPointerException),它是由什么原因导致的 ...

  6. 清理 Sketch缓存 Storyist 3.5.1中文破解版 for Mac

    Sketch这款软件可以用来做原型和UI设计,很多设计师和产品经理都在用,时间长了以后,Sketch会占据不少缓存空间,这时候可以试试 Sketch Cache Cleaner 这款软件清理历史文件和 ...

  7. powershell 基础

    目录 本教程概述 用到的工具 标签 简介 0x01使用简介 0x02脚本编写 0x03实例讲解 本教程概述 本课我们学习powershell使用. 用到的工具 cmd.exe   powershell ...

  8. USACO环绕岛屿Surround the Islands 并查集 枚举暴力

    题目描述 Farmer John has bought property in the Caribbean and is going to try to raise dairy cows on a b ...

  9. Halcon C# 联合编程问题(三)

    因为之前遇到的那个halcon处理的图片要转换成ImageSource的问题,迟迟没有找到好的解决方案, 于是决定直接在wpf中使用halcon提供的HWindowControlWPF,用于显示图片. ...

  10. java学习-IDEA相关使用

    1.配置git与github(用于将代码提交到GitHub) 添加自己的github账号 2.提交代码到github 登录https://github.com,即可看到刚刚提交到github的代码仓库 ...